Studia przypadków / Migracja platformy IFEStudium · 10 min czytania · 2024–2025
Studium · Przypadek 01 // IFE × Migracja legacy

Migracja platformy rozrywki pokładowej.

Jak zmigrowaliśmy przestarzałą platformę treści dla linii lotniczych do architektury cloud-native i multi-tenant, utrzymując produkt w działaniu oraz rozbudowując go o streaming, nowe narzędzia administracyjne i synchronizację sterowaną zdarzeniami.

Klient
Dostawca rozrywki pokładowej
Specjalizacja
Chmura · Web · Platformy IFE
Lata
2024–2025
Produkt
Platforma treści IFE dla pasażerów
Stack
Azure · ASP.NET Core · React · Next.js · Umbraco · SQL Server · MongoDB · Service Bus · Azure Container Apps · Azure DevOps · Terraform · Azure B2C
Status
Działa produkcyjnie · w pełni zmigrowana · utrzymywana przez Coffee Mug
Najlepsze <em>treści wideo</em>, zawsze pod ręką
ROZRYWKA POKŁADOWA · LIVE

Najlepsze treści wideo, zawsze pod ręką

Uruchom streaming, dostosuj treści redakcyjne, dostarczaj ekskluzywne materiały — wszystko z jednej platformy.

[ PLANSZA 01 — ZDJĘCIE GŁÓWNE · witryna z treściami dla pasażerów, branding linii lotniczej, przestrzeń robocza CMS]
Przestarzała platforma IFE migrowana krok po kroku do architektury cloud-native dla witryn pasażerskich, zewnętrznych API, procesów administracyjnych, operacji synchronizacji i streamingu.
§ 01 — Kontekst

Klient musiał zmodernizować przestarzałą platformę IFE bez zatrzymywania produktu.

Dostawca rozrywki pokładowej poprosił nas o przebudowę przestarzałej platformy, której linie lotnicze używały do prezentowania treści IFE dostępnych na pokładzie.

Produkt przerósł swoją pierwotną architekturę. Obsługiwał strony dla pasażerów, API dla integracji zewnętrznych, narzędzie administracyjne oraz mechanizmy synchronizacji. Można było z niego korzystać przed lotem, w trakcie lotu i w salonach lotniskowych.

Klient chciał rozbudować platformę o kolejne funkcje, w tym streaming, ale stary stack coraz bardziej ograniczał rozwój. System legacy był zbudowany na Umbraco 7.15, API w .NET Framework 4.7, SQL Serverze, MongoDB 3.4 oraz aplikacji administracyjnej. Strukturę stron renderowało Umbraco, a aplikacja kliencka odpowiadała za renderowanie widgetów.

Wyzwaniem było nie tylko unowocześnienie technologii. Platformę trzeba było migrować etapami, nadal obsługując działające linie lotnicze, aktywne strony, istniejące procesy obsługi treści i obecnych użytkowników.

§ 02 — Wyzwanie

Model jednej instancji CMS na tenanta przestał się skalować.

Stara platforma opierała się na modelu jednej instancji CMS na tenanta. Każda linia lotnicza miała własną instancję Umbraco, własną stronę w brandingu danej marki i własną konfigurację operacyjną.

Przez pewien czas to działało, ale utrzymanie stawało się coraz trudniejsze. Zarządzanie użytkownikami, treścią, konfiguracją, wdrożeniami i aktualizacjami platformy trzeba było powtarzać w osobnych instancjach. W środowisku produkcyjnym klient obsługiwał siedem stron linii lotniczych przez siedem instancji CMS.

Każda linia lotnicza miała inny branding, domeny, katalogi, języki, układy i funkcje. Treści nie były współdzielone między liniami, więc platforma nadal musiała utrzymywać wyraźną izolację tenantów. Zmienić musiał się jednak model operacyjny wokół tej izolacji.

Warstwa API również wymagała zmian. API było podzielone na wiele obszarów, takich jak filmy, audio, gry, loty i usługi pomocnicze. Stary proces synchronizacji pobierał dane z systemów klienta, ale rosnące wymagania produktowe coraz bardziej utrudniały rozwijanie tego modelu.

