Elżbieta Kowalczyk
Commerzbank - Centrum Technologii Cyfrowych w Polsce
Elżbieta KowalczykChapter Lead, Digital Architecture @ Commerzbank - Centrum Technologii Cyfrowych w Polsce

Co to jest architektura spaghetti?

Uwaga: Jak jesteś głodny/głodna, to uważaj, jak to czytasz ?
6.12.20213 min
Co to jest architektura spaghetti?

W pierwszym skojarzeniu makaron i architektura mogą nie mieć ze sobą nic wspólnego. Jak spojrzymy bliżej, to włoskie dania są doskonałą metaforą, która wyjaśnia ewolucję architektury korporacyjnej. Istnieje ponad 300 odmian makaronów, a tak naprawdę jest ich tyle, ile wymyślą kucharze/kucharki. Ich nazwy najczęściej wywodzą się od wyglądu makaronu. Spaghetti to sznureczki, lasagne to garnek a ravioli to haczyki.


1990 - Architektura zorientowana na spaghetti (kopiowanie i wklejanie) lat 90.

Wzór spaghetti jest antywzorem, ponieważ nie ma prostej jasnej struktury - nie wiadomo, co jest początkiem, a co końcem i jak to się wszystko zaczęło. Całość jest poplątana, nie widać logiki, przepływu informacji. Elementy te nie są wykorzystywane ponownie i trudno jest dodać do nich kolejne części lub poprawić ich jakość.

Niemniej jednak popularność tego wzoru w przeszłości mogła wyniknąć ze stosunkowo szybkiego i łatwego wdrożenia oraz jest skutkiem kolejnych połączeń systemów lub dodawaniem nowych elementów. Im bardziej ściśle zintegrowane są poszczególne części aplikacji, tym trudniej jest się od siebie wyróżnić. Prowadzi to do powielania rozwiązania i nie wiadomo, czy moduł numer jeden odpowiada za naliczanie odsetek, czy może moduł dwa oraz trzy. Architekt, modernizując taki system, musi „zajrzeć” i zrozumieć logikę poszczególnych elementów, połączyć je ze sobą i uprościć. Jest to syzyfowa praca detektywa. 

2000 Architektura zorientowana na lasagne (warstwowa monolitowa)

Odnosi się to do rozdzielenia między komponentami, takie jak oddzielenie interfejsu użytkownika od logiki biznesowej i oddzielenie logiki biznesowej od bazy danych. Zwiększa to elastyczność i skalowalność oraz zwiększa możliwość ponownego użycia komponentów przez wiele aplikacji. Znana również jako klasyczna trójwarstwowa architektura składająca się z warstwy prezentacji, biznesowej i warstwy danych.

Z punktu widzenia użytkownika od razu można zrozumieć logikę, łatwiej tez narysować diagram oraz kolejny ze szczegółami tego, jak są połączone warstwy (jak odbywa się komunikacja). Warstwowa struktura może być też zbyt przerośnięta i jeżeli wprowadza się zmianę w jednym składniku, to trzeba wszystko przetestować całą platformę, a przecież zmiana miała być w jednej warstwie, np. poprzez dodanie do istniejącej warstwy nowego providera płatności.

2010 Architektura zorientowana na ravioli (mirkoserwisy/mikrouslugi) 

Pojęcie mikroserwisów polega na rozbiciu aplikacji na ich najmniejsze części, niezależne od siebie, czyli jedna wykonuje naliczanie odsetek, druga wykonuje wcześniejszą spłatę kredytu, trzecia zajmuje się wyliczaniem zdolności kredytowej. Zamiast jednego elementu odpowiedzialnego za proces udzielenia kredytu od A do Z, taki system jest rozbity nawet na 70 mikroserwisów. Czy to dobrze, czy to źle - zależy. Mikroserwisy są odrębne, tzn. są małą aplikacją z własną architekturą, logiką biznesową i różnymi adapterami, jednak współpracują ze sobą.

Takie podejście do tworzenia oprogramowania jest "lekkie" i umożliwia współdzielenie podobnych procesów w wielu aplikacjach, np. zgody marketingowe klientów są w jednym mikroserwisie, a pozostałe mikroserwisy mogą z tego korzystać. Przykładem jest system do wysyłania e-maili czy SMS-ów.

W architekturze mikroserwisow kluczowa jest współpraca zespołów - świadomość kto, co, kiedy wdraża oraz potrzebna jest automatyzacja wdrożenia. 

Podsumowanie

Pytanie, co będzie dalej Architektura jak pizza? Hybrydowa? Wybór co stosować, gdzie pozostawić monolitową architekturę, a gdzie wprowadzać mikroserwisy, jest zależny od korzyści - co ta zmiana przyniesie? Gdzie przyśpieszymy? Gdzie zredukujemy koszty? Jakie będzie doświadczenie klienta? Czy będzie zadowolony i wróci po usługę, bo działa szybko i wygodnie?

Przekładając tę opowieść na język restauracyjny, to wybór miejsca, wybór składników, sposobu podania (domowa czy zamówiona pizza) będzie zależeć co potrzebuje dana firma, na kiedy i jak to się łączy z obecnymi już istniejącymi rozwiązaniami oraz kto tym ma zarządzać, czy wybieram model IAAS, SAAS, PAAS i pytanie od kogo? Po jakiej cenie i czasie. 

<p>Loading...</p>