Spring i co dalej

Nauczyłem się Springa i co dalej? – Vlog 07

Czego uczyć się poza Springiem? W kolejnym już siódmym odcinku vloga opowiadam o technologiach, których warto się uczyć gdy już opanujesz Springa i pisanie aplikacji. Jest bardzo dużo różnych technologi, ale warto wybrać z nich te najważniejsze i te najpopularniejsze. Warto też uczyć się architektury aplikacji, testów jednostkowych, a także technologi, które pomagają w przetwarzaniu dużej ilości danych.

Poniżej znajdziesz link do playlisty z vlogiem:

Mateusz Dąbrowski vlog

 

Vlog w wersji Audio:

 

Inne platformy podcastowe:

https://open.spotify.com/show/5HQFAJg0N4o9mDEze8WVvi?si=cc72277bbd834760

https://podcasts.apple.com/us/podcast/vlog-programistyczny/id1606703834

https://podcastsmanager.google.com/show?hl=pl&show=show:f0FRKrpSJZuEP1UQgm73vw

https://castbox.fm/channel/Vlog-Programistyczny-id4743197?country=us

https://podcastaddict.com/podcast/3783474

 

 

Transkrypcja:

Nauczyłeś się Springa i zastanawiasz się czego powinieneś uczyć się dalej?

O tym właśnie będziemy rozmawiać w dzisiejszym odcinku. Zapraszam

Cześć ja nazywam się Mateusz Dąbrowski i witam Cię w kolejnym vlogu na moim kanale.

Dzisiaj porozmawiamy o rzeczach, których warto się uczyć, gdy już opanowaliśmy Springa i umiemy już tworzyć podstawowe aplikacje webowe.
Spring i praca z nim nie sprawia już nam problemu, więc teraz czas na zrobienie kroku dalej.

Gdy już umiesz robić aplikacje w Springu, gdy po prostu praca z nim nie sprawia Ci już problemów, gdy umiesz coś zapisać w bazie, odczytać z bazy wystawić jakiś endpoint, to w takiej sytuacji pierwszą rzeczą, której warto się nauczyć jest rest api.

Rest api i to jak takie api tworzymy, albo jak powinniśmy tworzyć takie api.

I na moim kanale znajdziesz w kursie spring boota odcinek, który jest poświęcony tworzeniu rest api.

Zresztą cały kurs spring boota jest o tym, jak tworzyć usługi, jak tworzyć rest api.

I tutaj gdzieś podlinkuję ten odcinek z kursu spring boota.

Także na moim blogu możesz znaleźć taki podstawowy artykuł

z takimi podstawowymi zasadami jak tworzyć rest api, albo jak powinno się tworzyć rest api.
Link do tego artykułu też znajdziesz w opisie pod tym odcinkiem.

Ja w tym artykule przedstawiam jak powinno się tworzyć endpointy, na co zwrócić uwagę, jakie są poziomy rest api, które możemy osiągnąć i wiele innych, wiec warto uczyć się tego, jak powinno się prawidłowo przede wszystkim tworzyć takie rest api.

Dzisiaj większość aplikacji tworzonych w Springu, to są po prostu usługi restowe.

Ten model, który kiedyś dominował, że tworzyliśmy sobie frontend na backendzie, np. korzystając z Thymeleafa on już powoli odchodzi i teraz w zasadzie większość projektów, skupia się na tym, żeby wystawić usługi i wystawić te usługi jak najlepiej.

Żeby one były i zgodne ze standardami, które gdzieś tam można znaleźć w internecie i też wygodne w użyciu, więc warto zainteresować się głębiej tematem rest api

Ja też mam w planach taki odcinek bardziej kompleksowy poświęcony rest api, nie wiem kiedy go nagram, ale myślę, że niedługo już powinien się pojawić.

Więc rest api jest takim jednym z podstawowych tematów, które warto zgłębić, które warto mieć opanowane dosyć dobrze, bo po prostu większość projektów tego wymaga

I im to rest api robimy lepiej, tym łatwiej się z nim pracuje nam, czy innym osobom, które korzystają z naszego api.

