Architektura monolityczna zakłada, że wszystkie funkcje aplikacji są zebrane w jednolitym kodzie, który jest rozwijany i wdrażany.
Architektura zorientowana na usługi (SOA), a w szczególności mikroserwisy – podejście, w którym aplikacja składa się z zestawu modułów, które współdziałają za pośrednictwem wyraźnych interfejsów (zwykle sieciowych).
Kiedy monolit jest korzystny:
Kiedy SOA jest korzystna:
Przykład porównania: Monolit:
public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // Logika zamówień, użytkowników – wszystko w jednej aplikacji } }
SOA – interakcja przez API:
GET /user/42 # zapytanie do serwisu użytkowników GET /order/532 # zapytanie do serwisu zamówień
Kluczowe cechy:
Czy SOA dzieli bazę danych między usługami?
Zwykle usługi dzielą dane dla słabej spójności. Wspólne bazy danych są dopuszczalne na etapach migracji, ale w idealnym przypadku każda usługa ma swoją oddzielną bazę danych.
Czy monolit zawsze jest gorszy pod względem wydajności?
Nie, monolit może być wydajniejszy przy małych wolumenach, ponieważ nie ma nadmiernych wywołań sieciowych i podziału pamięci.
Czy można przenieść monolit na mikroserwisy "jednym ruchem"?
Nie, zwykle migracja odbywa się etapami, zaczynając od wydzielania granic kontekstów i przekształcania ich w usługi.