Problem
AirHelp to globalny lider w egzekwowaniu praw pasażerów lotniczych, który pomógł ponad 13 milionom osób uzyskać odszkodowania za opóźnione lub odwołane loty na podstawie regulacji unijnych (WE 261/2004), brytyjskich (UK261), brazylijskich (ANAC 400) oraz konwencji międzynarodowych.
Specyfika serwisu stawiała przed inżynierami skrajne wyzwania architektoniczne:
- Skrajnie nierównomierny profil ruchu: w spokojne dni ruch jest stabilny, lecz w momencie strajku kontrolerów lub globalnej awarii systemów odpraw na formularz zgłoszeniowy wchodzi w ciągu godziny ruch kilkudziesięciokrotnie przewyższający średnią. Serwis musiał bezwzględnie wytrzymać nagły napływ dziesiątek tysięcy równoległych zgłoszeń.
- Trudne warunki użytkownika na lotnisku: pasażer składający wniosek zazwyczaj korzysta ze smartfona na niestabilnym łączu w roamingu, ma przy sobie jedynie zdjęcie karty pokładowej i oczekuje natychmiastowej weryfikacji. Standardowy formularz gubił dane przy chwilowej utracie zasięgu w hali odlotów.
- Wielojęzyczność jako wyzwanie prawne, a nie lingwistyczne: serwis wymagał obsługi 24 odrębnych jurysdykcji prawnych. Każda wersja językowa stanowi niezależny dokument prawny wymagający autoryzacji przez lokalnych prawników, a nie automatyczne tłumaczenie z języka angielskiego.
- Przeciążenia zewnętrznych interfejsów przewoźników: zapytania sprawdzające statusy rejsów kierowane do zewnętrznych API linii lotniczych generowały wysokie opóźnienia i timeouty dokładnie wtedy, gdy awaria u przewoźnika wywoływała falę roszczeń.
Co zrobiłem
Jako programista zaprojektowałem i wdrożyłem witrynę AirHelp, prowadząc pięcioosobowy zespół inżynierów w roli Team Pilot:
- Architektura headless i frontend Next.js: wdrożyłem warstwę prezentacji opartą na React i Next.js z renderowaniem po stronie serwera (SSR) oraz pełnym wsparciem i18n dla 24 rynków. Zapewniło to optymalne indeksowanie treści prawnych w wyszukiwarkach oraz odciążyło słabsze urządzenia mobilne, które nie musiały składać aplikacji po stronie klienta. Wdrożenie spełnia wymogi dostępności WCAG 2.1.
- Odporny na błędy, wieloetapowy formularz roszczeniowy:
- Zaimplementowałem pobieranie danych rejsów przez GraphQL, eliminując nadmiarowy transfer danych w roamingu poprzez odpytywanie wyłącznie o pola wymagane na danym etapie.
- Wprowadziłem lokalne utrwalanie stanu formularza w pamięci przeglądarki, dzięki czemu zerwanie połączenia na lotnisku nie kasuje wprowadzonych danych sprawy.
- Skomunikowałem formularz z kolejkami RabbitMQ, co umożliwiło asynchroniczne odpytywanie API przewoźników z mechanizmem buforowania awaryjnego w Elasticsearch. W razie niedostępności systemów linii lotniczej zgłoszenie pasażera jest bezpiecznie przyjmowane do późniejszej weryfikacji zamiast odrzucenia błędem.
- Skalowalna infrastruktura pamięci podręcznej i bazy danych:
- Rozdzieliłem buforowanie publicznej treści edukacyjno-prawnej (Varnish z niestandardowym VCL, trybem grace i Redis) od transakcyjnego zapisu wniosków w bazie PostgreSQL szyfrowanej algorytmem AES-256 z replikami odczytu na Amazon RDS.
- Wdrożyłem Apache Kafka do strumieniowego przesyłania danych i obsługi powiadomień w panelu użytkownika w czasie rzeczywistym.
- Skonfigurowałem dystrybucję mediów i statyków przez sieć Fastly z kompresją Brotli oraz optymalizacją formatów WebP/AVIF.
Wynik
Wdrożone rozwiązania pozwoliły przekształcić serwis w wysoce skalowalną platformę transakcyjną gotową na globalne skoki obciążenia:
- Odporność na piki ruchu: platforma bez zakłóceń przyjmuje gwałtowne fale odwiedzin podczas masowych odwołań lotów, stabilnie obsługując skalę ponad 13 milionów pasażerów w skali globalnej.
- Ochrona konwersji mobilnej: wieloetapowy proces zgłoszeniowy nie traci danych pasażerów przy wahaniach zasięgu sieci komórkowej, a asynchroniczne kolejkowanie eliminuje odrzucenia wniosków z powodu awarii po stronie linii lotniczych.
- Spójność 24 rynków prawnych: architektura wielojęzyczna pozwoliła na precyzyjne odzwierciedlenie odrębnych reżimów prawnych dla każdego kraju, dając zespołowi prawnemu pełną kontrolę nad publikowanymi treściami.
Stack i czas
- Stack technologiczny: React, Next.js, WordPress (headless CMS), GraphQL, PostgreSQL (szyfrowanie AES-256), Redis, Varnish Cache, RabbitMQ, Apache Kafka, Fastly CDN, Cloudflare, Amazon Web Services (RDS, S3, EC2).
- Czas realizacji: 6 tygodni prac przygotowawczych i wdrożeniowych do momentu publicznego startu platformy; blisko 2 lata stałego prowadzenia rozwoju i optymalizacji serwisu w roli Team Pilot.
Dla firm poszukujących doradztwa przy zaawansowanych platformach webowych: jako specjalista WordPress pomagam projektować skalowalne architektury. Napisz z założeniami projektu, aby omówić wymagania techniczne.
Często zadawane pytania
Najważniejsze odpowiedzi, które pomagają wdrożyć temat w praktyce.
Jakiego zakresu dotyczył projekt Airhelp?
#Jak wyglądał przebieg prac przy Airhelp?
#Co było najtrudniejsze technicznie w Airhelp?
#Co z projektu Airhelp da się wykorzystać przy kolejnym wdrożeniu?
#Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotuję wersję pod Twoje cele biznesowe.
Porozmawiajmy