Architecture
Software ArchitectureSystem DesignEngineering IntuitionScalabilityTechnical leadership

Dobra architektura czy przeczucie?

Pracowałem kiedyś przy projekcie, w którym odpowiadałem za workflow, kluczowe procesy i doradztwo w sprawie całej architektury. Od początku coś mi nie grało.

Image

Na papierze wszystko miało sens. Nowoczesny stos. Popularne komponenty. Spójna logika. A jednak gdzieś z tyłu głowy zostawał cichy sygnał: dyskomfort, którego nie umiałem jeszcze zamienić w konkretny argument.

Po sześciu miesiącach wrócili. „Naprawisz aplikację? Pada pod dużym obciążeniem”. Oczywiście powiedziałem: tak!

To umocniło wniosek z lat pracy: dobra architektura rzadko sprowadza się do technicznej poprawności. Musi pasować do skali, wzrostu i przyszłych ograniczeń.

Wybierając biblioteki, frameworki i infrastrukturę, sprawdzasz:

•Czy możemy to zbudować?
•Czy będzie się skalować?
•Czy wytrzyma zakładane obciążenie?
•Czy da się to utrzymywać?
•Czy pasuje do modelu biznesowego?

To warstwa racjonalna. Argumentacja. Czasami jednak wszystkie pola są odhaczone, a coś nadal zgrzyta. To druga warstwa: przeczucie.

Przeczucie nie jest magią. To skompresowane doświadczenie: rozpoznawanie wzorców z dawnych porażek, problemów skali, wąskich gardeł wydajności, systemów przekombinowanych i niedopracowanych oraz incydentów produkcyjnych.

Gdy coś budzi podejrzenia, mózg często już dostrzegł znany wzorzec ryzyka, choć nie potrafisz go nazwać. Nie chodzi o ślepą wiarę w odczucia. Chodzi o pauzę i świadome sprawdzenie:

•Gdzie dokładnie system jest kruchy?
•Który komponent tworzy niepotrzebne sprzężenia?
•Co się stanie, jeśli ruch wzrośnie 10 razy?
•Ile jest tu naprawdę ruchomych części?
•Czy system jest samodzielny, czy zależy od zbyt wielu zewnętrznych trybików?

Bardzo często późniejsza analiza potwierdza to, co przeczucie już podejrzewało.

W architekturze polegam na dwóch narzędziach: argumentacji i intuicji. Osobno są słabe, razem mocne. Argumenty porządkują decyzję. Intuicja podpowiada, gdzie zajrzeć głębiej. Nie ufać przeczuciu to błąd. Ufać mu bez weryfikacji — jeszcze większy.

Ocenę decyzji często sprowadzam do prostej pętli:

•Zbudujemy to? → Tak.
•Komponent utrzyma cały system pod oczekiwanym obciążeniem? → Tak.
•System pozostanie stabilny przy tylu zależnościach? → Nie.
•Co wymienić albo uprościć? → Ten fragment.

Odpowiedzi stają się jaśniejsze, gdy zaczynasz zadawać właściwe pytania.

Decyzje architektoniczne rzadko dotyczą tego, co działa dziś. Dotyczą tego, co przetrwa jutro. Jeśli przeczucie sygnalizuje ryzyko, nie ignoruj go. Zatrzymaj się, zbadaj, zweryfikuj. Często to nie strach. To odzywa się doświadczenie.

Mniej gadania — więcej zysku. Zbudujmy prawdziwy system!

Bezpośrednia inżynieria na poziomie kodu dla operacji, które nie mogą sobie pozwolić na awarie albo agencyjne opóźnienia