Generujemy zalążek aplikacji MoocYourLife, czyli JHipster tutorial part 2

Witaj z powrotem!

W poprzednim wpisie zaczęliśmy naszą drogę do zostania (Java)hipsterem od instalacji generatora JHipster. Dziś idziemy krok dalej! Wygenerujemy kod, który będzie podstawą aplikacji MoocYourLife. Zapraszam Cię więc na dalszy ciąg poznawania sekretów życia prawdziwego hipster programisty 🙂

Cały kod, który uda mi się tutaj wytworzyć będzie na GitHubie tu: https://github.com/kali11/moocyourlife. Obecnie repozytorium jest puste, ale już dziś wpadną tam pierwsze linijki kodu. Zachęcam Cię do śledzenia tego repozytorium!

Tworzymy zalążek MoocYourLife

Zatem bez zbędnego gadania, zaczynajmy:

$ mkdir moocyourlife
$ cd moocyourlife
$ git init

I w nowym katalogu witamy się z JHipsterem:

$ yo jhipster

Powinniśmy ujrzeć duży napis podobny do tego:

Następnie JHipster zada nam serię pytań. Na podstawie odpowiedzi do nich zostanie wygenerowany odpowiedni kod. Oto one:

  1. W pierwszym kroku wybieramy architekturę naszej aplikacji. De facto do wyboru są dwie opcje:
    1. Monolityczna – klasyczna aplikacja webowa, na którą składa się zarówno część frontendowa jak i backendowa. Jest to rekomendowany wybór dla większości prostych rozwiązań.
    2.  Mikroserwisy – w tym przypadku zostanie wygenerowany jeden serwis będący częścią jakiegoś większego systemu. Mimo, że architektura mikroserwisów jest obecnie bardzo modnym rozwiązaniem, to warto dobrze przemyśleć wybór tej opcji i być świadom zarówno zalet jak i wad tego rozwiązania. 🙂 Nie będę tego robił tutaj, ale odsyłam do wujka Google.

    Ja wybieram pierwszą opcję 🙂

  2. Wpisujemy nazwę naszego projektu. W moim przypadku „moocyourlife”.
  3. W tym miejscu możemy doinstalować dodatkowe moduły wzbogacające JHipstera. Ich lista dostępna jest tutaj.
  4. Następnie wybieramy nazwę pakietu javowego. U mnie będzie to „org.piotr.moocyourlife”.
  5. Kolejny wybór dotyczy sposobu autoryzacji użytkowników. Mamy 3 możliwości:
    1. HTTP Session Authentication – klasyczny mechanizm oparty na na sesji użytkownika. Opcja najpowszechniejsza w aplikacjach webowych opartych na Javie i Springu. Wybór tego rozwiązania umożliwia nam skorzystanie z narzędzia Spring Social, dzięki któremu możemy logować się przy pomocy np. konta Google albo Facebook.
    2. JWT (JSON Web Tocken) – w skrócie jest to mechanizm, w którym serwer generuje token (w formacie JSON) i przesyła go klientowi. Następnie klient może używać tego tokena do autoryzacji. Po bardziej szczegółowe informacje odsyłam do źródła: https://jwt.io
    3. OAuth2 Authentication – zabezpieczenie z wykorzystaniem OAuth2.

    Ja wybieram pierwszą opcję.

  6. W tym miejscy wybieramy typ bazy danych. Znowu możliwości jest kilka:
    1. SQL – tradycyjna baza SQL, taka jak MySQL, PostgreSQL
    2. MongoDB – nierelacyjna baza danych przechowująca informacje jako dokumenty w formacie JSON
    3. Cassandra – kolumnowa baza danych

    U moim przypadku relacyjna baza danych świetnie spełni swoje zadanie.

  7. Teraz zostałem zapytany o konkretny wybór preferowanej bazy SQL do środowiska produkcyjnego. Ja najchętniej korzystam z Postgresa. 🙂
  8. W tym pytaniu z kolei wybieramy bazę używaną w środowisku deweloperskim. Możemy użyć tej samej bazy co „na produkcji”, albo zdecydować się na H2. Jest to baza tworzona podczas startu aplikacji i trzymana w pamięci. Konfiguracja takiego rozwiązania jest prostsza, ale za każdym razem gdy wyłączamy serwer tracimy dane z bazy. (Jest też możliwość użycia H2 z opcją zapisu danych na dysk, ale jest to póki co opcja BETA). Ja wybieram tę samą bazę co na produkcji, czyli Postgresa.
  9. Kolejne pytanie dotyczy tego, czy chcemy używać JPA wraz z cache’em. Dzięki takiemu rozwiązaniu wyniki często powtarzających się zapytań nie będą wymagały odpytywania bazy, co zwiększy wydajność naszej aplikacji. Jeśli zdecydujemy się włączyć cache, mamy do wyboru dwie opcje: ehcache (lokalny) oraz HazelCast (rozproszony). Ja wybieram ehcache.
  10. W tym kroku wybieramy narzędzie do budowania: Maven albo Gradle. To jest po prostu kwestia gustu, ja mam większe doświadczenie z Mavenem, ale w tym przypadku chciałbym spróbować tego drugiego. 🙂
  11. Następne pytanie jest pytaniem wielokrotnego wyboru i dotyczy innych technologii, których chcemy używać, Do wyboru są:
    1. Social login – możliwość logowania do aplikacji przy pomocy konta Google, Facebook lub Twitter.
    2. Search engine using Elasticsearch – opcja ta pozwala na dodanie indeksowania danych i przeszukiwanie ich przy pomocy Elasticsearch’a.
    3. WebSockets using Spring Websocket – czy chcemy używać WebSocketów?
    4. Asynchronous messages using Apache Kafka – możliwość użycia systemu kolejkowego Kafka. Szczególnie przydatne w przypadku architektury opartej na mikroserwisach.
  12. Kolejna sprawa to wybór wersji Angulara, którą chcemy używać. Do wyboru AngularJS 1.0 albo AngularJS 2.0. Ja wybieram dwójkę. 🙂
  13. W tym miejscy określamy, czy chcemy używać Sass w CSSie.
  14. Teraz czy chcemy włączyć obsługę wielu języków.
  15. I teraz wybieramy podstawowy język aplikacji oraz ewentualnie dodatkowe.
  16. Ostatnie pytanie: wybieramy narzędzia do testowania frontendu. Są trzy możliwe opcje:
    1. Gatling – do testów wydajnościowych
    2. Cucumber – do testów typu BDD (behaviour driven design)
    3. Protractor – do integracyjnych testów Angulara

Uff… To już wszystkie pytania

Po udzieleniu odpowiedzi na ostatnie JHipster rozpocznie generowanie naszej aplikcji. Może to chwilkę potrwać…

Po kilku minutach JHipster poinformuje o sukcesie. Aplikacja została wygenerowana, możemy świętować pierwszy sukces 🙂 Warto uruchomić polecenie cloc:

$ cloc moocyourlife/

Jak widzisz, ilość wygenerowanego kodu jest imponująca! Cały jest dostępny na GitHubie tutaj: https://github.com/kali11/moocyourlife.

I to tyle na dziś. 🙂  W następnym wpisie trochę się porozglądamy w kodzie i uruchomimy naszą aplikację. Także do zobaczenia i…

NIECH KOD BĘDZIE Z TOBĄ!

 

4 komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *