Java, spring, docker co dalej?

0

Aktualnie dobijam do 2 lat expa, pracuje głównie w javie, springu (data etc.), spock, troche docker

W co dalej brnąć? Jakieś wskazówki? Może zgłębić temat dockera i nauczyć się kubernetesa?

2

Może zgłębić temat dockera i nauczyć się kubernetesa?

Tak, tak, tak!

1

Duzo ścieżek rozwoju.
Na twoim miejscu poszukałbym dyscypliny w której czuje się dobrze i jest oderwana od konkretnego narzędzia.
Np. Napisałeś docker, a czemu nie konteneryzacja i jej mechanizmy? Docker tam będzie jednym z wyborów - często najlepszym, ale to tylko narzędzie.
To co chce powiedzieć to wejść na ścieżkę całej dyscypliny a nie sama obsługa narzędzia. Narzędzie będzie pochodną.

2

Pytanie co chcesz robić, programować? devopsować? adminować?

Jak chcesz programować to 2 lata expa to jedno wielkie NIC (no ok nie zupełnie NIC, ale to dopiero początek drogi). Jak się czujesz z designem SOLID, GRASP, DDD, ES, KISS i inne akronimy? Czy chciałbyś zostać leaderem? Programowanie funkcyjne i monady? A może sztuczna inteligencja, bo to przecież przyszłość? Czy w końcu lepsze poznanie znienawidzonego Scrum'a i podejść typu EvenStorming (chyba hype już minął) lub pair programming...

Generalnie Java + Spring to taki kropo stack, ani dobry ani zły. Naucz się nieco architektury. Wypróbuj lepszy lub "inny" język (Scala, F#, Haskel???, Prolog). Stwórz prezentacje na tech-talk'a.

Z POV programisty Docker to takie małe narzędzie do pakowania aplikacji. Coś ala komenda jar w latach 90. Są wtyczki do Mavena co automatycznie generują obrazy z aplikacji Spring Boot.

Z drugiej strony dla admina/devops'a Docker to nowa jakość, bo on patrzy nie od strony samego obrazu, ale od strony maszynerii która te obrazy przechowuje, wersjonuje, wykonuje i skaluje. Tam są już kwestie bezpieczeństwa, skalowalności, agregacji i zbierania metryk/logów, oraz elementów nie-efemeralnych typu bazy danych.

Jak pójdziesz w devops'a to obawiam się że szybko ciebie odstawią od programowania i będziesz dzień w dzień pisał YAML'e i kod w Pythonie ew. Go. Brakuje nadal devops'ów na rynku, niewielu programistów chce robić taką pracę (trochę to niesprawiedliwe, ale devops ma opinię "łopaty" i pracy nie-kreatywnej).

0

Ja bym się zaszył w projekcie mimo wszystko jako klepacz kodu i kminił jak organizować kod, architektura, wzorce projektowe, poznać pełno bibliotek które mogą ułatwić życie, sposoby testowania unit/it/e2e. Jak stworzyć np jakiegoś mocka/biblioteki z którego może korzystać pół firmy.
Generalnie szedłbym w temat szlifowania umiejętności jako klepacz. No i najlepiej już iść w najnowszę Javę LTS
Z dockera jakieś podstawy możesz na razie ogarnąć. Kubernetes - na później

0

Właśnie jestem troche zmieszany, zapomniałem dopisać że pracujemy głównie z mikroserwisami, każdy mikroserwis siedzi w kontenerze. Więc mimo wszystko mam do czynienia z sprawdzaniem w nich logów, stanów kontenerów, połączenia z innymi kontenerami w api, czytanie docker compose i ew czasem dopisanie czegoś - no takie podstawy.

Ostatnio gdzieś mi się przewineło sporo wątków czy komentarzy, że dobrze jakby dev też ogarniał sprawy konteneryzacji, może jakieś deploye, a tym samym można by pójść w strone k8s
W sumie ten temat około dockerowy nawet mi się podoba, pamietam że na studiach wolałem robić tematy około sieciowe/adminowe, ale to może wynikało z tego że w ogóle nie ogarniałem kodzenia jeszcze :)

ps. w pierwszej pracy robiłem troche przy angularze i typescrypcie, ale ten temat odrzucam bo front w ogóle mnie nie kręci i troche wymiotuje css'em

