fbpx

7 GRZECHÓW ARCHITEKTURY MONOLITYCZNEJ

W inżynierii oprogramowania monolitem nazywamy aplikację, która ma strukturę jednowarstwową lub gdy interfejs użytkownika i warstwa dostępu do danych są połączone w jeden moduł programu. Taka aplikacja jest niezależna od innych komponentów, nie wymienia żadnych danych i nie potrzebuje innych systemów do działania. 

Grzech 1

Utrapienie we wdrożeniu

Szybkość jest kluczowym czynnikiem, na jaki zwracamy uwagę w kontekście działania systemów informatycznych. 

Im większa jest aplikacja, tym więcej czasu potrzeba na wdrożenie i uruchomienie jej. Ma to ogromny wpływ na produktywność programisty pod względem czasu oczekiwania na wystartowanie kontenerów. Wpływa to również na czas wdrażania oraz liczbę potencjalnych błędów, jakie wyjdą w środowisku produkcyjnym.

Grzech 2 

Trudności w skalowaniu aplikacji

Ta architektura może być skalowana tylko wertykalnie, poprzez dokładanie zasobów serwera. Takie mikroserwisy, przy rosnącym wolumenie transakcji, możemy skalować poprzez uruchomienie większej liczby instancji aplikacji. W chmurze możemy nawet dynamicznie zmieniać liczbę instancji serwisu na podstawie obciążenia. Dodatkowo w przypadku architektury monolitycznej nic nie poradzimy przy rosnącej ilości danych, nawet skalowanie zasobów ma swoje granice sprzętowe.

Grzech 3

Różnych elementów aplikacji nie można skalować niezależnie

Na różnych poziomach zastosowania, komponenty mają różnorodne wymagania. Jedne mogą wymagać dużej ilości pamięci, podczas gdy inne będą miały zapotrzebowanie na dużą moc obliczeniową. Nie mamy innej możliwości, jak dodawać zasoby do całego systemu. Dodatkowo pojedynczy punkt awarii może zakłócić całą funkcjonalność aplikacji monolitycznej.

7 GRZECHÓW ARCHITEKTURY MONOLITYCZNEJ

Grzech 4

Wysoki próg wejścia w rozwój systemu

Podczas pracy nad monolitem ilość linii kodu implementacji przeraża nowych programistów. Ta architektura okazuje się trudna do zrozumienia, a także do zmiany. Proces programowania jest spowolniony, ponieważ nie ma wyznaczonych granic odpowiedzialności modułów. To sprawia, że ​​takim oprogramowaniu trudno wprowadza się wymagane zmiany i ciężko utrzymać zadowalającą jakości kodu.

Grzech 5

Trudności w ciągłym dostarczaniu (continuous delivery) systemu

Częste wdrożenia stanowią wyzwanie dla dużych aplikacji monolitycznych. Jeżeli chcesz zaktualizować komponent architektury monolitycznej, musisz ponownie wdrożyć całą aplikację. Powoduje to problemy, ponieważ przerywa wszystkie zadania bieżące, niezależnie od tego, czy zmiana wpłynęła na nie, czy też nie.

Istnieje również możliwość, że niezaktualizowany moduł nie zadziała poprawnie, jeśli nie został dostosowany do reszty systemu. W rezultacie zwiększa się zagrożenie związane z ponownym wdrożeniem, co zniechęca do regularnych aktualizacji. Jest to szczególnie problematyczne przy szybko zmieniających się wymaganiach biznesowych. W większości przypadków użytkownicy potrzebują szybkich zmian i co wymusza częste wdrażania całego środowiska.

Grzech 6

Przeszkoda w skalowaniu rozwoju

Architektura monolityczna jest jednym z najstarszych podejść projektowych. Główną jej wadą są ograniczenia w zakresie skalowania rozwoju. Jednym z wyzwań realizowanych w tej architekturze jest niezdolność do samodzielnego wdrażania nowych wymagań biznesowych dla różnych modułów, np. zespół ds. zasobów i zespół księgowy nie mogą rozwijać aplikacji osobno. Podział ten jest możliwy dla innych architektur, które umożliwiają rozdział obszarów funkcjonalnych. W przypadku monolitu wszystkie zespoły muszą koordynować swoje plany rozwojowe i wdrożeniowe, aby osiągnąć sukces. Utrapieniem tego jest zawikłana aktualizacja systemu i zmiany na produkcji.

Grzech 7

Długoterminowe zaangażowania w stos technologiczny

Architektura monolityczna sprawia, że programiści biorą “ślub” z określoną wersją stosu technologicznego. Technologię wybiera się w początkowej fazie projektu i decyzja ta jest wiążąca i kłopotliwa do zmiany. Utrudnia to programistom stopniowe wdrażanie nowych technologii, które powstają po starcie projektu. Niektóre biblioteki nie będą dobrze działać w innych wersjach, dlatego w przypadku ich przestarzałości oznacza to konieczność przepisania innych modułów aplikacji. Jest to przedsięwzięcie wysoce ryzykowne i wymaga ponownych testów całości.

Podsumowując, architektura monolityczna przy dużych systemach informatycznych sprawia, że stają się one nieelastyczna, kosztowne i trudno programistom czerpać przyjemność z pracy nad takim oprogramowaniem.

Szafrański Michał
Jako Architekt IT, nie tylko projektuję systemy informatyczne, ale również moje życie jest zaprojektowane w taki sposób, aby działać jak dobrze zaprojektowany system - jestem zawsze gotowy na wszelkie wyzwania i problemy. Podobnie jak każdy system, który projektuję, staram się być skalowalny i elastyczny, a czasem trudno przewidzieć, kiedy potrzebna będzie aktualizacja. Często słyszę pytanie: "Kiedy zostanie wydany update twojego życia?" A ja odpowiadam: "Kiedyś, ale zanim to nastąpi, muszę zebrać więcej danych i przeprowadzić odpowiednie testy." Moje życie to nie tylko kodowanie i projektowanie, ale również ciągłe doskonalenie i uczenie się nowych technologii. Nieustannie próbuję wprowadzać ulepszenia, zarówno w moim życiu osobistym, jak i zawodowym. A jeśli coś nie działa, nie boję się eksperymentować i próbować różnych rozwiązań, aby znaleźć najlepsze rozwiązanie. Nie jestem tylko architektem IT - jestem również architektem swojego życia, zaprojektowanym w taki sposób, aby działał jak dobrze zaprojektowany system.

Leave a Reply Text