
Dzisiaj kontynuacja lekcji o uruchamianiu aplikacji, skonfigurujemy bazę danych i podepniemy wybraną przez nas domenę. Gotowa?
Konfigurujemy bazę danych
Pierwszym naszym krokiem w tej lekcji będzie konfiguracja bazy danych. Użyjemy do tego bazy danych MySQL hostowanej w usłudze Amazon RDS.
Tworzenie bazy danych w Amazon RDS
Najpierw logujemy się do konsoli Amazon AWS pod adresem console.aws.amazon.com .

Jeśli nie korzystałaś z Amazon RDS wcześniej, zobaczysz takie ekran — wybierz opcję ‘Get started now’

W kolejnym kroku wybieramy ‘No’ . Pytanie dotyczy tego, czy chcemy wykonywać kopię naszej bazy danych na żywo do innych (fizycznie) części serwerowni. Ma to uzasadnienie w przypadku ważnych systemów (jeśli wydarzy się awaria lub katastrofa, są większe szanse, że nasz system nadal będzie działał), ale na nasze potrzeby wystarczy pojedyncza instalacja. Uwaga: pozostawienie domyślnej opcji spowoduje, że będą naliczane opłaty ponieważ nie jest to objęte bezpłatnym pakietem.

Ten krok pozwala nam skonfigurować parametry naszej bazy danych. Z najważniejszych elementów, wybieramy db.t2.micro jako typ instancji. Wybieramy także nazwę, pod jaką będzie widoczna nasza baza danych (jest ona wazna tylko dla nas), nazwę użytkownika — administratora oraz jego hasło. Pozostałe opcje wybieramy tak jak na grafice (chyba, że dostępna będzie nowsza wersja — wtedy wybieramy najnowszą).

Ten krok pozwala nam wybrać szczegółowe ustawienia — konfigurujemy je tak jak na obrazku powyżej.

Warto zwrócić uwagę na sekcje na dole — pierwsza określa jak długo będzie backupowana nasza baza danych i kiedy będzie to robione. Druga grupa opcji pozwala określić czy chcemy automatycznie dokonywać drobnych aktualizacji.

Utworzyliśmy właśnie naszą bazę danych. Teraz musimy poczekać ok. 15 minut zanim się uruchomi. W międzyczasie skonfigurujemy prawa dostepu do naszej bazy danych.

W tym celu w oknie głównym konsoli wybieramy narzędzie ‘VPC’ (Virtual Private Cloud), a w nim opcję security groups. Wybieramy tą, która została utworzona (będzie miała podobną nazwę co zaznaczona na grafice)

W panelu, który pojawi się na dole wybieramy kartę ‘Inbound’, następnie ‘Add rule’ i uzupełniamy wg grafiki. W ten sposób umożliwiasz połaczenie się z Twoją bazą danych dowolnemu komputerowi (oczywiście nadal będzie potrzebny login oraz hasło).
Przechodzimy teraz z powrotem do narzędzia RDS i czekamy, aż nasa baza danych zostanie skonfigurowana.

Na tym ekranie możemy zobaczyć adres URL naszej bazy danych. Zanotujmy go, ponieważ będziemy go używać w dalszych krokach. Upewnij się także, że opcja ‘Public’ jest jako ‘Yes’
Zarządzanie zdalną bazą danych
Aby zarządzać zdalną bazą danych polecamy skorzystać z narzędzia MySQL Workbench. Narzędzie to można bezpłatnie pobrać ze strony producenta www.mysql.com/products/workbench/ . Omówienie funkcji MySQL znajdziemy np na tym instruktażowym video w serwisie YouTube.
Uruchamiamy naszą aplikację
Koeljnym krokiem jest po prostu uruchomienie naszej aplikacji :)
Pula połączeń do bazy danych
W lekcji 12 wspominaliśmy o tym, że w produkcyjnej aplikacji należy używać puli połączeń. Pula połaczeń otwiera wiele połaczeń z bazą danych jednocześnie, po czym jedynie ‘wypożycza’ połaczenia do obsługi konkretnych zapytań. Dzięki temu aplikacja nie traci czasu na nawiązywanie połaczeń i ich zamykanie. Przykładowa konfiguracja poniżej:
<bean id="employeeDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="adresRDS" />
<property name="user" value="naszLoginUzytkownikaRDS" />
<property name="password" value="naszeHasloRDS" />
<property name="maxPoolSize" value="10" />
<property name="minPoolSize" value="4" />
<property name="maxStatements" value="100" />
<property name="testConnectionOnCheckout" value="true" />
</bean>
Oczywiście musisz podmienić adres URL, nazwę użytkownika oraz hasło na dane do bazy danych w RDS (adres URL jest podobny, jak w przypadku lokalnej bazy danych, ale zamiast localhost podajemy adres endpoint, który znajdziemy w panelu RDS)
Generowanie pliku WAR
Ponieważ nasz projekt był tworzony w mavenie, plik WAR otrzymujemy ‘gratis’ podczas budowania. Plik ten znajdziemy w katalogu /target w głównym katalogu modułu koty-webapp naszego projektu.
Wgrywanie pliku WAR do Elastic Beanstalk
Ostatni krok to wgranie wygenerowanego pliku WAR do naszego środowiska w Elastic Beanstalk. W tym celu wchodzimy do Elastic Beanstalk poprzez konsolę i wybieramy nasze środowisko.
Dodajemy własną domenę do naszej aplikacji
Ten krok jest opcjonalny — możemy kupić wybraną przez nas domenę i skonfigurować ją tak, aby po jej wpisaniu w przeglądarce pokazywała się nasza aplikacja. Najpierw jednak musimy ją kupić
Kupujemy domenę
Proces zakupu domeny jest inny w zależności od firmy, w której rejestrujemy domenę. Firm, które to umożliwiają są naprawdę tysiące (wystarczy wpisać w google ‘domeny’) — poniżej przedstawiamy dwie największe w Polsce oraz jedną międzynarodową. Domenę można też zakupić bezpośrednio w panelu Amazon AWS — także zamieszczamy link do dokumentacji poniżej. Każda z tych firm ma inne promocje, inne cenniki, inny panel — ciężko powiedzieć, która z nich jest najlepsza. Sugerujemy jednak skorzystanie z którejś z największych firm, jest mniejsze prawdopodobieństwo że z ewentualnymi problemami zostaniemy sami.
Konfigurujemy Route53

