Typefully

43 miliony requestów w 4 godziny na serwerze Mikrus

Avatar

Share

 • 

15 days ago

 • 

View on X

Wczoraj głośno było o serwisie "Poland Elects" 🇵🇱 Wspominali o nim Make Life Harder, OficjalneZero, Wykop, pojawiły się tysiące wzmianek w social mediach... Ponad 43 miliony odsłon w godzinach od 20:00 do północy. Dlaczego o tym piszę? Strona była hostowana na Mikrusie 😎 Czytaj dalej 🧵 ↓
Autorem projektu jest Piotr Deda @PiotrDeda. Stworzona przez niego strona jest niemal statyczna. Wykonuje co prawda co pewien czas zapytania do zewnętrznego storage w celu odświeżenia prezentowanych danych, ale w praktyce składa się z trzech plików: HTML+CSS+JS.
Aplikacja została umieszczona początkowo na VPS Mikrus 2.1, a w trakcie wieczoru wyborczego autor zaktualizował VPS-a do wersji 3.0. Były to odpowiednio parametry: Mikrus 2.1 = 1GB RAM + 10GB dysku Mikrus 3.0 = 2GB RAM + 20GB dysku
Strona została ukryta za usługą Cloudflare, ale... nie do końca poprawnie zostało to skonfigurowane, o czym może świadczyć nagłówek HTTP "cf-cache-status: DYNAMIC", który informuje, że co prawda CF bierze na siebie proxowanie ruchu, ale NIE używa swojego cache 😬
Najprawdopodobniej zabrakło tam nagłówków cachujących dla strony głównej, która praktycznie się nie zmienia (jej elementy generowane są dynamicznie). Podobne nagłówki można było zastosować w przypadku pobieranych z tej samej domeny treści (pliki statyczne).
Liczba requestów wprost do backendu mogła zostać zminimalizowana przez: - wrzucenie do cache CF plików statycznych i assetów - osadzenie CSS/JS w formie inline zamiast ich linkowania. - zalinkowanie frameworka Vue z oficjalnego CDN-a, a nie trzymanie go lokalnie
Bardzo dobrym (w tym przypadku) rozwiązanie architektonicznym było osadzenie fontów webowych wprost z hostingu Google, a nie trzymanie ich lokalnie. Pozwoliło to znacznie ograniczyć liczbę zapytań do serwera VPS.
Sprytne było także wykorzystanie zawczasu map OpenStreetMap zamiast często wybieranych map od Google. Przy tej drugiej opcji, opłata za requesty API przy tym ruchu liczona byłaby w tysiącach dolarów. Warto o takich drobiazgach pamiętać tworząc aplikacje z dużym ruchem.
Wydajność serwisu mogła zostać dodatkowo podniesiona poprzez zastosowanie "Cytrusa", czyli Mikrusowego akceleratora stron, który przejąłby na siebie sporą porcję obsługiwanego ruchu i nawet pomimo błędnie skonfigurowanego Cloudflare, umożliwiłby hostowanie appki np. na Mikrusie 2.1.
Jak widać, sprytnie zaprojektowana i zoptymalizowana aplikacja może przyjąć ogromny ruch, nawet gdy jest hostowana na serwerze za 75zł/rok (tak, rocznie!) i to nawet wtedy, gdy mówimy o ruchu 43+ milionów zapytań w 4 godziny 🤯 Brawa dla autora — za pomysł i wykonanie 👏
Avatar

Jakub Mrugalski 🔥

@uwteam

🤖 Piszę o technologii, AI, automatyzacji, cybersecurity i biznesie. 🛠 Dzielę się użytecznymi narzędziami i case-study 🤔 #DigitalEUAmbassador 🛑 Nie czytam DM