Z jakich narzędzi i technologii korzysta programista
Dzisiaj przedstawię Ci kolejną część z narzędzi i technologii dla programisty. Jeśli nie czytałeś poprzedniego artykułu to zapraszam tutaj.
Tym razem będą to narzędzia i technologie bardziej wymagające. O każdej z nich można by napisać serię artykułów i stworzyć kurs. Natomiast ten wpis ma na celu tylko ich przedstawienie. Tak żebyś wiedział, że takie rzeczy istnieją i jak będziesz miał trochę czasu to warto się ich nauczyć. Jeśli jesteś osobą początkującą to warto chociaż kojarzyć te nazwy i wiedzieć do czego służą w razie sytuacji, gdybyś musiał rozwiązać jakieś zadanie lub problem, a na przykład dobrym rozwiązaniem byłoby użycie któregoś z tych narzędzi.
Kafka
Kafka jest to tak zwany Message Broker. Odpowiada za odbieranie, walidację i rozsyłanie komunikatów pomiędzy aplikacjami. Podobne narzędzie omawiałem w poprzednim wpisie – RabbitMQ. Nie będę opisywał różnic między nimi, chciałem tylko zaznaczyć, że na rynku istnieje wiele podobnych rozwiązań i często może być tak, że każde z nich jest wykorzystywane do konkretnych celów i zadań.
Dużą zaletą tego narzędzia jest środowisko rozproszone. Kafka jest uruchamiana na wielu serwerach przez co dane/komunikaty są przechowywane i replikowane na wielu maszynach.
Jenkins
Jenkins to jeden z najbardziej znanych narzędzi Continuous Integration i Continuous Delivery (CI/CD). Pozwala na pełną automatyzacje procesów takich jak:
- Skompilowanie całego projektu
- Wykonywanie testów jednostkowych czy integracyjnych
- Budowanie aplikacji
- Wdrażanie aplikacji na produkcję
W takim uproszczeniu chodzi o to, że jak mamy aplikację napisaną np. w Springu i mamy już ją wystawioną na produkcyjnym serwerze. Dochodzi to sytuacji, w której musimy coś w niej zmienić (a dość często ma to miejsce). Poprawiamy nasz kod i wrzucamy naszego brancha ze zmianami do repozytorium GITa. Następnie te zmiany trafiają do mastera i potem trzeba to przetestować, a następnie wrzucić na serwer. Możemy to zrobić ręcznie (czynności, które powyżej wypisałem w punktach) lub zautomatyzować ten proces. Chyba nie muszę odpowiadać, która opcja jest lepsza 🙂
Redis
Redis jest bazą danych NoSQL typu klucz – wartość. Zasadniczą różnicą między klasyczną bazą danych NoSQL, dane tutaj przechowywane są w pamięci RAM co czyni ją bardzo wydajną, natomiast dane są ulotne tzn. w przypadku awarii serwera, możemy utracić dane. Przez co często jest wykorzystywana do tworzenia pamięci podręcznej (ang. cache) w aplikacji.
Chmury obliczeniowe
Chmura obliczeniowa to model dostarczania zasobów komputerowych, takich jak serwery, pamięć, bazy danych, sieci, oprogramowanie itp., za pośrednictwem Internetu.
Na rynku obecnie mamy 3 liderów: Amazon Web Services, Google Cloud Platform i Microsoft Azure. Jeśli planujesz naukę chmur obliczeniowych to na start wybrałbym któregoś z tych dostawców. Poniżej krótko scharakteryzowałem każdą z platform.
Amazon Web Services (AWS)
Jest jednym z najwcześniej utworzonych i obecnie najpopularniejszym systemem chmurowym na rynku. Platforma AWS jest systemem uniwersalnym łączącym szereg usług wraz z ogromną liczba dostępnych API. Dlatego dzięki dużej liczbie dostępnych narzędzi, sporą częścią grupy docelowej są deweloperzy, którym udostępniane usługi pozwalają na ogromne możliwości podczas tworzenia oprogramowania. Cechuje się prostym procesem rejestracji, szybkim wdrażaniem i dostępem do efektywnie nieograniczonej pojemności.
Amazon Web Services będzie dobrym wyborem dla osób, które znają już temat chmur obliczeniowych i mają jasno sprecyzowane oczekiwania. AWS ma również najbardziej rozbudowane usługi w swojej ofercie.
Amazon Web Services – Oficjalna strona.
Google Cloud Platform (GCP)
Google Cloud Platform wprowadza szeroką gamę rozwiązań w zakresie zasobów obliczeniowych, magazynowaniu danych czy sieci. Platforma również udostępnia własny interfejs API, z którego korzystają miliony deweloperów w codziennej pracy nad systemami informatycznymi. Początkowo chmura nazywała się Google App Engine, natomiast po wprowadzeniu coraz to nowszych rozwiązań i usług postanowiono zmienić nazwę na obecną. Cechuje się łatwym sposobem migrowania do chmur obliczeniowych oraz wysoką skalowalnością.
Google Cloud Platform udostępnia usługi w prosty sposób. Konfigurację parametrów jest ograniczona do koniecznego minimum, co pozwala na szybkie wdrożenie danej usługi. GCP jest dobrym wyborem dla osób, które dopiero zaczynają przygodę z chmurami i chciałyby przetestować ich działanie.
Google Cloud Platform – Oficjalna strona.
Microsoft Azure
Microsoft Azure jest dynamicznie rozwijającym się zestawem usług w chmurze. Jest jednym z liderów chmur obliczeniowych na rynku, stale rozwijającą się o nowe zasoby i usługi. Platforma ta pozwala na swobodne tworzenie, zarządzanie i wdrażanie aplikacji przy użyciu wielu dostępnych narzędzi oraz optymalizować koszty.
Jeśli nie potrafisz określić swoich zamiarów wobec chmur obliczeniowych, to warto zastanowić się nad Microsoft Azure. Platforma ta jest czymś pomiędzy dwoma powyższymi. Ma mniej skomplikowane usługi niż AWS, ale natomiast bardziej niż te oferowane przez GCP.
Microsoft Azure – Oficjalna strona.
ElasticStack
ElasticStack jest to rozwiązanie służące do zbierania i analizowania dużych ilości danych. Składa się z zestawu narzędzi, które pozwalają na pobieranie, przetwarzanie czy magazynowanie danych.
Elasticsearch
ElasticSearch jest główną częścią całego pakietu. Stanowi magazyn danych (dokumentów). Posiada niezbędne funkcję do wyszukiwania danych z użyciem RESTa opartą na Apache Lucene. Umożliwia wyszukiwanie i indeksowanie dokumentów w różnych formatach.
Kibana
Kibana to narzędzie webowe z interfejsem graficznym do analizy i wizualizacji danych. Pozwala na generowanie wykresów, przeglądanie i analizowanie danych przechowywanych w ElasticSearchu.
Logstash
Logstash jest narzędziem odpowiedzialnym za agregację danych z różnych źródeł, przetwarzaniu ich i na końcu przesyłaniu przefiltrowanych danych do ElasticSearcha.
Beats
Beats odpowiada za zbieranie danych i gromadzeniu ich w ElasticSearchu. Jeśli chcemy dane najpierw jakoś przekształcić lub przeanalizować to wysyłamy do Logstasha.
Apache Camel
Na koniec zostawiłem takie dość opcjonalne narzędzie Apache Camel. Jest to biblioteka do Javy, która pozwala nam wystawiać asynchroniczne usługi, która mogą nasłuchiwać na jakąś inną usługę/narzędzie lub wystawiać własne usługi. Poniżej kilka przykładów z czym można zintegrować:
- Mamy wystawionego Message Brokera i chcemy zrobić nasłuch na niego, żeby pobierał z niego nowe wiadomości.
- Chcemy wystawić lub uderzyć na usługę REST lub SOAP.
- Chcemy zrobić nasłuch na jakiś folder w naszym lub zewnętrznym systemie.
- Nadaje się również w sytuacji, gdy chcemy stworzyć metodę, która ma się odpalać co określony czas.
Oczywiście jest to tylko kilka przykładów do czego możemy wykorzystać tę bibliotekę. W dokumentacji jest pokazanych dziesiątki integracji z Apache Camelem.
Duża zaletą tej biblioteki jest jej prostota. Nie ważne jaka jest to integracja, prawie wszystkie z nich tworzy się tak samo. Wystarczy wejść do dokumentacji, wyszukać interesujący nas komponent, uzupełnić odpowiednie konfiguracje w kodzie (tak naprawdę jest to tylko jeden string) i gotowe.
Apache Camel – Oficjalna dokumentacja
Podsumowanie
To byłoby na tyle w dzisiejszym artykule na temat narzędzi i technologii dla programisty. Oczywiście nie są to wszystkie jakie występują na rynku, natomiast jest to kilkanaście najpopularniejszych. Tak jak wspomniałem we wstępie, na początek wystarczy jak będziesz kojarzył ich nazwy i wiedział do czego służą. Będąc na początku drogi do zostania programistą, lepiej będzie czas poświęcić na doskonalenie swoich umiejętności z programowania np. tworząc projekt do swojego portfolio programisty.