#25 — Publikujemy aplikację w Internecie

By 7 May 2015 Kurs Javy

Dzisiejsza lekc­ja nie będzie stricte o pro­gramowa­niu, ale będzie o tym, jak pochwal­ić się naszym dziełem! Dzisi­aj nauczymy się uruchami­ać i udostęp­ni­ać naszą aplikację w Internecie.

Pub­likac­je aplikacji w internecie może­my podzielić na dwa ele­men­ty- przy­go­towanie środowiska i przy­go­towanie samej aplikacji do uru­chomienia. W pier­wszej częś­ci lekcji zajmiemy się przy­go­towaniem środowiska.

Do uru­chomienia naszej aplikacji wyko­rzys­tamy chmurę Ama­zon­AWS — pozwala ona w prosty sposób uru­chomić naszą aplikację nie wnika­jąc w szczegóły. Dodatkowo każde zare­je­strowane kon­to otrzy­mu­je przez rok paki­et bezpłat­ny — wystar­cza­ją­cy do uru­chomienia i dzi­ała­nia prostej aplikacji. Dzię­ki temu przez rok nie zapłacimy ani złotów­ki za dzi­ałanie naszej aplikacji, będziemy mogli przetestować różne usłu­gi dodatkowe i zde­cy­dować, czy jest to usłu­ga dla nas.

Lekcja

Rejestracja w usłudze AWS

Pier­wszym krok­iem jest utworze­nie kon­ta w usłudze AWS — wchodz­imy na stronę aws.amazon.com i klikamy na przy­cisk ‘Try AWS for FREE’ w prawym górnym rogu ekranu. Na ekranie, który się pojawi wpisu­je­my swój adres email oraz wybier­amy opcję — jeśli posi­adamy kon­to w amazon.com, może­my go użyć także do usłu­gi AWS, wystar­czy zaz­naczyć opcję ‘I am a return­ing user and my pass­word is’. W prze­ci­wnym razie wybier­amy opcję ‘I am a new user’ i dokonu­je­my rejes­tracji w usłudze. Pod­czas rejes­tracji może być konieczne podanie danych kar­ty kredy­towej — nie oznacza to, że będziemy od razu obciążeni opłata­mi, AWS dzi­ała w mod­elu pay-as-you-go, czyli na koniec miesią­ca z naszej kar­ty ścią­gane są tylko opłaty za zaso­by, z których korzys­tal­iśmy (rozliczane z dokład­noś­cią do min­ut!), o ile nie kwal­i­fiku­ją się one do bezpłat­nego paki­etu (tzw. Free tier — więcej na stron­ie aws.amazon.com/free)

Konsola AWS

Po zare­je­strowa­niu i aktywacji kon­ta może­my od razu z niego korzys­tać. W tym celu wchodz­imy na adres console.aws.amazon.com i logu­je­my się, jeśli sys­tem o to poprosi. Przed nami jest kon­so­la AWS:

Widok konsoli AWS po zalogowaniu

Widok kon­soli AWS po zalogowaniu

Na ekranie tym mamy główne okno — w tym miejs­cu będą widoczne opc­je zarządza­nia wybraną usługą. Na ekranie głównym widz­imy listę usług i ich krót­ki opis. W górnym rogu mamy do wyboru lokaliza­cję. Ponieważ Ama­zon dys­ponu­je ser­werow­n­i­a­mi na całym świecie, może­my sami decy­dować, w którym miejs­cu świa­ta będzie uruchami­ana nasza aplikac­ja. Ogól­na zasa­da jest taka, że im bliżej potenc­jal­nych użytkown­ików tym lep­iej. Obec­nie lokaliza­cją najbliższą Polsce jest Frankfurt.

UWAGA! O ile w przy­pad­ku Free tier lokaliza­c­ja nie ma znaczenia, to koszt usług w róznych miejs­cach jest różny! Frank­furt jest dość drogą lokaliza­cją, w Europie pole­cam Irlandię jako tańszą alter­naty­wę. O ile początkowo nie ma to znaczenia, radzę pamię­tać o tym na przyszłość.