1

Kubernetes i Kafka

2

K8s, architektura, szkoła testów, systemy rozproszone , NoSQL

1

A rzuć tą brzydką Javę i naucz się Kotlina czy Scali :p

0

Tą pierwszą tak, ale generalnie od zawsze byłem zwolennikiem tutoriali na jakimś mykongu, beweldungu czy tutoriali video (choć mam u siebie takie pozycje jak efektywne programowanie, refaktoryzacja Martina Fowlera). Sporo ciekawych prelekcji można wyhaczyć na youtubie. Bardzo polecam gościa Victor Rentea - gość w kilku prelekcjach pokazuje jak refaktorować kod, jak działać z legacy, w innych mówi o architekturze przy tym wszystkim z lekką dawką humoru, więc przyjemnie się to ogląda.

Co do zgłebienia tematu dockera i k8s, nie sądzicie że to będzie wybranie ścieżki już raczej devopsa? Chodzi mi o to, czy będę mógł połączyć prace dockera, k8s i kodzenia. Czy to nie jest wybór to albo to ?

2

Devops to nie jest stanowisko tylko metodologia po drugie to nie. Docker to jest dla mnie must have teraz, zwłaszcza z powodu TestContainers.

1

uważasz, że temat javy jako takiej i springa już zdążyłeś wyeksploatować? Wątpię ;)
Rzuć okiem na kwestie związane z np. bezpieczeństwem aplikacji, wydajnością (jvm & algorytmika), architekturą, narzędziami (maven, jenkins), szeroko rozumianym CI/CD, wejdź na wyższy lewej w pisaniu testów itp.

2

Postaw sobie minikube jak chcesz sie bawic w k8s i probuj po kolei uslugi i komunikacje z nimi z Javy. Kafka, Cassandra etc.

0

kilka dni temu znalazłem ciekawy kanał na youtubie, a konkretnie ten kursik:

Babeczka najpierw przedstawia teorie, później wgrywa aplikacje na k8s + zarządzanie nią
Postawiłem sobie właśnie minikube. Pierwsze pody, serwisy, statefull, serwis secret etc już za mną
Ale musze sporo razy to porobić, poeksperymentować aby się z tym zaznajomić

Tak przeglądałem sobie ogłoszenia z ciekawości, to dość często pojawia się ten k8s (choć jakis aws czy gcp chyba częściej jest w nice to have), a sama konteneryzacja to chyba w 80% ogłoszeń jest
Wydaje mi się że stack java,spring,test, bazki, docker + właśnie k8s to może być dobre połączenie

0

A jeszcze zapytam, sporo ogłoszeń dla deva ma info aby dobrze by było ogarniać k8s, ale tak właściwie do czego w praktyce sprowadza się praca przy tym? To nie jest tak, że jeśli raz coś postawimy to już sobie później działa? Ew gdy się coś wywali. Chodzi mi o sytuacje, co taki dev robi przy k8s i jak często musi do tego zaglądać? Jak to jest u Was w pracy?

2

Bardzo duzo zalezy od fimy.

K8S to bardzo rozbudowany system, i najbardziej kuriozalny usecase dla deva to

  • przegladanie logow aplikacji,
  • modyfikowanie deploymentow aby np wstrzyknac nowe zmienne, wydac nowy obraz, zmienic jakas komende.
  • zarzadzanie ingresem do aplikacji...
  • debugowanie dlaczego Twoja apka nie wstaje na klastrze po wydaniu nowej wersji(np brakuje enva, czy cos)

Jesli trafisz na role, gdzie stanowisko jest odpoiwiedzialne za wydawanie aplikacji end to end i tylko dostaniesz klaster od jakiegos opsa, to jestes odpowiedzialny za

  • projektowanie aplikacji,
  • zarzadzanie zasobami dla nich
  • budowanie chartow dla aplikacji
  • deployowanie nowych aplikacji na klastry

@mariusz00 najlepiej przegladnij sobie materialy dla Certified Kubernetes Application Developer, np tu https://www.freecodecamp.org/news/how-to-become-a-certified-kubernetes-application-developer/

1 użytkowników online, w tym zalogowanych: 0, gości: 1