Let's talk
  • [ Tech ]
  • [ Composable architecture ]

Zrozumienie architektury MACH

Kaliop

Opublikowano 16 lipca 2024

Skupiona na zwinności, skalowalności i wydajności, architektura MACH oferuje wiele zalet. Opiera się ona na mikrousługach, czyli strukturze, w której komponenty są opracowywane niezależnie od siebie.

Podejście MACH oddziela front-end od back-endu (decoupling), dzięki czemu można nad nimi pracować osobno. Wszystkie funkcje programu są dostępne za pośrednictwem interfejsu API i w pełni wykorzystują możliwości chmury.

Aby lepiej zrozumieć te aspekty techniczne, wyjaśniamy szczegółowo, czym jest architektura MACH.

Co oznacza MACH?

Akronim MACH dosłownie oznacza:

  • M = Microservices based (Oparty na mikrousługach)
  • A = API-first (Podejście API-first)
  • C = Cloud native (Rozwiązania natywne dla chmury)
  • H = Headless (Architektura typu headless)

Przyjrzyjmy się każdemu z tych aspektów technicznych, aby zdefiniować, czym dokładnie jest architektura MACH.

M jak Microservices-based (Oparty na mikrousługach)

Termin „mikrousługa” odnosi się do architektury, w której buduje się niezależne komponenty realizujące pojedynczą, konkretną funkcję. W architekturze MACH to przede wszystkim sama metoda pracy jest inspirowana podejściem mikroserwisowym.

W praktyce ta metoda wytwarzania oprogramowania zapewnia zespołom ogromną elastyczność. Pozwala to na równoległą pracę nad wieloma projektami i ich wdrażanie w najbardziej odpowiednim momencie. Poszczególne komponenty mogą ewoluować, będąc jednocześnie utrzymywanymi w ramach swojego własnego ekosystemu.

A jak API-first 

Wszystko, co oferuje wdrożone rozwiązanie, musi być dostępne w podejściu API-first. Wszystkie funkcjonalności powinny być dostępne poprzez API, aby umożliwić łączenie różnych komponentów z aplikacjami biznesowymi lub innymi narzędziami używanymi przez firmę.

Pomaga to zmniejszyć zależność od samych narzędzi. Architektura MACH dosłownie pozwala na podłączanie lub odłączanie każdego z nich w zależności od potrzeb.

C for Cloud native

Termin Cloud-native odnosi się do architektury dostępnej w chmurze, która w pełni wykorzystuje jej potencjał. Nie chodzi tu tylko o samo przechowywanie danych czy hosting, ale o to, jak technologia skaluje się w tym środowisku. Rozwiązania te opierają się na technologiach takich jak Docker, Kubernetes czy Serverless.

Dzięki podejściu cloud-native rozwiązanie zyskuje na szybkości, skalowalności, responsywności i elastyczności.

H for Headless

Oznacza to oddzielenie warstwy front-endowej od back-endowej. Daje to ogromną swobodę projektowania, dzięki możliwości pracy nad każdą z tych części całkowicie niezależnie. Uwaga skupia się tutaj na konkretnym przeznaczeniu wdrażanego narzędzia.

Na przykład system CMS (system zarządzania treścią) nie jest narzędziem, które powinno dbać o to, jak treść jest prezentowana, a jedynie o to, jak jest ona zarządzana. Choć w przypadku platform takich jak WordPress prezentacja jest możliwa, nie jest to głównym celem CMS-a. Jego podstawową rolą jest zarządzanie treścią.
Podejście Headless zakłada zatem wykorzystanie API, które umożliwia interoperacyjność między różnymi komponentami. Zapewnia to doskonałe dopasowanie do bieżących potrzeb.

Architektura MACH i composable: zalety i wyzwania
Jak działa architektura MACH?

Jeden punkt wejścia dla wszystkich narzędzi biznesowych

Oprócz systemu CMS, często niezbędne są rozwiązania typu CRM, ERP, PIM czy SSO. Każda z tych aplikacji odpowiada na bardzo konkretne potrzeby. Szczególnie istotnym elementem jest fakt, że platformy te coraz częściej oferują gotowe interfejsy API.

Twoja firma ma swój unikalny cel, dostarcza wartość dodaną i wchodzi w interakcje z klientami, które przynoszą realne wyniki. Z technicznego punktu widzenia konieczne jest połączenie tego celu z posiadanymi narzędziami. To właśnie zadanie dla rozwiązania o nazwie backend for frontend (BFF). Oprogramowanie to zarządza połączeniami ze wszystkimi narzędziami biznesowymi poprzez API, REST i inne.

System Backend for Frontend zapewnia pojedynczy punkt wejścia dla wszystkich aplikacji. Działając jako platforma cloud-native, udostępnia on API (np. w standardzie GraphQL). Celem jest uniknięcie nadmiernej zależności od konkretnych narzędzi w Twoim systemie IT. Backend for Frontend wystawia wszystkie dostępne dane i pozwala na ich wykorzystanie dokładnie tam, gdzie są w danej chwili potrzebne.

Potężne i odporne rozwiązanie

Architektura MACH umożliwia:

  • Błyskawiczne wdrażanie nowych funkcji dzięki wykorzystaniu technologii takich jak Docker lub Kubernetes.
  • Równoległe prowadzenie prac programistycznych nad front-end and back-end.
  • Konfigurację mechanizmów cache (pamięci podręcznej) dla „zimnych danych”. Nie ma potrzeby wielokrotnego odpytywania API, jeśli odpowiedź na dane zapytanie jest już znana.
  • Kontrolę wygasania pamięci podręcznej za pomocą systemu hooków. W danym narzędziu np. w systemie CMS konfiguruje się adres URL, który automatycznie powiadamia Backend for Frontend o wprowadzonej aktualizacji. Dzięki temu nie trzeba czekać na samoczynne odświeżenie cache’u – nowe informacje pojawiają się w czasie rzeczywistym.

Konkretny przykład zastosowania Backend for Frontend

Oto praktyczny przykład. System PIM (Product Information Management) zawiera bazę danych albumów CD z następującymi informacjami: artysta, tytuł, format, daty wydania, lista utworów oraz numer SKU. Potrzeba biznesowa polega na połączeniu systemu PIM z systemem CMS, który umożliwia redaktorowi pisanie recenzji wspomnianych płyt CD.

RedaktorBackend for frontendOdbiorca
  • Redaktor tworzy nową recenzję
  • Wykorzystuje pole wprowadzania danych, aby podać numer SKU
  • Sprawdza, czy wyświetlił się właściwy rekord
  • Publikuje swoją recenzję
  • BFF odwołuje się do systemu CMS, aby pobrać treści redakcyjne, a także pobiera powiązany z nimi numer SKU
  • Wykorzystując ten numer SKU, BFF wysyła zapytanie do systemu PIM, aby uzyskać pełną informację o produkcie, a następnie dołącza ją do danych otrzymanych wcześniej z CMS-a
  • Recenzja jest już dostępna wraz z powiązanym z nią rekordem danych

 

Architektura MACH zapewnia płynniejsze i bardziej skalowalne doświadczenia

W przeciwieństwie do struktur monolitycznych, architektura MACH pozwala na niezależną pracę nad poszczególnymi elementami systemu, oferując tym samym znacznie większą swobodę. Jest to podejście zgodne z filozofią DevOps, które fundamentalnie różni się od tradycyjnego tworzenia stron i aplikacji internetowych. Dzięki tej metodzie nowe funkcje mogą być wdrażane błyskawicznie. To prawdziwie wydajne i odporne na awarie rozwiązanie.

Podobne treści