Nas intere­sować będą dwie usłu­gi — Elas­tic Beanstalk oraz Route 53.

Elas­tic Beanstalk to usłu­ga, która pozwala w prosty sposób zarządzać różny­mi zasoba­mi i inny­mi usługa­mi. W najprost­szym wari­an­cie wystar­czy wgrać plik WAR, a usłu­ga ta sama uru­choim ser­w­ery, skon­fig­u­ru­je je, podłaczy bazę danych itp. Sko­rzys­tamy z niej do uru­chomienia naszej aplikacji.

Route 53 to zarządzal­na usłu­ga DNS — ogól­nie mówiąc, pozwala po wpisa­niu adresu www.mojadomena.pl zobaczyć naszą aplikację w przeglą­darce inter­ne­towej. Sko­rzys­tamy z niej w drugiej częś­ci, aby skon­fig­urować domenę, pod którą widocz­na będzie nasza aplikac­ja. UWAGA! Usłu­ga Route53 nie jest obję­ta bezpłat­nym okre­sem, jeśli zechcesz skon­fig­urować ją dla swo­jej aplikacji, będzie nal­iczana opła­ta 50 cen­tów za każdy miesiąc.

Elastic Beanstalk

Na początku skon­fig­u­ru­je­my naszą aplikację i środowisko, w którym będzie dzi­ałała. Na ekranie głównym wybier­amy usługę Elas­tic Beanstalk.

Na ekranie, który się pojawi, wybier­amy opcję ‘Cre­ate new application’
Screenshot_2

 

Pojawi się pier­wszy ekran na którym może­my podać nazwę oraz opis aplikacji. Nazwa jest dość istot­na, ponieważ nie tak łat­wo ją później zmienić. Screenshot_3

Klikamy ‘Next’ i mamy już naszą aplikację. Sama aplikac­ja to jedynie coś w rodza­ju ‘grupy’ — pozwala nam na łacze­nie wielu środowisk w jed­ną całość. Środowisko to w naszym przy­pad­ku aplikac­ja webowa — czyli np. plik WAR dla aplikacji w Javie. Wiele złożonych aplikacji ma kil­ka środowisk, z których każde jest odpowiedzialne za inny obszar sys­te­mu. My utworzymy tylko jedno.

Wybier­amy więc opcję ‘Web serv­er envi­ron­ment’ — chce­my, aby nasza aplikac­ja dzi­ałała jako aplikac­ja webowa.
Screenshot_4

 

Może się pojaw­ić okienko, w którym mamy wybrać pro­fil. Pro­file to rodzaj dodatkowej kon­fig­u­racji, my jed­nak zad­owolimy się domyśl­nym, więc nic nie zmieni­a­jąc wybier­amy opcję ‘Next’Screenshot_5

 

Kole­jny ekran pozwala nam wybrać, jakiego typu aplikację chce­my uru­chomić. Wybier­amy kon­fig­u­rację Tom­cat (możesz przy okazji prze­jrzeć inne dostęp­ne opc­je — mamy tutaj między inny­mi node.JS, PHP — słowem, dla każdego coś się zna­jdzie ;) W Envi­ron­ment type wybier­amy ‘Load bal­anc­ing, auto scal­ing’. Dzię­ki temu będziemy mogli w przyszłoś­ci skalować aplikację, jeśli zajdzie taka potrzeba.

Screenshot_6

Ten ekran pozwala nam na stworze­nie wer­sji aplikacji. Elas­tic Beanstalk umożli­wia przy­wracanie his­to­rycznych wer­sji (np. w przy­pad­ku zauważe­nia błędów w nowym wyda­niu), każdy update jest trak­towany jako wer­s­ja. Na tym ekranie może­my od razu wgrać nasz plik WAR — póki co wybierzmy jed­nak ‘Sam­ple appli­ca­tion’ (wgra to przykład­ową aplikację). Pozostałe ustaw­ienia zostaw­iamy bez zmi­an (doty­czą one sposobu, w jaki nasze ser­w­ery będą aktu­al­i­zowane w przy­pad­ku pojaw­ienia się nowej wersji).
Screenshot_7

