Wyzwania
- utrzymanie wydajnego API, z którym stale komunikują się tysiące playerów synchronizujących treści i raportujących swój stan;
- ograniczenie liczby tasków AWS Fargate, które autoskalowanie dokładało z powodu narzutu uruchamiania aplikacji przy każdym żądaniu;
- obsługa dziesiątek milionów zdarzeń dziennie z urządzeń rozproszonych w ponad 10 tysiącach obiektów;
- szybkie przeszukiwanie logów konkretnego playera, które w Grafana Loki trwało kilkanaście sekund, a w gorszych przypadkach jeszcze dłużej;
- migracja systemu logów bez ryzyka utraty danych, których nie da się odtworzyć.
Rozwiązanie
TCAdvert API to aplikacja w Laravelu działająca na AWS ECS Fargate z procesorami ARM64 (Graviton), za load balancerem aplikacyjnym. Ruch HTTP, kolejki, przetwarzanie plików i WebSockety działają jako osobne serwisy, a ECS skaluje je automatycznie na podstawie zużycia CPU, pamięci oraz liczby żądań. Każda poprawa wydajności pojedynczego taska przekłada się więc bezpośrednio na mniejszą liczbę uruchomionych tasków i niższy koszt.
We wrześniu 2025 roku Fingoweb przeniósł API z Apache i PHP-FPM na FrankenPHP z Laravel Octane. W trybie worker aplikacja uruchamia się raz i obsługuje kolejne żądania bez ponownego ładowania frameworka co każde zapytanie, a połączenia z bazą danych są utrzymywane między żądaniami. Czas procesora zostaje wykorzystany w większym stopniu na wykonywanie kodu aplikacj, a nie na inicjalizację frameworka aplikacji, przez co zużycie CPU spada, a co za tym idzie – autoskalowanie rzadziej dokłada kolejne taski.
Zastąpiliśmy bazę danych wykorzystywaną w systemie przechowującą logi z urządzeń z Grafana Loki na VictoriaLogs. Logi przetwarzane są w potoku stworzonym za pomocą narzędzia Vector oraz są wczytywane za pomocą protokołu OpenTelemetry, więc zmiana magazynu wymagała jedynie zmiany konfiguracji, a nie aplikacji. Przez okres przejściowy te same logi trafiały równolegle do obu systemów, co pozwoliło porównać je 1:1 na prawdziwym ruchu, zanim wyłączyliśmy Lokiego. Dopiero gdy mieliśmy pewność, że nowy silnik bazodanowy spełnia swoje zadanie, wykonane zostały wymagane zmiany w API, aby umożliwić odpytywanie VL z poziomu aplikacji.
W ramach projektu Fingoweb zrealizował:
- przeniesienie API z Apache i PHP-FPM na FrankenPHP z Laravel Octane w trybie worker;
- dostosowanie aplikacji do długo żyjących procesów;wdrożenie potoku przetwarzania logów z wykorzystaniem protokołu OpenTelemetry i narzędzia Vector z buforowaniem dyskowym;
- an OpenTelemetry and Vector log pipeline with disk buffering;
- równoległy zapis logów do Grafana Loki i VictoriaLogs w okresie przejściowym (dual-sink);
- wyświetlanie logów urządzeń bezpośrednio w CMS, gdzie korzysta z nich zespół wsparcia.
Efekty
Dzięki optymalizacji infrastruktury AWS platforma TCAdvert obsługuje około 15 tysięcy playerów przy mniejszej liczbie serwerów i krótszym czasie odpowiedzi, a zaoszczędzone środki przeznaczono na usprawnienia, które przyspieszyły system CMS. Zespół wsparcia znów może diagnozować urządzenia na bieżąco. Wyniki to:
- o 57% mniej tasków Fargate obsługujących zapytania do API przy tym samym ruchu i proporcjonalnie niższy koszt tej części infrastruktury;
- czas odpowiedzi API dla urządzeń (p95) skrócony z około 350 ms do około 90 ms;
- wyniki wyszukiwania logów w około 0,5 sekundy zamiast kilkunastu, bez zwiększania zasobów;
- migracja systemu logów bez utraty danych i bez wpływu na działanie platformy.
Oferujemy znacznie więcej
Zobacz, co jeszcze możemy dla Ciebie zrobić - od projektowania produktu do ciągłego dostarczania oprogramowania.
-
Tworzenie aplikacji na LG webOS TV
Zobacz, jak Fingoweb stworzył dedykowaną aplikację na LG webOS TV dla IMS Sensory Media - odtwarzacz webOS obsługujący ponad 2700 ekranów digital signage w wersjach webOS 4.0–9.0.
-
IMS Sensory Media
IMS Sensory Media jest liderem na rynku w zakresie marketingu sensorycznego. Dostarcza systemy reklamujące, technologie oraz narzędzia umożliwiające skuteczne, efektywne biznesowo kreowanie nastroju i budowanie pozytywnej atmosfery w miejscu sprzedaży.
-
Wayfinder
Elektroniczny panel z interaktywną mapą dotykową, zlokalizowany w wielu galeriach handlowych w Polsce.