Projekt Bilet #0 – zaczynamy!

By 18 listopada 2016Kurs Javy
wpis-header-projekt-bilet-1

Zaczynamy z kolejnym, długo obiecywanym cyklem – kolejnym kursem, tym razem skupiającym się na Spring Boot, AngularJS i bardziej popularnych technologiach. Zapraszamy!

Uwaga! Ten kurs zakłada już podstawową znajomość Javy oraz Mavena. Zanim zaczniesz, gorąco zachęcamy do zapoznania się z lekcjami 0-7 naszego kursu Javy (choć i dalsze lekcje pomogą Ci lepiej zrozumieć materiał – nie są one jednak konieczne, ale zdecydowanie ułatwią i pomogą zrozumieć to, o czym będziemy pisać).

Słowem wstępu

Zanim zaczniemy działać, kilka słów wstępu o tym co będziemy pisać i przede wszystkim z użyciem jakich technologii będziemy pisać.

O projekcie – potrzeba i wymagania

Jeśli śledzisz naszego bloga od jakiegoś czasu z pewnością wiesz, że w 2016 roku współorganizowaliśmy projekt Devoxx4Kids we Wrocławiu. Jak to zwykle bywa w takich sytuacjach, nie obyło się bez problemów organizacyjnych, a jednym z nich były zapisy na zajęcia. Do przeprowadzenia zapisów korzystaliśmy z gotowego narzędzia, które nie do końca wspierało nasze potrzeby – kwestie takie jak lista rezerwowa, prawidłowe przydzielanie uczestników do grup wiekowych, prowadzenie komunikacji na bieżąco, możliwość komunikacji z rodzicami i zebranie odpowiednich danych okazały się być nie tylko trudne, ale też bardzo czasochłonne. Mamy więc konkretną potrzebę biznesową, którą się zajmiemy :) Podstawowe funkcjonalności, które chcemy w niej zawrzeć to:

  • Zapisy na zajęcia pozwalające zebrać wszystkie potrzebne informacje o uczestnikach
  • Możliwość zarządzania swoją rezerwacją (w tym anulowaniem biletu i możliwość zadania pytania organizatorom)
  • Przydział do grup wiekowych na podstawie wieku uczestnika
  • Integracja z narzędziami do komunikacji (np. mailchimp)
  • Automatyczny zapis na grupę lub listę rezerwową (+informacja o miejscu na liście rezerwowych)
  • Możliwość zarządzania kilkoma edycjami (np. w różnych miastach czy w różnych latach, wraz z archiwizacją danych)

Szczegółowymi wymaganiami zajmiemy się w kolejnym kroku – ich opracowaniem, zebraniem i ‚przetrawieniem’ na realia projektowe. Projekt być może zostanie wykorzystany w praktyce, być może nie – na pewno będzie to ciekawe doświadczenie :) Całość nauczeni doświadczeniem z poprzedniego kursu Javy będziemy na bieżąco umieszczać na GitHub’ie.

Technologie

Z uwagi na to, że kurs ten będzie skupiał się na praktycznej pracy z projektem, poza samą częścią technologiczną poświęcimy trochę czasu na konfigurowanie środowiska – czyli m.in. serwer CI oraz automatyczne wdrażanie najnowszej wersji na środowisko produkcyjne. Jako repozytorium użyjemy GitHub’a, jako CI i narzędzie do wdrażania skorzystamy z Hudson’a, a nasze serwery będziemy utrzymywać w chmurze AWS.

Po stronie technologicznej skorzystamy ze Spring Boot’a jako podstawy do stworzenia naszej aplikacji, oczywiście Spring Data i relacyjna baza danych do obsługi repozytorium. Spring Security pozwoli nam zabezpieczyć aplikację, a AngularJS wraz z Bootstrapem będą odpowiedzialne za frontend i wygląd aplikacji. Całość będziemy rozwijali oczywiście jako projekt Mavenowy.

Do tego wszystkie zintegrujemy się z MailChimp’em, pozwolimy na generowanie danych do Excela i umożliwimy wyszukiwanie nie tylko z użyciem bazy danych (użyjemy do tego technologii ElasticSearch) – słowem, czeka nas ciekawa przygoda technologiczna :)