Przepisanie wszystkiego naraz byłoby zbyt ryzykowne. Stary i nowy system musiały działać obok siebie, a kolejne funkcje trzeba było wymieniać etapami.

● Plansza 02 — Liczby
7 → 1
Instancje CMS
skonsolidowane w jedną platformę CMS w modelu multi-tenant
7
witryny linii lotniczych
obsługiwane z osobnymi markami, domenami i katalogami
100 tys.+
rekordów treści
w filmach, audio, grach i lotach
3 dni
uruchomienie nowej linii lotniczej
skrócone z około miesiąca
§ 03 — Podejście

Migrowaliśmy platformę etapami.

Zaczęliśmy od analizy istniejącego API i jego obszarów biznesowych: filmów, audio, gier, lotów i usług pomocniczych.

Analiza pokazała, że nie musimy migrować wszystkiego naraz. Platformę można było unowocześniać stopniowo: wymieniać jeden obszar API po drugim, podłączać nowe usługi do istniejącego procesu synchronizacji i pozwolić starym oraz nowym częściom systemu współistnieć w czasie migracji.

Wybraliśmy architekturę mikroserwisową, aby każdy obszar biznesowy można było wydzielić i migrować niezależnie. Azure API Management pomagał kierować ruchem, gdy stare i nowe API działały równolegle.

Pierwsze usługi wprowadziliśmy do istniejącego procesu, zaczynając od lotów, później filmów, a następnie pozostałych obszarów API. Łącznie wymieniliśmy sześć modułów API.

Takie podejście zmniejszyło ryzyko. Produkt mógł działać dalej, podczas gdy architektura zmieniała się krok po kroku.

§ 04 — Synchronizacja

Synchronizacja danych zaczęła reagować na zdarzenia.

Po migracji API przeszliśmy do głębszych warstw platformy odpowiedzialnych za synchronizację i administrację.

Stary proces synchronizacji opierał się na odpytywaniu API. Pobierał dane z systemów klienta i synchronizował treści takie jak filmy, audio, gry i loty. Część danych trafiała też przez ręczne przesyłanie.

Przeprojektowaliśmy synchronizację tak, aby była sterowana zdarzeniami. Zdarzenia z systemów klienta uruchamiały dalsze przetwarzanie, zamiast polegać wyłącznie na cyklicznym odpytywaniu API.

Nowa synchronizacja pozwoliła też lepiej wzbogacać dane, zanim trafiły do pasażerów. Zespoły mogły dodawać tagi do filmów, uzupełniać brakujące tłumaczenia, podmieniać grafiki niskiej jakości i lepiej przygotowywać treści pod potrzeby konkretnych linii lotniczych.

Zsynchronizowane i wzbogacone dane były przechowywane w różnych częściach platformy: w CMS, bazach danych backendu i indeksach wyszukiwania, zależnie od tego, jak korzystały z nich strona pasażerska, API, panel administracyjny i zewnętrzni odbiorcy.

§ 05 — Admin

Nowy panel administracyjny połączył starą i nową platformę.

Klient potrzebował nowoczesnego panelu administracyjnego, ale jednorazowa wymiana wszystkich starych funkcji spowodowałaby zbyt duże zakłócenia dla użytkowników.

Zbudowaliśmy nowy panel w React i osadziliśmy w nim wybrane starsze widoki administracyjne przez iframe. Użytkownicy dostali jedno miejsce pracy, a stare funkcje można było stopniowo wymieniać w tle.

Zachowaliśmy ten sam model ról i uprawnień, więc użytkownicy nie musieli uczyć się osobnego modelu dostępu w trakcie migracji.

Z czasem stare funkcje przenosiliśmy do nowego panelu i dodawaliśmy nowe możliwości. Panel administracyjny stał się jednocześnie ulepszeniem produktu i praktycznym pomostem między starą a nową platformą.

§ 06 — CMS

Siedem instancji CMS zastąpiliśmy jedną platformą multi-tenant w modelu headless.

Migracja CMS była jedną z najważniejszych zmian architektonicznych.

Stara platforma używała Umbraco 7.15, z jedną instancją Umbraco na każdą linię lotniczą. Nie istniała oficjalna, bezpośrednia ścieżka migracji z tej wersji do nowoczesnej wersji docelowej, więc warstwę CMS trzeba było zaprojektować od nowa, a nie po prostu zaktualizować.

