Projekt Bilet #0 — zaczynamy!

By 18 listopada 2016Projekt Bilet

Zaczy­namy z kole­jnym, dłu­go obiecy­wanym cyk­lem — kole­jnym kursem, tym razem sku­pi­a­ją­cym się na Spring Boot, Angu­lar­JS i bardziej pop­u­larnych tech­nolo­giach. Zaprasza­my!

Uwa­ga! Ten kurs zakła­da już pod­sta­wową zna­jo­mość Javy oraz Mave­na. Zan­im zaczniesz, gorą­co zachę­camy do zapoz­na­nia się z lekc­ja­mi 0–7 naszego kur­su Javy (choć i dal­sze lekc­je pomogą Ci lep­iej zrozu­mieć mate­ri­ał — nie są one jed­nak konieczne, ale zde­cy­dowanie ułatwią i pomogą zrozu­mieć to, o czym będziemy pisać).

Słowem wstępu

Zan­im zaczniemy dzi­ałać, kil­ka słów wstępu o tym co będziemy pisać i przede wszys­tkim z uży­ciem jakich tech­nologii będziemy pisać.

O projekcie — potrzeba i wymagania

Jeśli śledzisz naszego blo­ga od jakiegoś cza­su z pewnoś­cią wiesz, że w 2016 roku współor­ga­ni­zowal­iśmy pro­jekt Devoxx4Kids we Wrocław­iu. Jak to zwyk­le bywa w takich sytu­ac­jach, nie obyło się bez prob­lemów orga­ni­za­cyjnych, a jed­nym z nich były zapisy na zaję­cia. Do przeprowadzenia zapisów korzys­tal­iśmy z gotowego narzędzia, które nie do koń­ca wspier­ało nasze potrze­by — kwest­ie takie jak lista rez­er­wowa, praw­idłowe przy­dzielanie uczest­ników do grup wiekowych, prowadze­nie komu­nikacji na bieżą­co, możli­wość komu­nikacji z rodzi­ca­mi i zebranie odpowied­nich danych okaza­ły się być nie tylko trudne, ale też bard­zo czasochłonne. Mamy więc konkret­ną potrze­bę biz­ne­sową, którą się zajmiemy :) Pod­sta­wowe funkcjon­al­noś­ci, które chce­my w niej zawrzeć to:

  • Zapisy na zaję­cia pozwala­jące zebrać wszys­tkie potrzeb­ne infor­ma­c­je o uczest­nikach
  • Możli­wość zarządza­nia swo­ją rez­erwacją (w tym anu­lowaniem bile­tu i możli­wość zada­nia pyta­nia orga­ni­za­torom)
  • Przy­dzi­ał do grup wiekowych na pod­staw­ie wieku uczest­ni­ka
  • Inte­grac­ja z narzędzi­a­mi do komu­nikacji (np. mailchimp)
  • Automaty­czny zapis na grupę lub listę rez­er­wową (+infor­ma­c­ja o miejs­cu na liś­cie rez­er­wowych)
  • Możli­wość zarządza­nia kilko­ma edy­c­ja­mi (np. w różnych mias­tach czy w różnych lat­ach, wraz z archi­wiz­a­cją danych)

Szczegółowy­mi wyma­gani­a­mi zajmiemy się w kole­jnym kroku — ich opra­cow­aniem, zebraniem i ‘prze­traw­ie­niem’ na realia pro­jek­towe. Pro­jekt być może zostanie wyko­rzys­tany w prak­tyce, być może nie — na pewno będzie to ciekawe doświad­cze­nie :) Całość nauczeni doświad­cze­niem z poprzed­niego kur­su Javy będziemy na bieżą­co umieszczać na GitHub’ie.

Technologie