Kolejnym takim bardzo ważnym tematem jest architektura aplikacji.

Architektura aplikacji, czyli mówiąc inaczej:
Dlaczego pewne rzeczy robimy w ten sposób, albo dlaczego pewne rzeczy powinniśmy robić w ten konkretny sposób, a nie w inny

I architektura aplikacji pozwala, albo wiedza z tej architektury, albo z różnych architektur, pozwala po prostu sprawniej pracować i pozwala też poczuć się pewniej, bo gdy już opanuję pewne rzeczy, to wiem, że robi się je tak, a nie inaczej.

To w zasadzie, do tego sprowadza się wiedza na temat architektury aplikacji

Dlatego że wiemy jak robić pewne rzeczy w prawidłowy sposób

Jeśli chodzi o architekturę aplikacji, to oczywiście stworzyłem warsztaty, o których też już kiedyś mówiłem.

Nadal będę tworzył kolejne odcinki, na razie jest dwa warsztaty.

Jeden warsztat poświęcony architekturze warstwowej. Drugi warsztat poświęcony architekturze heksagonalnej

I bardzo polecam te warsztaty, jeśli chcesz zgłębić bardziej temat różnych architektur aplikacji.

Linki oczywiście znajdziesz w opisie.

Kolejnym takim bardzo ważnym tematem są bazy danych.

I generalnie kilka lat temu jeszcze bym powiedział, że wystarczy znać jakieś podstawowe bazy sqlowe, np. Mysql, czy Postgresa i to już w dużej mierze załatwia tak jakby sprawę znajomości baz dancyh, bo inne bazy są bardzo podobne, albo mają trochę inne mechanizmy.

Natomiast bardzo te bazy są do siebie zbliżone i tak naprawdę wystarczy nauczyć się jednej bazy sqlowej po to, żeby ogarnąć te inne.

Oczywiście są tam jakieś różnice, ale tak naprawdę cały core jest bardzo podobny

Natomiast dzisiaj sytuacja trochę się zmienia. Są też inne bazy nie sqlowe, czyli nosql

Bardzo popularne jest Mongodb, z którego ja osobiście bardzo często korzystam.

W zasadzie wszystkie projekty jakieś takie wewnętrzne na swoje potrzeby, wszystkie projekty już od naprawdę bardzo wielu lat robię tylko i wyłącznie na Mongodb.

Z racji tego, że w zasadzie tam, gdzie nie potrzebuję jakichś relacji, czy stricte bazy relacyjnej to po prostu używam Mongodb

Mongodb nie jest bazą relacyjną, więc nie muszę się martwić o relacje

Mogę je rozbić w dosyć taki dowolny sposób i Mongodb ma taką też fajną zaletę, że nie trzeba definiować schematu bazy danych.

Więc to też bardzo upraszcza tak jakby pracę w tych mniejszych projektach

Natomiast tak baza to jest tak naprawdę normalna baza, pracuje ona trochę inaczej, niż baza sqlowa, pod spodem jest trochę inaczej też zaimplementowana

Natomiast daje też tę podstawową funkcję baz danych, czyli pozwala nam zapisywać dane tak jak każda inna baza.

Przy czym Mongo jest tak jakby trochę prostsza. I właściwie można w bardzo prosty sposób, używać tej bazy w Springu.

Wystarczy dodać odpowiednią zależność i już możemy korzystać z tej bazy danych. Więc poza jakąś baza sqlową typu Mysql czy Postgres, warto też znać bazę Mongodb, ze względu na to, że jest ona bardzo popularna, jest to baza dokumentowa i pozwala w łatwiejszy trochę sposób zapisywać dane, chociażby przez to, że nie musimy definiować sztywno schematu bazy danych.

Kolejną taką bazą, której możemy potrzebować, która może się nam przydać, np. do zapisu bardzo dużej ilości płaskich danych, np. jakichś odczytów z czujników, czy coś w tym stylu. I jest to baza Cassandra.

Cassandra jest to baza kolumnowa, która ma to do siebie, że bardzo szybko odczytuje dane, więc jeśli mamy dość dużą ilość płaskich danych to warto je zapisywać w Casandrze.

