Loading...
Skip to Content

Podcast Better Software Design

O integracji serwisów z użyciem kontraktów z Jackiem Milewskim

Odcinek 94, 4 lutego 2025

Tworzenie integracyjnych środowisk testowych w całym przedsiębiorstwie jest powszechną, marnotrawną praktyką, która spowalnia wszystko i wszystkich. Środowiska te niezmiennie stają się cennym zasobem, który jest trudny do odtworzenia i stanowi wąskie gardło rozwoju. Zapewniają również fałszywe poczucie bezpieczeństwa ze względu na nieuniknione rozbieżności w danych i konfiguracji między środowiskami.

Brzmi ostro lub może także nawet znajomo? Ale właśnie w taki sposób duże środowiska integracyjne są określane w kolejnych wydaniach Technology Radaru Thoughtworks i to od 2017 roku! O rok dłużej, bo od 2016 raport ten sugeruje także wdrażanie testów kontraktowych jako jedno z możliwych rozwiązań tego problemu.

Temat samych testów kontraktowych pojawił się już w podkaście, w odcinku O testowaniu kontraktowym z Rafałem Maciakiem. W dzisiejszej rozmowie, wraz z Jackiem Milewskim, uzupełniamy to podejście o aspekty praktyczne, aby zabezpieczanie komunikacji pomiędzy serwisami nie stało się szybko długiem technicznym, którego utrzymanie będzie kosztować wszystkie zespoły czas i niepotrzebne nerwy.

Ostatecznie, kontrakt powinien zabezpieczać tylko i wyłącznie aspekty komunikacji między usługami, a nie weryfikować przykładowo działanie ich logiki walidacyjnej, biznesowej czy nawet procesowej, jak to niestety czasem bywa w projektach.

W tym odcinku usłyszysz m.in. o:

  • odchodzeniu od rozbudowanych środowisk testowych
  • zakresie testów kontraktowych, zarówno po stronie consumera, jak i providera API
  • różnicach pomiędzy stosowaniem kontraktów, a użyciem np. WireMocka w testach
  • lokalizacji testów w pipeline CI/CD
  • zarządzaniu stanem providera, także w środowisku z wieloma consumerami
  • ewolucji API i zachowaniu kompatybilności wstecznej, nawet przy usuwaniu pól
  • dobrych praktykach implementacji testów kontraktowych

Materiały dodatkowe

Cytat odcinka

Provider nie gwarantuje, a consumer nie oczekuje niczego więcej, niż jest zapisane w kontrakcie

Ten podcast jest dostępny na platformach


Podcast Better Software Design

Warto także posłuchać...

Jakub Nabrdalik

O architekturze mikroserwisowej z Kubą Nabrdalikiem

Bez dwóch zdań architektura mikroserwisowa jest złożona i trudna w implementacji, a jednocześnie bardzo często...
Odcinek 13
Tomasz Ducin

Backend vs Frontend: skuteczne testowanie zachowań, unity i integracja

W pierwszym odcinku w 2025 roku zapraszam na pierwszą odsłonę Backend vs Frontend, gdzie wspólnie z Tomkiem...
Odcinek 93
Rafał Maciak

O testowaniu kontraktowym z Rafałem Maciakiem

Projektowanie systemu rozproszonego, opartego np. o architekturę mikroserwisową, zwykle nie jest trywialne....
Odcinek 58

Potrzebujesz wsparcia w poprawie jakości projektu, architektury lub zwiększenia umiejętności w zespole?