Airhelp - Projekt WordPress | WPPoland

AirHelp powstało w 2013 roku jako start-up, by stać się globalnym liderem w obronie praw pasażerów lotniczych, pomagając ponad 13 milionom osób zrozumieć ich...

#Strony www
Airhelp - Projekt WordPress | WPPoland

#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:

  1. 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ń.
  2. 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.
  3. 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.
  4. 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:

  1. 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.
  2. 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.
  3. 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?#
Airhelp to realizacja z kategorii Strony www, oddana w 2019 roku. Stoi za nią: WordPress, React, Next.js, GraphQL oraz Redis.
Jak wyglądał przebieg prac przy Airhelp?#
Wdrożenie zajęło około sześciu tygodni i ruszyło w 2019 roku. Stoi na: WordPress, React, Next.js, GraphQL oraz Redis. Układ dostarczył klient. Na jego podstawie zbudowałem szablony i model treści, a ścieżki, którymi idzie ruch, sprawdziłem na kopii produkcji, nie na pustej instalacji.
Co było najtrudniejsze technicznie w Airhelp?#
Najwięcej uwagi pochłonęło spięcie: WordPress, React, Next.js, GraphQL oraz Redis. Treść, konfiguracja i kod siedzą w osobnych warstwach, więc wycofanie zmian po starcie rusza jedną z nich, a nie wszystkie trzy. Przypadki brzegowe wychodzą na kopii produkcji i tam idą testy.
Co z projektu Airhelp da się wykorzystać przy kolejnym wdrożeniu?#
Przenosi się warstwa techniczna: WordPress, React, Next.js, GraphQL oraz Redis. Na kolejnym wdrożeniu wygląda podobnie. Nie przenosi się model treści tego projektu ani jego integracje, bo powstały pod dane jednego klienta i pod brief z kategorii Strony www. Kolejne wdrożenie zaczyna się od analizy zakresu, a wycena idzie po niej.

Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotuję wersję pod Twoje cele biznesowe.

Porozmawiajmy