Zwłaszcza jeśli one się nie zmieniają i wtedy mamy dużo szybszy dostęp do tych danych i możemy przez to łatwo z nich korzystać.

Kolejnym takim tematem też związanym z danymi, są różnego rodzaju wyszukiwarki danych.

Często jednym z takich wielu ficzerów w projekcie jest jakaś wyszukiwarka i w wielu projektach, te wyszukiwarki bardzo często się pojawiają. I tutaj warto znać, chociażby taką technologię jak
Elastic Search, albo tożsame do tej technologi.

Natomiast sam Elastic Search jest to, już taki bardzo duży kombajn, który wymaga osobnego serwera zwykle, gdzie możemy go zainstalować i możemy po prostu tam trzymać też dane.

Elastic Search też w sumie jest bazą danych.

Natomiast bardzo specyficzną, która służy do indeksowania i wyszukiwania bardzo szybkiego danych.

Natomiast sam Elastic search jest zbudowany też na bazie takiego narzędzia jak Apache Lucene.

I Lucene jest to taka biblioteka, która pozwala w prosty sposób nam tworzyć indeksy do wyszukiwania i wyszukiwać po nich.

Więc jeśli potrzebujecie w projekcie jakiejś wyszukiwarki, to warto ją zrobić na Apache Lucene Jeśli jest to taki mały projekt, gdzie tych danych nie jest aż tak dużo.

Natomiast jeśli macie już więcej danych, to warto zainteresować się Elastic Searchem, tak żeby bardziej efektywnie korzystać z wyszukiwania po dużych zbiorach danych

Kolejny taki temat, którym warto się zainteresować, to przetwarzanie danych i BigData.

W zasadzie wszystko, o czym tutaj mówię, to w zasadzie praca z danymi i obróbka tych danych i tak samo też jest z przetwarzaniem danych.

Często się dziej tak, że mamy jakieś dane i cyklicznie musimy je w jakiś sposób przetwarzać, niekoniecznie to muszą być duże zbiory danych, ale często w jakiś projektach webowych nawet, są jakieś zadania, czy tak zwane joby, które przetwarzają cyklicznie jakieś dane, agregują albo przeliczają je w jakiś sposób, albo nawet tworzą jakieś raporty, więc wato ogólnie zainteresować się przetwarzaniem danych i BigData.

Do Bigdata mamy takie narzędzia jak np. Apache Spark, który pozwala przetwarzać tzw. microbatche.

I przetwarzać też bardzo duże ilości danych. Warto też zainteresować się tutaj takim projektem jak Spring Batch, o którym kiedyś pisałem na swoim blogu.

Też linka znajdziesz w opisie do tego artykułu. TUTAJ

I Spring Batch pozwala na tworzenie różnych jobów, które wykonują różne zadania, albo przetwarzają dane, albo robią jakieś inne rzeczy, więc warto się też tym tematem zainteresować

I gdybym ten filmik nagrywał jakieś rok albio dwa lata temu, to w zasadzie chyba skończyłbym w tym momencie

Natomiast, wszystko w IT się zmienia dosyć dynamicznie, wszystko generalnie na całym świecie zmienia się dosyć dynamicznie i dzisiaj widzę takie projekty, które powstają coraz częściej

Projekty, które są związane ze sztuczną inteligencją, która też w zasadzie wymaga przetwarzania danych

Wymagają przygotowani odpowiedniego danych, więc też tutaj są różne projekty i często jest tak, że te projekty związane ze sztuczną inteligencją nie koniecznie używają jeżyka Java, bo np. w sztucznej inteligencji o wiele bardziej popularny jest język Python i głównie tego języka się używa.

Natomiast to nie znaczy, że tych projektów nie robi się w Javie.

Często z pewnych względów po prostu nie korzysta się z innego języka, tylko np. korzysta się z języka, którego używa się w danym projekcie, np. piszemy projekt w Javie, to robimy inne rzeczy też w Javie.

Bo programiści często nie chcą wchodzić w inne języki, nie chcą ich używać.

