Portfolio
Migracja do mikroserwisów
EdTech / E-Learning
3x
Poprawa wydajności
60%
Zmniejszone zużycie pamięci
0
Przestoju podczas migracji
Przegląd
CloudAcademy potrzebowała migracji serwisu autoryzacji treści z Kotlin do Go jako część szerszej standaryzacji. Prowadziłem tę migrację zapewniając zero przestojów i tworząc nowe mikroserwisy według wzorców DDD.
Kontekst biznesowy
CloudAcademy to wiodąca platforma e-learningowa specjalizująca się w szkoleniach z chmury i technologii. Ich mikroserwis autoryzacji treści zbudowany w Kotlin stał się wąskim gardłem wydajności i utrzymania. Serwis obsługiwał złożoną logikę biznesową określającą dostęp użytkowników do kursów, quizów i ścieżek nauczania. Zespół standaryzował się na Go dla mikroserwisów i potrzebował doświadczonego leada do przeprowadzenia migracji bez zakłócania produkcji obsługującej tysiące jednoczesnych użytkowników.
Wyzwanie
Legacy serwis Kotlin miał wąskie gardła wydajnościowe i był trudny w utrzymaniu. Zespół potrzebował standaryzacji na Go dla lepszej spójności mikroserwisów.
- Serwis Kotlin ze złożoną logiką biznesową i wysokim ruchem
- Potrzeba migracji bez przestojów
- Zespół niezaznajomiony z najlepszymi praktykami Go
Rozwiązanie
Wykonaliśmy staranną migrację używając wzorca strangler fig, stopniowo kierując ruch do nowego serwisu Go przy zachowaniu pełnej kompatybilności wstecznej.
- Migracja mikroserwisu autoryzacji treści z Kotlin do Go
- Tworzenie nowych mikroserwisów Go według wzorców DDD
- Budowa narzędzia dev-ex w Pythonie do orkiestracji lokalnych kontenerów
Podejście i metodologia
Przyjęliśmy podejście strangler fig, oznaczające stopniową migrację zamiast przepisania big-bang. Najpierw stworzyłem szczegółową mapę zachowania istniejącego serwisu Kotlin - wszystkie endpointy, logikę biznesową i edge cases. Następnie zbudowaliśmy nowy serwis Go, który początkowo uruchamiał się równolegle, otrzymując duplikat ruchu. Flagi funkcji kontrolowały, który serwis faktycznie obsługuje odpowiedzi. Podejście to pozwoliło nam zwalidować zachowanie Go z produkcyjnym ruchem przed przełączeniem.
Szczegóły implementacji
Migracja Strangler Fig
Zaimplementowano stopniowe przesuwanie ruchu za pomocą flag funkcji i testów A/B w celu walidacji nowego serwisu Go przed pełnym przełączeniem. Utrzymano możliwość podwójnego zapisu podczas przejścia.
Narzędzia Developer Experience
Zbudowano narzędzie CLI w Pythonie do orkiestracji lokalnych środowisk deweloperskich, ułatwiając deweloperom uruchamianie całego stacka mikroserwisów lokalnie z Docker Compose.
Kluczowe decyzje
- Wybraliśmy wzorzec strangler fig zamiast przepisania big-bang - wyższy początkowy koszt, ale znacznie niższe ryzyko i możliwość walidacji w produkcji
- Utrzymaliśmy kompatybilność API 1:1 podczas migracji - umożliwiło to bezproblemowy rollback w razie problemów
- Zbudowaliśmy szczegółowy pakiet testów porównawczych - uruchamialiśmy te same żądania przeciwko obu serwisom i porównywaliśmy odpowiedzi
Stack technologiczny
Powiązane usługi
Poniższe usługi zostały wykorzystane w tym projekcie do osiągnięcia pomyślnych rezultatów.
Wnioski z projektu
- Testy porównawcze są bezcenne dla migracji - automatycznie wykrywały subtelne różnice w zachowaniu
- DevEx ma znaczenie - narzędzia CLI Pythona do lokalnego developmentu znacząco poprawiły produktywność zespołu
- Dokumentuj założenia - wiele zachowań Kotlin okazało się celowymi decyzjami biznesowymi, a nie przypadkami
Informacje o projekcie
Czas realizacji
5 miesięcy (migracja + nowe serwisy)
Zespół
2 developerów + ekspert domenowy
Rezultaty
3x
Poprawa wydajności
60%
Zmniejszone zużycie pamięci
0
Przestoju podczas migracji
Masz podobne wyzwanie?
Porozmawiajmy, jak mogę pomóc Twojemu projektowi odnieść sukces dzięki sprawdzonym rozwiązaniom architektonicznym i AI.