Java Developer? Przejdź na wyższy poziom wiedzy 🔥💪  Sprawdź

Team Leader? Podnieś efektywność swojego zespołu 👌 Sprawdź

Schema Registry w Apache Kafka

Schema Registry w Apache Kafka

Apache Kafka jest coraz bardziej popularnym brokerem wiadomości. Wystarczy spojrzeć na oferty pracy dla programistów Java, a szybko przekonamy się, że w większości nowoczesnych projektów, w architekturze mikroserwisów jest jakaś forma komunikacji po systemie kolejkowym. Bardzo prawdopodobne, że będzie to właśnie Apache Kafka.

7 sposobów na przyspieszenie Twoich testów w Spring

7 sposobów na przyspieszenie Twoich testów w Spring

Co powoduje, że testy w Spring są wolne?

Szybkość wykonywania testów ma kluczowy wpływ na to, jak szybko dostajemy feedback o poprawności wprowadzanej zmiany oraz jak szybko budowany jest projekt. To z kolei może spowolnić testowanie, a nawet wdrażanie w trybie Continuous Deployment.

W tym artykule omówię ogólne podejście do testowania. Podzielę się też najczęstszymi błędami, z którymi spotkałem się w projektach powodujące wolne działanie testów.
Dowiesz się też, co powoduje, że testy w Spring stają się wolne i jak poprawić sytuację w projekcie.

CI/CD i trunk-based development – wdrażaj częściej i szybciej

CI/CD i trunk-based development – wdrażaj częściej i szybciej

Wdrażaj na produkcję kilka razy dziennie za pomocą git’a. Continuous Delivery bez przeszkód.

Zastanawiało Cię kiedyś, które elementy w procesie pisania kodu i współpracy z innymi programistami wpływają na efektywność Twoich działań zmierzających do umieszczenia kodu na produkcji?

Oprócz analizy wymagań, głównym zajęciem programisty jest wytwarzanie kodu i kolaboracja z innymi programistami.

Miejscem tej kolaboracji jest repozytorium kodu w systemie kontroli wersji. To w nim umieszczamy efekt naszej pracy. Tam przeglądamy zmiany innych i łączymy z nimi nasze zmiany.

Na koniec, zmiany te uczestniczą w procesie Contineous Integration (CI), budowane są artefakty wdrożeniowe, a niektóre zwinne zespoły nawet używają procesu Contineous Delivery (CI/CD) do szybkiego i ciągłego wdrażania zmian na środowiska testowe i produkcyjne prosto z pipeline w sposób w pełni zautomatyzowany.

Mikroserwisy: Monitoring, Tracing i Log Aggregation – diagnostyka problemów w środowisku rozproszonym

Mikroserwisy: Monitoring, Tracing i Log Aggregation – diagnostyka problemów w środowisku rozproszonym

Wyobraź sobie, że wystąpił problem w produkcyjnym systemie zbudowanym z sieci rozproszonych mikrousług. Błąd przekazuje zespół, który złożył żądanie do Twojego systemu i operacja zawiodła – obsługa trwała długo, a następnie został zwrócony błąd. Podają requestId oraz szczegóły żądania.

Czy byłbyś w stanie szybko odpowiedzieć, co konkretnie było przyczyną błędu?

W tym wpisie chciałbym poruszyć problematykę Observability (obserwowalności) systemów opartych o architekturę rozproszonych mikrousług. Opowiem o:

  • Log Aggregation, zbieranie logów w środowisku rozproszonym
  • Distributed Tracing, czyli śledzenie konkretnego żądania
  • Monitoring ogólnej kondycji systemu
    • Perspektywa ogólna serwisu
    • Perspektywa szczegółowa instancji
Zasady pisania dobrych testów – F.I.R.S.T. i konkretne techniki żeby je zastosować

Zasady pisania dobrych testów – F.I.R.S.T. i konkretne techniki żeby je zastosować

Istnieją ogólnie przyjęte zasady, które warto stosować podczas pisania testów. Sprawiają, że testy są bardziej użyteczne w Twoim projekcie. Do każdej z tych zasad podam Ci konkretne techniki i wskazówki, aby je spełnić. Zasady mają akronim F.I.R.S.T. i kolejne litery oznaczają:

  • Fast
  • Isolated / Independent
  • Repeatable
  • Self-validating
  • Timely
Assert Object Pattern – wyraź w testach biznesowe znaczenie obiektu

Assert Object Pattern – wyraź w testach biznesowe znaczenie obiektu

Assert Object pattern to bardzo prosty wzorzec stosowany w kodzie testowym sprawiając, że są prostsze i bardziej czytelne. Koncentruje się na fazie sprawdzania obiektów ukrywając złożoność sprawdzenia.

Ideą wzorca Assert Object jest „owinięcie” testowanego obiektu w obiekt Assert i stworzenie metod sprawdzających. Dzięki temu możemy wyrażać biznesowe znaczenie.