Spring Boot

W ramach podcastu “Porozmawiajmy o IT” miałem okazję porozmawiać z Przemkiem Bykowskim o frameworku Spring Boot.

Posłuchaj naszej rozmowy w wersji audio 🎧 👇

Cześć! Mój dzisiejszy gość to programista, spiker, youtuber i bloger. Specjalizuje się w prowadzeniu szkoleń z zakresu tworzenia i rozwoju oprogramowania. Cechuje go innowacyjne podejście do przekazywania wiedzy i umiejętność inspirowania do działania. Upraszcza skomplikowane zagadnienia i łamie utarte schematy nauczania, by swoim odbiorcom dostarczyć wartościowy know-how w przystępny, a przede wszystkim angażujący sposób. Moim i Waszym gościem jest Przemysław Bykowski.

Przemku, witaj w podcaście.

Dziękuję Ci, Krzysiek, za zaproszenie do podcastu. Witam naszych wszystkich słuchaczy i zachęcam do słuchania dzisiejszego materiału.

Kto tylko śledzi Przemka w socjal mediach albo czyta jego bloga, albo ogląda jego filmiki, to wie, że Przemek jest specjalistą m.in. od Springa, od Spring Boota. I właśnie ten temat będzie u nas rozbierany na czynniki pierwsze. A zanim do tego przejdziemy, to chciałbym Cię, Przemku, zapytać, tak jak każdego mojego gościa, czy słuchasz podcastów. Jeśli tak, to może masz jakieś audycje warte polecenia?

Kiedyś znacznie więcej słuchałem podcastów. Tematyka, która mnie głównie interesowała, to związana z architekturą oprogramowania, z programowaniem, ale również tematyka biznesowa, marketingowa. Słuchałem również oczywiście, Krzysiu, Ciebie. Więcej słuchałem, gdy dominowała praca on-site. Były to czasy 2010, 2015, kiedy pojęcie pracy zdalnej nie istniało. I w momencie, kiedy dojeżdżałem do swojej pracy czy to rowerem, czy to samochodem, komunikacją miejską, to było bardzo dużo czasu, aby tych podcastów słuchać. I właśnie ten czas wykorzystywałem, żeby słychać wartościowych podcastów, które dodatkowo mogły mnie rozwinąć. Natomiast odkąd żyjemy w czasach postpandemicznych, gdzie dominują praca remote dominuje, to brakuje czasu na te podcasty. I kiedy tylko i wyłącznie mam więcej czasu na samorozwój, to decyduję się na połączenie demonstracji, prezentacji i oglądanie w dużej mierze form wideo, które są w stanie dostarczyć dużo wartościowych informacji.

Jednak wszystkich naszych widzów, słuchaczy, którzy dojeżdżają do pracy samochodem, rowerem, komunikacją miejską, zachęcam do zagospodarowania tego czasu i posłuchania wartościowych podcastów, m.in. Porozmawiajmy o iT, bo można wysłuchać wiele fantastycznych rozmów, które zmotywują do działania. Więc każdego, kto ma wolną chwilę, zachęcam.

I sam, tak jak powiedziałem, jeszcze mi się zdarza gdzieś dojechać rowerem, to jest dla mnie must have, bo lubię ten czas wolny wykorzystywać.

Podpisuję się pod tymi rekomendacjami z zaleceniem co do słuchania podcastów, bo to może być faktycznie fajne źródło czerpania wiedzy właśnie w tych momentach, kiedy wykonujemy jakieś inne czynności.

Pozwól, że jeszcze dodam, że dla mnie podcasty to są głównie inspiracje. Bo wiedza, którą zdobędziemy, to jest jedna część, ale posłuchanie osób, które dostarczą nam inspiracji, że po tym podcaście wychodzimy i mamy energię do działania, chcemy coś zrobić, chcemy coś spraktykować, to jest druga rzecz. I to jest to, co ja z podcastów wyciągam najbardziej. Że ludzie mnie podpalają do działania. I dzięki temu mi się chce. Chce mi się działać, robić i idę dalej.

Te historie ludzkie to jest istotny czynnik. To jest też, myślę, fajna rzecz, że poprzez podcasty możesz się czegoś nowego nauczyć, możesz mieć jakąś rozrywkę, możesz mieć inspirację, więc tym bardziej warto.

To zamknijmy może ten wątek i przejdźmy do naszej właściwej części rozmowy. I zanim zaczniemy rozbierać sobie Springa i Spring Boota na części pierwsze, to chciałbym Cię zapytać o historię tego frameworka. Jak to się w ogóle zaczęło, na jaki problem odpowiadał, jak powstał — gdybyś mógł taki mały rys historyczny nam tutaj przedstawić, to byłoby idealnie.

