Architektura monolityczna

Wprowadzenie

W czasach pierwszych aplikacji architektura monolityczna była prostym następstwem złożoności oprogramowania, które powstawało. Wraz z biegiem czasu ilość wytwarzanego kodu się zwiększała, systemy zaczęły się integrować i powstawały bardziej skomplikowane konstrukcje.

Czasy się zmieniły, co nie oznacza, że architektura monolityczna odeszła do lamusa.

Czym jest architektura monolityczna i jakie są jej założenia?

Architektura monolityczna jest tradycyjnym podejściem do projektowania aplikacji.

Wszystkie elementy aplikacji są ze sobą sciśle powiązane. Ma to swoje zalety i wady.

Wpływa także na proces wytwarzania oprogramowania.

Każdy z elementów systemu jest tworzony, wdrażany i utrzymywany jako jeden zwarty komponent.

Współdzielą między sobą kod, co niesie ze sobą konsekwencje w wielu aspektach działania aplikacji.

Główne cechy aplikacji monolitycznej:

  • struktura warstwowa – podział aplikacji na logiczne warstwy,
  • jedno repozytorium kodu – cały kod aplikacji zamknięty jest w jednym repozytorium,
  • współdzielona pamięć – komponenty w aplikacji z racji instalacji na tej samej maszynie mogą się komunikować bez opóźnień, w przeciwieństwie do aplikacji mikroserwisowych,
  • ograniczona skalowalność – z powodu budowy, cała aplikacja musi być skalowana jednocześnie.

Wolisz wideo? Zapraszam na kanał YouTube

Budowa aplikacji

Aplikacja posiada strukturę warstwowa, gdzie każda z warstw odpowiada za inny element aplikacji.

Zawiera w sobie jest zazwyczaj trzy główne elementy:

  • Warstwę prezentacji – odpowiada za wizualny element aplikacji. Zawierają się w niej wszystkie wyświetlane dane, a także formularze.
  • Warstwę logiki biznesowej – odpowiada za funkcjonalności aplikacji. Zawiera w sobie sposoby przetwarzania danych, zmiany statusów i wszystkie inne funkcjonalności pojawiające się w aplikacji.
  • Warstwę dostępu do danych – odpowiada za zarządzanie interakcjami z bazą danych, wykonuje operację CRUD.
Architektura monolityczna – warstwy

Rodzaje monolitów

Możemy wyróżnić 3 rodzaje monolitów.

Monolit jednoprocesowy to taki, w którym aplikacja wdrażana jest jako jeden proces. Kod w całej aplikacji jest ze sobą ściśle powiązany.

Modularny monolit, to taki gdzie kod wewnętrz aplikacji podzielony jest na moduły, co pozwala w pewnym stopniu na niezależny rozwój aplikacji przez różne zespoły. Jednak wszystkie moduły nadal muszą być wdrażane jako jeden komponent.

Monolit rozproszony, to taki gdzie występuję kilka aplikacji, ale są ze sobą tak mocno powiązane, że pomimo oddzielnego kody muszę być wdrażane jednocześnie.

Zalety i wady architektury monolitycznej

Zalety architektury monolitycznej

Architektura monolityczna – zalety

Architektura monolityczna ma swoje wady i zalety.

Na początku swojego istnienia nawet Netflix bazował na tego typu architekturze.

Z powodzeniem jest ona wykorzystywana w wielu projektach.

Tylko trzeba znać jej mocne i słabe strony.

Zacznijmy od zalet.

  1. Łatwo rozpocząć Development aplikacji z powodu prostoty architektury.
  2. Wdrożenia aplikacji są łatwiejsze z powodu jednej jednostki wdrożeniowej.
  3. Monitorowanie działania aplikacji także jest prostsze.
  4. Przeprowadzanie testów też.

Wady architektury monolitycznej

To jakie są wady takiego rozwiązania:

  1. Skalowalność – kiedy jeden moduł jest obciążony cała aplikacja spowalnia. Trzeba skalować całą aplikację, a nie tylko jeden moduł.
  2. W przypadku pracy wielu zespołów nad rozwojem, łatwo o powstanie konfliktów.
  3. Błąd w jednej części systemu może położyć całą aplikację.
  4. Wraz ze zwiększaniem się ilości funkcjonalności zwiększa się złożoności kodu oraz zmniejsza się tempo praca nowymi funkcjami.

Dokumentacja

Jedne obraz jest wart więcej niż 1000 słów. W kontekście architektury ma to szczególne znaczenie. Dobrze opracowany model architektury przedstawia wszystkie zależności i otoczenie tworzonej aplikacji.

Do dokumentowania i modelowania architektury wykorzystywane są narzędzia CASE oraz notacja UML.

Podsumowanie

W wielu projektach nadal wykorzystywana jest architektura monolityczna.

Rozwiązanie to może przyśpieczyć wdrożenie aplikacji jednak niesie ze soba konsekwencje,które trzeba rozważyć.

Decyzja o wyborze architektury musi być poprzedzona analizą, nie istnieją uniwersjalne rozwiązania. Muszą być dopasowane do potrzeb biznesowych.

Chcesz się ze mną skontaktować:

https://www.nietylkoprogramowanie.pl/kontakt/

2 komentarze do “Architektura monolityczna

  1. Pingback: Architektura mikroserwisowa - Nie tylko programowanie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *