Produkty Monzo są obsługiwane przez rozbudowaną platformę opartą na mikroserwisach, obejmującą ponad 2800 usług. Firma Opiera się na planowaniu i dużej automatyzacji, aby przeprowadzać migracje kodu na dużą skalę Korzysta z usługi konfiguracyjnej, aby wspierać przyrostowe postępy i szybkie wycofywanie w przypadku wystąpienia problemów. Migracjami zarządza zespół centralny, a nie zespoły właścicieli usług, aby uniknąć opóźnień i niespójności.
Szeroka gama mikrousług Monzo stwarza wyjątkowe wyzwania przy wprowadzaniu radykalnych zmian, takich jak aktualizacja wersji bibliotek w celu zapewnienia spójności i świeżości. W większości przypadków firma zdecydowała się na centralizację migracji kodu, aby przyspieszyć migracje i poprawić spójność między usługami.
Zespół odpowiedzialny za przeprowadzanie migracji ustalił zasady wdrażania zmian na dużą skalę, w tym zapewnienie przejrzystości migracji dla właścicieli usług, unikanie przestojów, wprowadzanie zmian w celu zmniejszenia promienia wybuchu oraz stosowanie zasady automatyzacji 80/20, aby uniknąć zmniejszających się zysków z rozwiązania nietypowe przypadki użycia. Firma w dużej mierze ujednoliciła swój stos programistyczny, wybierając Go jako swój język programowania i przyjmując monorepo dla całego swojego kodu źródłowego.
Użyj powłoki biblioteki, aby przełączać się między bibliotekami (źródło: Blog inżynieryjny Monzo)
Willa Sewellainżynier platformy w Monzo, opisuje typowy proces wdrażania nowej biblioteki, na przykładzie migracji z OpenTracing do OpenTelemetry. W przypadku każdej zmiany globalnej zespół ds. migracji przedstawi propozycję w Slacku lub podczas spotkania poświęconego przeglądowi architektury, aby podnieść świadomość i uzyskać informacje zwrotne od organizacji inżynieryjnej przed rozpoczęciem pracy.
Zespół wykorzystuje kombinację automatycznych aktualizacji kodu z narzędziami do zastępowania kodu specyficznymi dla języka i ręcznymi aktualizacjami w przypadku nietypowych przypadków użycia. Aby przełączać się między bibliotekami zewnętrznymi, zespół upewnia się, iż opakowanie zostało najpierw wdrożone we wszystkich usługach. Następnie korzysta z usługi konfiguracyjnej, aby stopniowo przełączać wykonania dla danej grupy użytkowników lub procentu żądań.
Firma InfoQ skontaktowała się z firmą Sewell, aby dowiedzieć się więcej na temat platformy mikrousług Monzo, biorąc pod uwagę jej wielkość i charakter sektora bankowego.
InfoQ: Wspomniałeś, iż Monzo używa monorepo do hostowania swojej bazy kodu. Biorąc pod uwagę dużą liczbę usług, jak zmienili Państwo procesy i narzędzia CI/CD, aby wspierać to podejście?
Willa Sewella: [your answer here]
InfoQ: Jakiej rady udzieliłbyś firmom borykającym się z problemem rozprzestrzeniania się mikroserwisów? Jakie praktyki, techniki lub narzędzia powinny być ich najwyższym priorytetem, aby usprawnić budowanie platformy mikrousług i zarządzanie nią?
Willa Sewella: [your answer here]
InfoQ: Czy pracujesz lub planujesz pracować nad ulepszeniami podejścia do migracji kodu?
Willa Sewella: [your answer here]