Historia powstania Springa jest bardzo ciekawa, bo sięga 1998 roku. Trochę historycznie to zabrzmiało, ale postarajmy się przypomnieć sobie te czasy. Bo wtedy zaczęły dominować rozwiązania internetowe, czyli np. poczta elektroniczna, bankowość. Te wszystkie rozwiązania zaczęły po prostu być coraz częściej wykorzystywane przez odbiorców. Więc firma Sun, która odpowiadała za Javę, stwierdziła: okej, stwórzmy narzędzie, które będzie służyło nam do budowania takiego typu rozwiązań. I tak właśnie powstało rozwiązanie, które się nazywało Java J2EE. Było to narzędzie, które służyło nam do tworzenia aplikacji internetowych z wykorzystaniem Javy. I pewnego razu pewien programista Rod Joyson postanowił napisać na ten temat książkę i opisywał, jak działa ta technologia, jak ją wykorzystywać, do czego ją stosować. I opisywał każde rozwiązanie, przykłady wykorzystania.

Jednak w momencie, kiedy pisał tę książkę, przeszła mu przez myśl pewna teza: Te rozwiązania są zbyt skomplikowane. Przecież to jest nieintuicyjne, słabo przemyślane. I wówczas twierdził, że jest w stanie zrobić to lepiej. I oczywiście skończył pisać swoją książkę, ale tuż po niej wziął się do pracy nad nowym rozwiązaniem, które będzie znacznie łatwiejsze w wykorzystaniu. I tak właśnie powstał Spring.

Jego kluczowym założeniem jest zaadaptowanie istniejących bibliotek i rozwiązań oraz dostarczenie programiście intuicyjnego interfejsu. Czyli nie tworzymy więcej nowych rozwiązań, nie wymyślamy koła na nowo, tylko jeżeli jest jakaś biblioteka, którą możemy zaadaptować, to robimy to na potrzeby Springa.

Można się zastanawiać, skąd się wziął Spring. Spring oznacza z ang. wiosnę, sprężynkę. Więc jest to rozwiązanie, którego rodzaju jest powiewem świeżości, jest czymś elastycznym, wygodnym. I sprawia, że programiście jest znacznie prościej tworzyć rozwiązania internetowe.

Ale nie tylko i wyłącznie internetowe, bo oczywiście z wykorzystaniem Springa można tworzyć aplikacje mobilne, desktopowe, głównie oczywiście webowe (ponad 99% rozwiązań).

Jego kluczowym założeniem jest zaadaptowanie istniejących bibliotek i rozwiązań oraz dostarczenie programiście intuicyjnego interfejsu. Czyli nie tworzymy więcej nowych rozwiązań, nie wymyślamy koła na nowo, tylko jeżeli jest jakaś biblioteka, którą możemy zaadaptować, to robimy to na potrzeby Springa.

Dobrze, to znamy już mniej więcej rys historyczny, wiemy, na jaki problem odpowiada. To myślę, żeby jeszcze nie mylić pojęć, bo sam się do tego gdzieś przyczyniłem na początku, to może gdybyś powiedział, czym jest Spring, czym jest Spring Boot. Jaka jest tutaj różnica, na jaki problem odpowiada i po co nam właściwie Spring Boot?

Spring Boot powstał mniej więcej 10–12 lat temu. Wydaje mi się, że taki pierwszy release Spring Boota powstał w roku 2014. Do komercyjnego użytku wszedł chyba w 2015 lub 2016. I jest to pewnego rodzaju framework do frameworka. Czyli można powiedzieć, że to jest taka kolejna iteracja Springa — czyli Spring Boot na sterydach.

Podejście było takie, że w momencie, kiedy korzystamy ze Springa, wiele rzeczy musimy wykonywać powtarzalnie. Czyli np. jeżeli tworzymy połączenie z bazą danych, musimy napisać klasę konfiguracyjną. Ktoś stwierdził: no ale po co. Weźmy, dostarczmy programiście gotowy zbiór konfiguracji i on będzie to wykorzystywał tylko i wyłącznie na swoje potrzeby i jeżeli coś nie będzie mu odpowiadało, to może to skonfigurować wg własnego uznania.

W każdym razie można powiedzieć, że Spring Boot to jest nic innego, jak połączenie Springa z zestawem danych konfiguracyjnych i jeszcze w tym wszystkim jest kontener webowy, który służy nam do łatwego deploymentu. Czyli na dobrą sprawę jednym kliknięciem możemy odpalić naszą aplikację i ona już będzie uruchomiona na kontenerze webowym, po to, żeby była gotowa do użytku. Więc takie podejście nazywa się production ready, czyli będziemy w stanie od razu wdrożyć rozwiązanie na produkcję.