Przeszliśmy na model headless CMS z wykorzystaniem nowoczesnego Umbraco, początkowo w wersji 14, a obecnie 17. Zamiast uruchamiać osobny CMS dla każdej linii lotniczej, nowa platforma używa jednej instancji CMS obsługującej wszystkich tenantów.

Każda linia lotnicza nadal ma własną stronę, domenę, katalog, języki, układ, branding i zestaw funkcji. Model działania jest jednak prostszy: jeden CMS, wielu tenantów i wyraźniejsze rozdzielenie zarządzania treścią od renderowania doświadczenia pasażera.

Strony dla pasażerów przebudowaliśmy w React i Next.js. Usunęło to potrzebę niestandardowego renderowania w starych stronach Umbraco i pozwoliło uniknąć wielu wcześniejszych problemów z renderowaniem po stronie serwera i klienta.

Rezultatem była czystsza architektura: Umbraco zarządza treścią, frontend renderuje stronę dla pasażera, a API zapewniają ustrukturyzowany dostęp dla stron, użycia na pokładzie, użycia przed lotem i w salonach oraz dla zewnętrznych partnerów.

§ 07 — Streaming

Nowa platforma otworzyła drogę do streamingu w salonach lotniskowych.

Streaming był jednym z kluczowych powodów, dla których stary system wymagał zmiany.

W ramach migracji rozszerzyliśmy platformę o streaming w salonach lotniskowych. Zintegrowaliśmy ją z dostawcą streamingu i dostosowaliśmy tak, aby treści linii lotniczych mogły być prezentowane i odtwarzane w tym kontekście.

Nie była to wyłącznie funkcja frontendowa. Wymagała, aby platforma lepiej obsługiwała treści, metadane związane ze streamingiem, integracje z zewnętrznymi partnerami i zachowania zależne od tenanta.

Migracja zrobiła więc więcej niż tylko wymieniła starą technologię. Stworzyła fundament pod nowe możliwości produktu, których nie dało się wygodnie rozwijać w starym stacku.

§ 08 — Chmura

Platforma została w całości przeniesiona na Azure.

Modernizacja zmieniła też model hostingu.

Stara platforma częściowo opierała się na maszynach wirtualnych. Nowa platforma działa w całości na Azure, bez aplikacji hostowanych na VM.

Unowocześniony stack obejmuje usługi ASP.NET Core, aplikacje React i Next.js, Umbraco, SQL Server, MongoDB Atlas, Service Bus, Azure Container Apps, Azure API Management, Azure B2C, Azure DevOps oraz infrastrukturę jako kod opartą na Terraform.

Dało to klientowi bardziej spójny model wdrożeń, wyraźniejszą odpowiedzialność za infrastrukturę i mocniejszą bazę pod dalszy rozwój platformy.

§ 09 — Rezultat

Migracja zmniejszyła złożoność operacyjną i przyspieszyła uruchamianie nowych linii lotniczych.

Migracja jest zakończona, platforma działa produkcyjnie, a my nadal ją utrzymujemy.

Klient przeszedł z siedmiu instancji CMS przypisanych do konkretnych linii lotniczych na jeden CMS w modelu multi-tenant. Siedem stron linii lotniczych działa teraz na współdzielonej architekturze, nadal z osobnymi domenami, katalogami, brandingiem, językami, układami i zestawami funkcji.

Wymieniliśmy sześć usług API, proces synchronizacji przeprojektowaliśmy wokół zdarzeń, a panel administracyjny unowocześniliśmy bez zmuszania użytkowników do nagłego przełączenia na inną aplikację.

Platforma obsługuje ponad 100 000 rekordów treści obejmujących filmy, audio, gry i loty.

Jednym z najwyraźniejszych usprawnień operacyjnych jest wdrażanie nowych linii lotniczych. Uruchomienie nowej instancji zajmuje teraz około trzech dni. Wcześniej mogło trwać około miesiąca.