Z uwa­gi na to, że kurs ten będzie sku­pi­ał się na prak­ty­cznej pra­cy z pro­jek­tem, poza samą częś­cią tech­no­log­iczną poświęcimy trochę cza­su na kon­fig­urowanie środowiska — czyli m.in. ser­w­er CI oraz automaty­czne wdrażanie najnowszej wer­sji na środowisko pro­duk­cyjne. Jako repozy­to­ri­um uży­je­my GitHub’a, jako CI i narzędzie do wdraża­nia sko­rzys­tamy z Hudson’a, a nasze ser­w­ery będziemy utrzymy­wać w chmurze AWS.

Po stron­ie tech­no­log­icznej sko­rzys­tamy ze Spring Boot’a jako pod­stawy do stworzenia naszej aplikacji, oczy­wiś­cie Spring Data i rela­cyj­na baza danych do obsłu­gi repozy­to­ri­um. Spring Secu­ri­ty poz­woli nam zabez­pieczyć aplikację, a Angu­lar­JS wraz z Boot­strapem będą odpowiedzialne za fron­tend i wygląd aplikacji. Całość będziemy rozwi­jali oczy­wiś­cie jako pro­jekt Mavenowy.

Do tego wszys­tkie zin­te­gru­je­my się z MailChimp’em, poz­wolimy na gen­erowanie danych do Excela i umożli­wimy wyszuki­wanie nie tylko z uży­ciem bazy danych (uży­je­my do tego tech­nologii Elas­tic­Search) — słowem, czeka nas ciekawa przy­go­da tech­no­log­icz­na :)

Spring Boot

Wystar­czy już wstępu, prze­jdźmy do rzeczy :) Przede wszys­tkim — czym jest Spring Boot, tech­nolo­gia, na której oprze­my całą naszą aplikację?

Zapewne wiesz już, czym jest Spring Frame­work i Maven (a jeśli nie, to koniecznie zapoz­naj się z naszym kursem Javy!), czym więc jest Spring Boot? W dużym uproszcze­niu jest to plat­for­ma, dzię­ki której uru­chomie­nie pro­jek­tu z uży­ciem Spring’a i różnych jego mod­ułów jest jeszcze prost­sze i szyb­sze. Spring Boot zaw­iera pod­sta­wową, domyśl­ną kon­fig­u­rację, dzię­ki której może­my uru­chomić dzi­ała­jącą aplikację webową właś­ci­wie w ciągu kilku min­ut. Jed­ną z ważniejszych zalet jest jed­nak możli­wość rekon­fig­u­racji — jeśli nie określimy czegoś samodziel­nie (np. sposobu, w jaki aplikac­ja będzie zabez­piec­zona), Spring Boot uży­je wartoś­ci domyśl­nych. Wszys­tkie jego zachowa­nia moż­na jed­nak kon­fig­urować i mody­fikować, dzię­ki czemu nie tracimy elasty­cznoś­ci, jaką daje nam Spring Frame­work (choć cza­sem fak­ty­cznie wyglą­da to nieco ory­gi­nal­nie).

Spring Boot zapew­nia nie tylko kon­fig­u­rację, ale także ułatwienia w przy­pad­ku pro­jek­tów Mavenowych — najważniejsze z nich to zarządzanie zależnoś­ci­a­mi, dzię­ki czemu nie musimy się martwić o konkretne wer­sje bib­liotek — mamy pewność, że te wybrane przez plat­for­mę są ze sobą zgodne i nie powodu­ją prob­lemów (oczy­wiś­cie plat­for­ma zarządza tylko najważniejszy­mi i najpop­u­larniejszy­mi zależnoś­ci­a­mi, nis­zowego narzędzia czy bib­liote­ki raczej tam nie zna­jdziemy).

Dodatkowo Spring Boot daje nam także kil­ka bard­zo specy­ficznych adno­tacji — pozwala­ją­cych np. akty­wować określoną kon­fig­u­rację w zależnoś­ci od tego, czy dany prop­er­ties ist­nieje czy nie. Najczęś­ciej nie są to jed­nak ele­men­ty wyko­rzysty­wane w stan­dar­d­owych aplikac­jach.

