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ść.

Podejście takie ma szereg zalet:
  1. 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.
  2. 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.
  3. 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.
  4. 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:
  1. 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.
  2. Ś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.
  3. 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.
  4. Wraz z rozwojem aplikacji, kod staje się coraz bardziej złożony, co utrudnia jego zrozumienie, utrzymanie i wprowadzanie zmian przez nowych programistów.
  5. 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ść.