Przechodzimy do zakładki Hosted zones po lewej stronie i wybieramy opcję Create Hosted Zone

W panelu po prawej stronie uzupełniamy dane domeny — przede wszystkim jej adres (bez www na początku) oraz opcjonalny opis

Po utworzeniu domeny klikamy na ‘Create record set’ a następnie uzupełniamy informację jak na rysunku — wybieramy Alias:Yes oraz z listy elementów wybieramy pozycję pod ElasticLoadBalancer (jedyną, jaką powinniśmy mieć dostepną). Zapisujemy zmiany.
To wystarczy, jesli chodzi o konfigurację w Route53. Musisz jeszcze skonfigurować samą domenę tam, gdzie ją kupiłeś, aby wskazywała na Route53 jako serwer, który nią zarządza. O tym jak to zrobić w kolejnym kroku, póki co spisz lub skopiuj adresy, które są zaznaczone na niebiesko (bez kropek na końcu) — będą Ci one potrzebne w następnym kroku (dla Twojej domeny prawie na pewno będą one nieco inne).
Konfigurujemy domenę
Podobnie jak w przypadku zakupu domeny, dokładna procedura zależy od firmy, w której kupiliśmy naszą domenę. To, co musimy zrobić, to ustawić serwery DNS na te, które odczytaliśmy w poprzednim kroku. Poniżej linki do pomocy poszczególnych firm opisujących ten proces:
Jeśli rejestrowałaś domenę w usłudze Amazon Route53, nie są konieczne żadne dodatkowe kroki :)
Podsumowanie
W tej części lekcji dowiedziałaś się jak przygotować aplikację do jej publikacji w sieci, jak skonfigurować domenę oraz bazę danych tak, aby współpracowały ze sobą :) Teraz możesz już chwalić się swoją aplikacją przed rodziną, znajomymi, ale przede wszystkim przed swoim przyszłym pracodawcą :)
Gratulacje!
Ostrzeżenie
Uwaga! W tej lekcji zrobiliśmy kilka rzeczy, które nie są dobrymi praktykami w przypadku aplikacji, które muszą być zabezpieczone i działać w każdych warunkach, przede wszystkim:
- Nie należy umożliwiać dostępu do bazy danych z dowolnego adresu (krok z konfiguracją security group w narzędziu VPC)! Zamiast tego powinny tam się znaleźć jedynie adresy serwerów aplikacji lub sieci wewnętrznej. Taka konfiguracja znacznie przekracza jednak ramy tego kursu i nie będzie omawiana
- Baza danych powinna być uruchomiona w kilku lokalizacjach (opcja Multi A‑Z deployment). Z uwagi na koszty, które byłyby naliczone, a które wykraczają poza Free Tier, wybraliśmy inną opcję
- Użytkownik, którego aplikacja używa do łączenia się z bazą danych powinien być inny niż użytkownik administracyjny i nie powinien mieć uprawnień, których nie potrzebuje (np. do modyfikacji / usuwania tabel)
Miej to na uwadze w swojej przyszłej pracy — na potrzeby aplikacji, która nie ma dużego znaczenia biznesowego, a dane w niej zawarte nie są wrażliwe, użyte podejście móże być wystarczające. Pamiętaj jednak, że pewne rzeczy można poprawić.
Jeśli uważasz powyższą lekcję za przydatną, mamy małą prośbę: polub nasz fanpage. Dzięki temu będziesz zawsze na bieżąco z nowymi treściami na blogu ( i oczywiście, z nowymi częściami kursu Javy). Dzięki!