Dodam jeszcze, że z punktu widzenia rynku pracy często widzimy w ogłoszeniach: wymagamy Springa. Jednak w praktyce na ten moment już mało osób pamięta o samym Springu. Na dobrą sprawę, jeśli ktoś mówi o Springu, to w domyśle chodzi mu o Spring Framework. Jeżeli gdzieś jeszcze były tworzone rozwiązania w Spring i one są nadal utrzymywane, to faktycznie firmy często poszukują deweloperów do pracy w samym Springu. Natomiast we wszystkich nowszych projektach, tak jak powiedziałem, mniej więcej od 2014 czy 2015 roku i świeższych, już raczej Springa nie doświadczymy. Każdy raczej decyduje się na wykorzystanie Spring Boota ze względu na łatwość jego wykorzystania. Chociaż sama transformacja przejścia deweloperów ze Springa na Spring Boota była bardzo trudna, ale to jest już inna historia.

To może zostańmy chwilę przy rynku pracy, bo to jest też, myślę, ciekawy temat. Spring jak większość frameworków ma budowę modułową, prawda? Chciałbym Cię zapytać o to, jakie moduły Springa warto, albo wręcz trzeba znać, jeśli myślimy o szukaniu pracy z wykorzystaniem tego frameworka, jakie są moduły atrakcyjne dla rynku pracy, a o jakich wg Ciebie warto również powiedzieć pod względem atrakcyjności dla programisty, dla dewelopera.

Z punktu widzenia rynku pracy must have jest Spring Core i w jego ramach zawierają się takiego rodzaju biblioteki, jak np. narzędzia, które umożliwiają nam tworzenie testów jednostkowych i integracyjnych. Oczywiście sam mechanizm Dependency Injection Inversion of Control, więc to są takie podstawowe narzędzia, które pozwalają nam na tworzenie i pracę z kontekstem Springa.

Dodatkowo must have wg mnie to jest oczywiście Spring Web. I tu istotna jest cała warstwa webowa, czyli jesteśmy w stanie dostarczyć kontener webowy, który umożliwia nam tworzenie aplikacji internetowych. Tam również zawierają się różnego rodzaju narzędzia, które służą nam do stworzenia REST API czy też klienta REST API.

Kolejnym ważnym modułem jest Spring Data JPA. I tutaj mamy zestaw narzędzi, które są wykorzystywane do tego, abyśmy pracowali z bazami danych. I to najczęściej są relacyjne bazy danych. To narzędzie jest o tyle wygodne, że niezależnie od rodzaju bazy danych, jaką wybierzemy, czy to będzie baza oraclowa, microsoftowa, czy jakakolwiek inna, to ten interfejs zawsze będzie taki sam.

Więc to są wg mnie te trzy moduły, czyli Spring Core, Spring Web, Spring Data JPA, które są wg rynku pracy najbardziej pożądane. Inne moduły już raczej podchodzą pod to, w jaki sposób firma się profiluje i jakiego rodzaju rozwiązania tworzy. Bo czasami mogą być dodatkowo wymagane systemy kolejkowe, czasami to też jest baza danych nierelacyjna, którą mogą wykorzystywać w swoim projektach, więc głównie to tyczy się tego, jakie firma ma zapotrzebowanie.

Natomiast z punktu widzenia deweloperów, to co odnotowałem na swoich live streamach, to widzę, że najczęściej materiałami, które cieszą się uznaniem, to cały Spring Cloud. Pod Spring Cloud kryje się cały zestaw narzędzi, które służą nam do tworzenia architektury mikroserwisów. I to są np. Discovery Service, Cloud Messaging, Rererse Proxy. To wszystko służy nam do tego, żebyśmy mogli dobrze zaprojektować naszą architekturę mikroserwisów, i w tym działać. Mimo że architektura serwisów nie jest najpopularniejszym konceptem, to mogę powiedzieć jasno, że to jest to, co programistów najbardziej ciekawi. I tak, jak powiedziałem, na swoich live streamach często jestem w stanie odnotować takie picki, jak pół tysiąca programistów, którzy właśnie interesują się tą tematyką.

Oprócz tego bardzo ważnym modułem jest też Spring Security. I to jest na dobrą sprawę moduł, który dostarcza nam szereg narzędzi, które służą nam do zabezpieczania aplikacji i również jest to tematyka, którą warto znać.

Więc to są wg mnie te trzy moduły, czyli Spring Core, Spring Web, Spring Data JPA, które są wg rynku pracy najbardziej pożądane. Inne moduły już raczej podchodzą pod to, w jaki sposób firma się profiluje i jakiego rodzaju rozwiązania tworzy. Bo czasami mogą być dodatkowo wymagane systemy kolejkowe, czasami to też jest baza danych nierelacyjna, którą mogą wykorzystywać w swoim projektach, więc głównie to tyczy się tego, jakie firma ma zapotrzebowanie.

👉 Czytaj dalej na: https://porozmawiajmyoit.pl/poit-169-spring-boot/

--

--

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store