← Back to Speakers
Patryk Sawicki

Patryk Sawicki

CEO i współzałożyciel decocode oraz Safe Tickets

Patryk Sawicki — CEO i współzałożyciel decocode, software house'u specjalizującego się w aplikacjach webowych w Laravelu. Współzałożyciel Safe Tickets, autorskiej platformy biletowej. Z PHP pracuje od 2009 roku, z Laravelem od 2018. Projektuje produkcyjne systemy dla e-commerce i ticketingu. Interesuje się architekturą odporną na obciążenie i pragmatycznymi trade-offami inżynierskimi.

[PL] Trzy warstwy obrony przed spike: jak zaprojektowaliśmy CMS biletowy w Laravelu

Sprzedaż biletów jest trudniejsza, niż się wydaje. Gdy 200 osób klika "kup" w tej samej milisekundzie, każda warstwa stosu - baza danych, kanał real-time, zakładka w przeglądarce - musi podejmować decyzje, których normalnie nie musi. Zbudowaliśmy własny CMS w Laravelu pod Safe Tickets właśnie po to, żeby sobie z tym radzić. Nie dlatego, że gotowe platformy nie potrafią - ale dlatego, że poradzenie sobie z tym dobrze wymagało decyzji architektonicznych, które chcieliśmy podejmować sami. W tej prelekcji pokazuję trzy z nich - i nie udaję, że któraś jest idealna. Po pierwsze: jak serializujemy współbieżne zakupy na poziomie bazy, używając czterowarstwowego pattern'u idempotentności łączącego Cache::lock z UNIQUE constraint w DB jako finalnym fallbackiem, który przeżywa zarówno wyczyszczenie cache, jak i przerwanie locka. Po drugie: jak utrzymujemy spójny stan miejsc we wszystkich otwartych zakładkach przy użyciu Laravel Reverb - pięć typów eventów, kanały publiczne i prywatne, oraz świadome trade-offy przy broadcasting wewnątrz transakcji DB. Po trzecie: co się dzieje, gdy użytkownik zamknie zakładkę z zablokowanymi miejscami. Nie karzemy go - dajemy mu czas. sendBeacon, dwuminutowy grace period i state restore, który przeżywa pełne odświeżenie strony. To nie jest prelekcja "zbudowaliśmy idealny system". To prelekcja "oto trade-offy, które zrobiliśmy, oto co zmienilibyśmy, oto co zrobilibyśmy znowu".