Projekt Bilet #0 — zaczynamy!

By 18 November 2016 February 6th, 2017 Projekt 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. Zapraszamy!

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 uczestnikach
  • Możli­wość zarządza­nia swo­ją rez­erwacją (w tym anu­lowaniem bile­tu i możli­wość zada­nia pyta­nia organizatorom)
  • Przy­dzi­ał do grup wiekowych na pod­staw­ie wieku uczestnika
  • 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 rezerwowych)
  • 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 Hud­son’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 technologiczna :)

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 oryginalnie).

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 znajdziemy).

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 aplikacjach.

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!