Cześć,
w pracy dyskutowaliśmy, sprzeczaliśmy się na temat wykorzystywania wzorców, praktyk, które pomagają obsługiwać sytuacje nieprzewidzianych warunków, wyjątków, błędów w kontekście zewnętrznych integracji głównie REST, Rabbit Pub/Sub, Rabbit RPC. w zależności od sytuacji w postaci retry, timeout, circuit breaker pattern, których jestem nie ukrywam dużym zwolenikiem. Natomiast koledzy zespołu nie bardzo, dodam, że mam niespełna dwa lata doświdczenia w jednym projekcie, koledzy +10.
Dziś zostałem przegłosowany, a argumenty wyglądały w następujący sposób (Z - Zespół, J - Moja osoba) w kontekście Rabbita RPC, polityki Retry, opakowującej wszystkie tzw. Call RPC.
Rozmowa wygląda w ten sposób:
Z - Polityka jest za bardzo generyczna, Co gdybym nie chciał w innej integracji wykorzystującej RPC, polityka będzie nadmiarowa.
J - Bez problemów możemy wykorzystać strategie, które per dziedzina integracji będzie przygtowywać odpowiednią politykę z inną ilością prób ponowienia, konfiguracji etc.
Z - Dla mnie ten kod jest nadmiarowy, dopóki nie będzie takich problemów z konkretną integracją, nie powiniśmy pisać kodu na przyszłość.
J - Na tym polega, wykorzystywanie wzorców pomagając budować systemu odporne na błędy, by być wcześniej przygotowanym a napisanie polityki z wkorzystaniem dzisiejszych bibliotek z testami to godzina pracy. Pasuje to do metafory "zapnę pasy dopiero, jak się rozbije", dlatego też widzę pozytywy w stosowaniu takich mechanizmów.
Z - Z mojego doświadczenia to historycznie wszelkie mechanizmy nie działały, nie sprawdzały się, zawsze błędy zaskakiwały nas przypadki, które ciężko było przewidzieć.
J - W systemie nie wykorzystujemy powyższych mechanizmów, dla mnie dopóki z nich nie skorzystamy, z mojej perspektywy na pewno mogą pomóc, nie zaszkodzić.
W tym tonie przeszła cała dyskusja. Koniec końców zmusili mnie do usunięcia kodu.
A jaka jest Wasza opinia z korzystania powyższych praktyk w systemach monolitycznych, przy zewnętrznych integracjach ?