Spring Boot

Wystarczy już wstępu, przejdźmy do rzeczy :) Przede wszystkim – czym jest Spring Boot, technologia, na której oprzemy całą naszą aplikację?

Zapewne wiesz już, czym jest Spring Framework i Maven (a jeśli nie, to koniecznie zapoznaj się z naszym kursem Javy!), czym więc jest Spring Boot? W dużym uproszczeniu jest to platforma, dzięki której uruchomienie projektu z użyciem Spring’a i różnych jego modułów jest jeszcze prostsze i szybsze. Spring Boot zawiera podstawową, domyślną konfigurację, dzięki której możemy uruchomić działającą aplikację webową właściwie w ciągu kilku minut. Jedną z ważniejszych zalet jest jednak możliwość rekonfiguracji – jeśli nie określimy czegoś samodzielnie (np. sposobu, w jaki aplikacja będzie zabezpieczona), Spring Boot użyje wartości domyślnych. Wszystkie jego zachowania można jednak konfigurować i modyfikować, dzięki czemu nie tracimy elastyczności, jaką daje nam Spring Framework (choć czasem faktycznie wygląda to nieco oryginalnie).

Spring Boot zapewnia nie tylko konfigurację, ale także ułatwienia w przypadku projektów Mavenowych – najważniejsze z nich to zarządzanie zależnościami, dzięki czemu nie musimy się martwić o konkretne wersje bibliotek – mamy pewność, że te wybrane przez platformę są ze sobą zgodne i nie powodują problemów (oczywiście platforma zarządza tylko najważniejszymi i najpopularniejszymi zależnościami, niszowego narzędzia czy biblioteki raczej tam nie znajdziemy).

Dodatkowo Spring Boot daje nam także kilka bardzo specyficznych adnotacji – pozwalających np. aktywować określoną konfigurację w zależności od tego, czy dany properties istnieje czy nie. Najczęściej nie są to jednak elementy wykorzystywane w standardowych aplikacjach.

Podsumowując, Spring Boot jest w stosunku do Spring’a tym, czym kompletny samochód jest w stosunku do silnika – narzędziem, które możemy uruchomić i zacząć używać w przeciągu kilku minut, bez konieczności mozolnej konfiguracji (podatnej na błędy). Oczywiście nie trzeba też wykorzystywać wszystkich elementów od razu – jeśli masz aplikację w Springu, możesz zacząć od zarządzania zależnościami i stopniowo modyfikować i upraszczać kolejne elementy aplikacji, ale nie o modyfikowaniu istniejących aplikacji będzie ten kurs ;)

Licencja Creative Commons

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!

  • 6
  •  
  •  
  • 13
  •  
  • NothingQueen

    Brzmi świetnie! Kiedy zaczynamy? :)

  • CodeObiect

    No fajnie :)
    Takie projekty są najlepsze ;)

  • Krzysztof Ambroziak

    Czuję, że będzie to świetny kurs. Tym bardziej, że wykorzystanych będzie kilka technologii (które są obecnie „na czasie”). Mam tylko jedno pytanie. A w zasadzie prośbę. Skoro już tyle technologii wymieniliście, których użyjecie do developmentu tego projektu to czy mógłbym zapytać, a w zasadzie poprosić, o dodanie jeszcze jednej (oczywiście związanej ze Spring Bootem, a nie wziętej z kosmosu), a mianowicie Spring Boot Actuator? Nie chodzi mi o pełny kurs ale o kilka wtrąceń na jego temat. Chciałbym go zacząć poznawać, a nie poszukałem w Sieci żadnych ciekawych informacji. A już w ogóle nie ma żadnego kursu po polsku, który by wzmiankował o Spring Boot Actuator. Tak więc proszę, proszę, proszę… :) Zatem mogę liczyć, że się pojawi?

    Pozdrawiam
    Krzysztof

  • migellal

    Ooo ;) To faktycznie, czekam na pierwszą część.

  • Magg

    Super!!! Kiedy wystartuje projekt? :)