Często też, menagerowaie po prostu decydują, że

„Ok możemy zrobić jakiś projekt ze sztucznej inteligencji, ale zróbmy to w Javie, bo wszystko robimy w Javie”

i nie chcą wchodzić inne języki inne technologie związane z tymi językami, no ale np. potrzebują coś zrobić, czy to z przetwarzaniem danych z machine learningiem, czy ze sztuczną inteligencją

Kolejna taka rzecz, która też mocno zaczyna istnieć na rynku, którą coraz bardziej ja np. widzę w ostatnich, może nie latach, ale w ostatnich miesiącach.

Widzę projekty związane z blockchainem i nie chodzi tutaj tylko o projekty, tylko stricte związane z kryptowalutami, ale projekty związane z blockchainem i z tym co jest dookoła niego.

Wiele projektów, które powstały w ostatnich latach, wymagają dodatkowej pracy.

Dodatkowych aplikacji i często te aplikacje wokół blockchaina można robić w róźnych technologiach.

Albo w Pythonie albo w Javie i są to po prostu aplikacje webowe też często, albo aplikacje mobilne, aplikacje hybrydowe i wiele takich projektów ostatnio powstaje na całym świecie i widzę, że powstają całe ekosystemy dookoła niektórych, blockchainów, np.dookoła Etherium, czy dookoła Terra Luny, czy też sieci Cardano

Jest tego naprawdę sporo i coraz częściej widzę tez ogłoszenia o pracę, gdzie są potrzebni developerzy i blockchaina i developerzy aplikacji, które są związane w jakiś sposób z blockchainem.

Myślę, że to jest taki trend, który coraz bardziej widać i być może ten trend może zmienić całą branżę IT, bo tak jak mówiłem jeszcze kilka lat temu, to w zasadzie były jakieś aplikacje, aplikacje webowe, aplikacje mobilne i w zasadzie niewiele więcej się działo, było to dosyć stałe.

Ja przez kilkanaście lat w zasadzie robiłem aplikacje webowe, jakieś aplikacje, które przetwarzają dane, gdzieś tam offline’owo i w zasadzie nie wiele więcej przez te kilkanaście lat się zmieniało.

Natomiast ostatnio właśnie widzę duży trend na aplikacje związane z różnego rodzaju blockchainami, więc warto się też, tym zainteresować.

I tak samo mogą to być aplikacje webowe, ale tak jakby bazą danych, nie będzie już tutaj baza sqlowa, czy jakaś inna baza tylko bazą danych, będzie blockchain i trzeba będzie odczytywać dane z blockchainu i wyświetlać po prostu w aplikacji webowej.

Wiec tak to mniej więcej moim zadaniem wygląda. I wiele z tych projektów może oczywiście powstawać w Javie, nawet z użyciem Spring, czy bardzo popularnych narzędzi Javowych. I też większość z tych projektów, będzie np. korzystało z rest api, czyli to o czym mówiłem też w tym odcinku.

I warto też zainteresować się tematem tych nowych technologii: sztucznej inteligencji, machine learningu, czy nawet blockchainem, bo myślę, że w najbliższych latach, znaczenie tych wszystkich rzeczy będzie znacznie rosło.

I to już wszystko w tym odcinku. Mam nadzieję, że Ci się spodobał.

Jak zwykle zachęcam do subskrybowania, mojego kanału,
zostawienia łapki w górę.

Ewentualnie podzielenia się swoją opinią w komentarzu.
Napisz mi, co myślisz o tych nowych technologiach, blockchainie.

Czy blockchain zdominuje rynek IT w najbliższych latach,
a może jakaś inna nowa technologia, której ja nie zauważam, a ty np. się interesujesz.

Dzięki i do zobaczenia w następnym odcinku.

Cześć.

Mateusz Dąbrowski

Cześć jestem Mateusz, zajmuję się programowaniem już ponad 12 lat z czego ponad 8 programuję w Javie. Zapraszam Cię do lektury mojego bloga. Możesz przeczytać więcej o mnie >>TUTAJ<<