Читать книгу Mikroserwisy. Wzorce z przykładami w języku Java - Chris Richardson - Страница 32
1.4.5. Porównanie architektury mikroserwisowej i SOA
ОглавлениеNiektórzy krytycy architektury mikroserwisowej twierdzą, że nie jest ona niczym nowym – to architektura zorientowana na usługi (SOA). Na bardzo wysokim poziomie istnieją między nimi pewne podobieństwa. Architektura SOA i architektura mikroserwisowa to style architektoniczne, które tworzą system jako zestaw usług. Ale jak pokazuje tabela 1.1, po głębszej analizie napotkamy znaczne różnice.
Tabela 1.1. Porównanie SOA z mikroserwisami
SOA | Mikroserwisy | |
Typowa usługa | Większa monolityczna aplikacja | Mniejsza usługa |
Komunikacja między usługami | Inteligentne potoki, takie jak Enterprise Service Bus, wykorzystujące ciężkie protokoły, takie jak SOAP i inne standardy WS* | Proste potoki, takie jak broker komunikatów lub bezpośrednia komunikacja między usługami, za pomocą lekkich protokołów, takich jak REST lub gRPC |
Dane | Globalny model danych i wspólne bazy danych | Model danych i baza danych dla każdej usługi |
Architektura SOA i architektura mikroserwisowa zwykle posługują się różnymi stosami technologicznymi. Aplikacje SOA zazwyczaj wykorzystują „ciężkie” technologie, takie jak SOAP i inne standardy WS*. W celu integrowania usług często używają ESB, inteligentnego potoku zawierającego logikę biznesową i przetwarzanie komunikatów. Aplikacje zbudowane z wykorzystaniem architektury mikroserwisowej zwykle używają lekkich technologii open source. Usługi komunikują się za pomocą prostych potoków, takich jak brokerzy komunikatów lub lekkich protokołów, np. REST lub gRPC.
Architektura SOA i architektura mikroserwisowa różnią się także sposobem traktowania danych. Aplikacje SOA mają zazwyczaj globalny model danych i współużytkują bazy danych. Z kolei w architekturze mikroserwisowej, jak wspomniano wcześniej, każda usługa ma własną bazę danych. Ponadto, jak opisano w rozdziale 2, zwykle przyjmuje się, że każda usługa ma własny model domeny.
Inną kluczową różnicą między architekturą SOA a architekturą mikroserwisową jest wielkość usług. SOA jest zwykle używana do integracji dużych, złożonych monolitycznych aplikacji. Chociaż usługi w architekturze mikroserwisowej nie zawsze są miniaturowe, to prawie zawsze są znacznie mniejsze niż w SOA. W rezultacie aplikacja SOA zwykle składa się z kilku dużych usług, podczas gdy aplikacja oparta na mikroserwisach zwykle składa się z kilkudziesięciu lub setek mniejszych usług.