Problem
System provisioningowy Play obsługiwał dziesiątki milionów operacji na usługach mobilnych miesięcznie - i osiągnął granice możliwości. Zbudowany jako monolit na silniku Activiti, stawał się wąskim gardłem przy rosnących wolumenach ruchu.
Architektura monolityczna powodowała silne powiązanie logiki biznesowej z platformą BPM: każda zmiana wymagała modyfikacji w kontekście silnika procesowego, testowanie było trudne, a niezależne wdrożenia niemożliwe. System nie był przystosowany do środowiska cloud-native - nie wspierał konteneryzacji, horyzontalnego skalowania ani nowoczesnych wzorców deploymentu.
Zastąpienie silnika procesowego w systemie krytycznym dla ciągłości usług telekomunikacyjnych to decyzja niosąca znaczące ryzyko biznesowe. Operator potrzebował partnera, który to ryzyko podzieli.
Rozwiązanie
Horus zaproponował i przeprowadził migrację systemu provisioningowego na Temporal - open-source’ową platformę Durable Execution, która fundamentalnie różni się od tradycyjnych silników BPM.
Nowa architektura zapewnia pełną separację logiki biznesowej od infrastruktury orkiestracji. Kod provisioningu to standardowy Java - niezależny od platformy, testowalny jednostkowo, wdrażany bez powiązania z silnikiem procesowym.
Odporność na awarie bez dodatkowego kodu - Temporal automatycznie zarządza stanem każdej operacji. W przypadku awarii infrastruktury workflow wznawia się dokładnie od miejsca przerwania, bez utraty stanu i bez dodatkowej logiki obsługi błędów w kodzie aplikacji.
Migracja przyrostowa - system był przenoszony stopniowo, bez zatrzymywania produkcji. Przez cały czas trwania migracji abonenci Play nie odczuli żadnej przerwy w usługach.
Tuning wydajnościowy - Horus przeprowadził systematyczną optymalizację platformy Temporal, osiągając przepustowość do 2000 zmian stanu na sekundę (40k QPS) - poziom dający znaczący zapas ponad aktualne szczyty produkcyjne.
Zaangażowanie zespołu wykroczyło daleko poza development aplikacji: objęło konfigurację środowisk, DevOps oraz optymalizację platformy. Horus aktywnie doradzał, kwestionował założenia i proponował rozwiązania - nie ograniczając się do roli wykonawcy w zakresie kontraktu.
Rezultat
Play zyskał w pełni open-source’owy stack provisioningowy o architekturze cloud-native - gotowy do konteneryzacji i horyzontalnego skalowania, bez uzależnienia od ograniczeń poprzedniej platformy.
System obsługuje 50 milionów operacji miesięcznie ze szczytową przepustowością przekraczającą 40 000 zapytań na sekundę. Platforma Temporal zapewnia stabilną pracę przy tych wolumenach bez wcześniejszego planowania pojemności.
Separacja logiki biznesowej od platformy orkiestracji znacząco obniżyła koszt developmentu i utrzymania. Programiści skupiają się na logice provisioningu, a nie na infrastrukturze - kod jest prostszy, łatwiej testowalny i w pełni niezależny od platformy wykonawczej.