Rezultatem jest nowoczesna platforma IFE, która obsługuje strony dla pasażerów, API dla zewnętrznych partnerów, panel administracyjny, synchronizację danych, użycie na pokładzie, przed lotem i w salonach oraz streaming w salonach lotniskowych — bez dalszego przenoszenia ciężaru starej architektury.

● Plansza 03 — Cytat
„Nie próbowaliśmy zastąpić całej platformy jednym ruchem. Pozwoliliśmy starym i nowym systemom działać obok siebie, a potem przenosiliśmy produkt usługa po usłudze.”
— zespół projektowy Coffee Mug · opracowano 2026
● Plansza 04 — Diagram systemu
[ SYSTEMY KLIENTA → SYNCHRONIZACJA STEROWANA ZDARZENIAMI → WZBOGACANIE → CMS / BAZY DANYCH / WYSZUKIWANIE → API → WITRYNY PASAŻERSKIE / ODBIORCY ZEWNĘTRZNI / STREAMING ][ SYSTEMY KLIENTA → SYNCHRONIZACJA STEROWANA ZDARZENIAMI → WZBOGACANIE → CMS / BAZY DANYCH / WYSZUKIWANIE → API → WITRYNY PASAŻERSKIE / ODBIORCY ZEWNĘTRZNI / STREAMING ]
Etapowa ścieżka migracji: stare i nowe API działały obok siebie poprzez Azure API Management, podczas gdy synchronizacja, CMS, panel administracyjny i doświadczenia pasażerskie przenosiły się na nową platformę.
● Plansza 05 — Zestawienie wyników

Co się zmieniło, w pięciu punktach.

01 · Model tenantów
7 instancji CMS → 1 CMS w modelu multi-tenant
skonsolidowano instancje przypisane do linii lotniczych w jedną platformę CMS headless
02 · Strategia migracji
wymiana równoległa
stare i nowe systemy działały razem, podczas gdy usługi migrowano jedna po drugiej
03 · Warstwa API
wymieniono 6 usług
objęła loty, filmy i inne obszary usług treści
04 · Model synchronizacji
odpytywanie → synchronizacja sterowana zdarzeniami
wprowadzono przetwarzanie sterowane zdarzeniami i proces wzbogacania treści
05 · Uruchomienie linii lotniczej
miesiąc → trzy dni
zmniejszono nakład pracy potrzebny do uruchomienia nowej instancji linii lotniczej
● Metryka

Zakres i technologia.

Migracja platformy rozrywki pokładowej unowocześniła platformę treści linii lotniczej dla pasażerów, wykorzystywaną na pokładzie i poza nim. Projekt przeniósł produkt z przestarzałego Umbraco, API w .NET Framework, synchronizacji opartej na odpytywaniu i instancji CMS przypisanych do tenantów na platformę cloud-native z nowoczesnymi API, synchronizacją sterowaną zdarzeniami, panelem administracyjnym w React, CMS Umbraco w modelu multi-tenant oraz witrynami pasażerskimi w Next.js.

Specjalizacja
Chmura · Web · Platformy IFE
Platforma treści dla pasażerów i procesy wewnętrzne
Aplikacja
ASP.NET Core · React · Azure
Nowoczesne API, panel administracyjny i witryny dla pasażerów
CMS
Umbraco 14 → Umbraco 17
CMS headless w modelu multi-tenant
Platforma
Azure · Azure Container Apps · Azure API Management
Hosting w chmurze, routing i środowisko uruchomieniowe aplikacji
Dane
MongoDB Atlas · SQL Server
Przechowywanie danych strukturalnych i dokumentowych
Wymiana komunikatów
Service Bus
Synchronizacja sterowana zdarzeniami i procesy platformy
Infrastruktura
Azure DevOps · Terraform · Infrastruktura jako kod
Automatyzacja budowania, wdrażania i infrastruktury
Tożsamość
Azure B2C
Uwierzytelnianie i zarządzanie dostępem
● Na koniec

Przestarzały produkt IFE, który wciąż musi latać?

Warto zaangażować nas, zanim przepisanie systemu stanie się ryzykiem. Pomożemy zmapować stary system, wskazać najbezpieczniejsze punkty styku i najpierw wymienić najbardziej ryzykowne części — bez przerywania działania produktu i pracy użytkowników.