Pod­sumowu­jąc, Spring Boot jest w sto­sunku do Spring’a tym, czym kom­plet­ny samochód jest w sto­sunku do sil­ni­ka — narzędziem, które może­my uru­chomić i zacząć uży­wać w prze­ciągu kilku min­ut, bez koniecznoś­ci mozol­nej kon­fig­u­racji (podat­nej na błędy). Oczy­wiś­cie nie trze­ba też wyko­rzysty­wać wszys­t­kich ele­men­tów od razu — jeśli masz aplikację w Springu, możesz zacząć od zarządza­nia zależnoś­ci­a­mi i stop­niowo mody­fikować i upraszczać kole­jne ele­men­ty aplikacji, ale nie o mody­fikowa­niu ist­nieją­cych aplikacji będzie ten kurs ;)

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!

  •  
  •  
  •  
  •  
  •  
  • Noth­ingQueen

    Brz­mi świet­nie! Kiedy zaczy­namy? :)

  • CodeO­biect

    No fajnie :)
    Takie pro­jek­ty są najlep­sze ;)

  • Krzysztof Ambrozi­ak

    Czu­ję, że będzie to świet­ny kurs. Tym bardziej, że wyko­rzys­tanych będzie kil­ka tech­nologii (które są obec­nie “na cza­sie”). Mam tylko jed­no pytanie. A w zasadzie prośbę. Sko­ro już tyle tech­nologii wymie­nil­iś­cie, których uży­je­cie do devel­op­men­tu tego pro­jek­tu to czy mógłbym zapy­tać, a w zasadzie poprosić, o dodanie jeszcze jed­nej (oczy­wiś­cie związanej ze Spring Bootem, a nie wziętej z kos­mo­su), a mianowicie Spring Boot Actu­a­tor? Nie chodzi mi o pełny kurs ale o kil­ka wtrąceń na jego tem­at. Chci­ałbym go zacząć poz­nawać, a nie poszukałem w Sieci żad­nych ciekawych infor­ma­cji. A już w ogóle nie ma żad­nego kur­su po pol­sku, który by wzmi­ankował o Spring Boot Actu­a­tor. Tak więc proszę, proszę, proszę… :) Zatem mogę liczyć, że się pojawi?

    Poz­draw­iam
    Krzysztof

    • Pod koniec kur­su dodamy kil­ka ‘opcjon­al­nych’ tech­nologii, w tym zerkniemy także na Actu­a­to­ra ! Dzię­ki za pod­powiedź :)

  • migel­lal

    Ooo ;) To fak­ty­cznie, czekam na pier­wszą część.

  • Magg

    Super!!! Kiedy wys­tar­tu­je pro­jekt? :)

  • EMil­ia

    Hej! Spring Boot to jest to czego chci­ałabym sie nauczyć, więc trafil­iś­cie z tem­atem! Kiedy będzie kole­j­na lekc­ja? Może przy­go­tu­je­cie do niej jakieś filmik-tuto­ri­ale, żeby łatwiej moż­na było zrozu­mieć :)

    • Cześć,
      chwilowo mamy mała zaw­ieruchę cza­sową, ale od 11 grud­nia będziemy mieli chwilę odd­echu więc pojaw­ią się kole­jne częś­ci :)
      Co do filmiku, nieste­ty ‘więcej cza­su’ nadal oznacza ‘bard­zo mało’, nasze doty­chcza­sowe pró­by z nagry­waniem filmików przekładały się na masę cza­su spęd­zonego na edy­cji i niezad­owala­ją­cy efekt, więc póki co raczej taka for­ma się na blogu nie pojawi.

      Poz­draw­iamy!

  • Tad

    wciąż w planach jest ten kurs bo jak nara­zie cisza

    • Jak najbardziej, wciąż planu­je­my kon­tyn­uować ser­ię — kole­jny wpis już niedłu­go ;)

  • Maks

    Cześć, jaka jest różni­ca pomiędzy Spring Boot a Spring MVC?