Wyzwanie
Restauracje mają zwykle menu w PDF albo kod QR prowadzący do listy pozycji. Chcieliśmy, żeby każde danie miało krótki, zapętlony film, który ładuje się szybko nawet na słabym zasięgu przy stoliku.
Wideo dla wielu restauracji oznacza duży transfer, ryzyko wycieku danych między lokalami i koszt dostarczania mediów, który łatwo wymyka się spod kontroli.
Podejście
Do wideo wybraliśmy wyspecjalizowany CDN, bo zwykłe plany popularnych CDN wykluczają takie użycie, a własna sieć dostarczania byłaby za droga w utrzymaniu. Obie opcje przetestowaliśmy na telefonie w sieci 4G: czas był identyczny, więc zdecydował koszt i regulamin.
Pliki trzymamy w magazynie obiektowym bez opłat za transfer wychodzący. Ścieżki do wideo są wersjonowane i niezmienne, więc aktualizacja dania nie wymaga ręcznego czyszczenia cache.
Wdrożenie
Worker transkoduje każde wideo do HLS w trzech jakościach (1080p, 720p, 480p) z dwusekundowymi segmentami, a zdjęcia do czterech rozmiarów WebP z miniaturą zastępczą. Dane restauracji izoluje druga warstwa w bazie (RLS), sprawdzona zapytaniami: lokal A widzi swoje dane, lokal B nic, a zapis do cudzych danych jest odrzucany.
Audyt bezpieczeństwa na wczesnym etapie wykazał trzy krytyczne problemy, m.in. otwartą rejestrację i możliwość eskalacji uprawnień. Wszystkie zostały naprawione. Baza ma pełną kopię co noc i ciągły zapis zmian z 30-dniową retencją.
Wyniki
Serwer menu odpowiada w 57-77 ms, podczas gdy porównywany dostawca w tym samym pomiarze potrzebował 186 ms. Karta ze 146 zdjęciami waży 6,0 MB zamiast 16,4 MB na ekranach o wysokiej gęstości i 2,7 MB na pozostałych. 207 zdjęć przetworzyło się w 3 minuty, bez błędów.
Test odtworzenia bazy: tymczasowy klaster wstał w ok. 2 minuty z danymi zgodnymi z produkcją. Migracja magazynu objęła 1450 obiektów bez zmiany żadnego adresu.