Kole­jny krok to opis środowiska — może­my tutaj wybrać domenę, pod którą będzie dostęp­na nasza aplikac­ja (z końcówką .elasticbeanstalk.com) — dzię­ki temu nie musisz kupować dome­ny, żeby zobaczyć swo­ją aplikację w internecie! Oczy­wiś­cie później uży­je­my włas­nej, ład­niejszej domeny.Screenshot_8

 

 

W następ­nym kroku pozostaw­iamy obie opc­je niewybrane — bazę danych utworzymy osob­no w przyszłoś­ci, jeśli będzie nam potrzeb­na. Pier­wsza opc­ja pozwala nam na utworze­nie bazy danych w ramach automaty­cznej kon­fig­u­racji. Ma to swo­je zale­ty, jed­nak aby ułatwić kon­fig­u­rację utworzymy ją poza środowiskiem. Dru­ga opc­ja to pry­wat­na sieć w ramach chmury Ama­zon — kon­fig­u­rac­ja tego ele­men­tu jest jed­nak bardziej zaawan­sowana i nie będziemy jej omaw­iać w ramach tej lekcji.
Screenshot_9

 

Na tym ekranie może­my wybrać m.in. rodzaj ser­w­era, na jakim będzie uruchami­ana nasza aplikac­ja. Ponieważ nie korzys­tamy z VPC (opc­ja na poprzed­nim ekranie), może­my sko­rzys­tać jedynie z typu t1.micro. Pozostałe opc­je określa­ją dostęp do ser­w­era bezpośred­nio, rozmi­ar dysku i inne szczegóły, które w tym momen­cie może­my zostaw­ić w opcji domyślnej.
Screenshot_10

 

Następ­ny ekran to tagi — może­my dodać dowolne tagi (później może­my ich uży­wać do wyszuki­wa­nia ser­w­erów — są bard­zo przy­datne jeśli zarządza­my więk­szą iloś­cią zasobów). My zostaw­imy je puste.
Screenshot_11

 

 

 

To już wszys­tko! Zobaczysz ter­az podu­mowanie, i jeśli wszys­tko się zgadza, możesz uru­chomić swo­je środowisko:
Screenshot_12

 

Prze­niesie nas na ekran środowiska — po uru­chomie­niu zna­jdziemy tutaj infor­ma­c­je o aktu­al­nym stanie, ostat­nich zdarzeni­ach itp. Póki co powin­naś zobaczyć komu­nikat, że środowisko jest konfigurowane:

Screenshot_13

W pasku u góry jest też adres Two­jej aplikacji — po kliknię­ciu na niego, zobaczysz przykład­ową aplikację (a w przyszłoś­ci będzie to Two­ja aplikacja!)

Screenshot_15

Dodatkowa konfiguracja

Zaraz po uru­chomie­niu możesz chcieć zmienić domyślne ustaw­ienia (uruchami­ane jest od 1 do 4 ser­w­erów w zależnoś­ci od potrzeb) aby nie ponosić nieoczeki­wanych kosztów. Prze­chodz­imy na zakład­kę Con­fig­u­ra­tion i klikamy koło zębate przy pan­elu ‘Scal­ing’:

Screenshot_14

 

Zmieni­amy ‘Max­i­mum instance count’ na 1 i zapisu­je­my zmiany.

Screenshot_16

Podsumowanie

Dzisi­aj utworzyliśmy środowisko, w którym będziemy uruchami­ać naszą aplikację. W kole­jnej lekcji uru­chomimy nasz kod pod naszą domeną :)

Licencja Creative Commons

Jeśli uważasz powyższą lekcję za przy­dat­ną, mamy małą prośbę: pol­ub nasz fan­page. Dzię­ki temu będziesz zawsze na bieżą­co z nowy­mi treś­ci­a­mi na blogu ( i oczy­wiś­cie, z nowy­mi częś­ci­a­mi kur­su Javy). Dzięki!