Podręcznik
3. Architektury aplikacji internetowych
3.2. Architektura monolityczna
Architektura monolityczna (potocznie: monolit) to jeden z tradycyjnych wzorców projektowania aplikacji, w którym wszystkie komponenty aplikacji (front-end, back-end, logika biznesowa, bazy danych) są zintegrowane w jeden zwarty program komputerowy. Oznacza to, że cała aplikacja jest zbudowana i wdrażana jako jedna całość.
- Prostota rozwoju i wdrożenia: w początkowej fazie rozwoju projektu, architektura monolityczna jest łatwa do zrozumienia i wdrożenia, ponieważ wszystkie komponenty są w jednym miejscu. Nie ma potrzeby zarządzania komunikacją między usługami, jak ma to miejsce w bardziej skomplikowanych architekturach.
- W przypadku prostych projektów, aplikacje monolityczne są łatwiejsze do testowania, ponieważ kod odpowiedzialny za wszystkie funkcjonalności znajduje się w jednym miejscu. Testy end-to-end mogą być wykonywane w jednym środowisku bez potrzeby symulowania komunikacji między usługami.
- Jedna aplikacja oznacza jeden punkt wejścia i łatwiejsze zarządzanie stanem aplikacji, co zmniejsza ryzyko wystąpienia błędów komunikacji między modułami.
- Na wczesnym etapie, gdy aplikacja jest jeszcze niewielka, rozwój może być szybki, ponieważ nie ma potrzeby dzielenia aplikacji na mniejsze serwisy.
Jednakże wraz z rozwojem aplikacji, ujawniają się wady architektury monolitycznej:
- Skalowanie w architekturze monolitycznej polega zazwyczaj na powielaniu całej aplikacji na nowe serwery. Można skalować tylko całą aplikację, co jest mało efektywne, gdy wyłącznie jeden z modułów staje się wąskim gardłem.
- Ścisłe powiązania pomiędzy komponentami utrudniają rozwój i wprowadzanie zmian w aplikacji, gdyż zmiany w jednym module mogą wymagać zmian w innych częściach aplikacji. Praca z całym kodem aplikacji ponadto zwiększa ryzyko wprowadzenia błędów.
- Utrudnione są wdrożenia i aktualizacje, gdyż każda zmiana w kodzie powinna pociągać za sobą przetestowanie całej aplikacji, co jest czasochłonne i ryzykowne.
- Wraz z rozwojem aplikacji, kod staje się coraz bardziej złożony, co utrudnia jego zrozumienie, utrzymanie i wprowadzanie zmian przez nowych programistów.
- Błąd w jednym module aplikacji może wpłynąć na całą aplikację, ponieważ wszystkie komponenty działają razem jako jeden proces.
Architektura monolityczna jest prostym i łatwym do wdrożenia rozwiązaniem na początkowym etapie tworzenia aplikacji. Jednak w miarę jak aplikacja rośnie, staje się ona coraz bardziej złożona, trudna do zarządzania, skalowania i utrzymania. Dlatego w bardziej zaawansowanych projektach często rozważa się przejście na architektury bardziej modularne, takie jak mikroserwisy, które rozwiązują wiele problemów związanych z monolitem, oferując lepszą skalowalność i elastyczność.