W skrócie
Zaprojektowaliśmy foura.ai od zera i w dwa dni wdrożyliśmy nowy wygląd we wszystkich serwisach FourA. Blog, dokumentacja, portal aktualizacji, strony logowania, szablony e-maili, strony błędów. Jeśli coś ma w nazwie FourA, teraz wygląda spójnie. Po stronie infrastruktury przebudowaliśmy system monitoringu, aby wyeliminować fałszywe alerty, oraz dodaliśmy konfigurowalne progi wraz z prawdziwym rejestrem zdarzeń.
Co nowego
Całkowity redesign strony
Główna strona przeszła pełną metamorfozę wizualną. Nowa typografia (Outfit), indygo jako motyw kolorystyczny oraz pełne wsparcie dla jasnego i ciemnego motywu z opcją dopasowania do systemu. Przebudowaliśmy każdy komponent: karty cennika, playground, landing page, strony kontaktowe i prawne oraz sekcję podglądu dashboardu (która teraz wyświetla żywy HTML zamiast statycznych zrzutów ekranu).
Dodaliśmy tagi meta OG renderowane po stronie serwera, dzięki czemu udostępnianie linków FourA na Slacku czy Discordzie pokazuje poprawny tytuł i opis każdej strony. A jeśli jesteś już zalogowany, przyciski automatycznie zmieniają się z "Try Free" na "Go to Dashboard".
Jeden design system, wszędzie
Jeden redesign to miła rzecz. Ale to spójność we wszystkich punktach styku robi prawdziwą różnicę. Wdrożyliśmy ten sam design system w następujących miejscach:
- Blog i dokumentacja z nową typografią, kolorami i ujednoliconymi nagłówkami
- Portal aktualizacji w pełni spójny z główną stroną
- Strony uwierzytelniania, gdzie każdy proces logowania i rejestracji pasuje teraz do wyglądu FourA
- Szablony e-maili dla powiadomień o kluczach API, ostrzeżeń o limitach i alertów monitoringu
- Strony błędów, dzięki czemu nawet błąd 502 pasuje do marki
Ustawiasz ciemny motyw raz i masz go wszędzie. Stworzyliśmy synchronizację motywów między serwisami za pomocą wspólnego cookie w domenie .foura.ai z trzema stanami: system, light i dark. Twoje preferencje są zapisywane między kartami i sesjami.
Paleta komend Cmd+K
Naciśnij Cmd+K (lub Ctrl+K) na blogu, w dokumentacji lub na portalu aktualizacji. Otrzymasz natychmiastowy dostęp do wyszukiwarki i nawigacji. Gdy pole wyszukiwania jest puste, zobaczysz dostępne miejsca docelowe. Zacznij pisać, a zawartość będzie filtrowana w czasie rzeczywistym. Mała funkcja, ale ogromna wygoda.
Ceny w wielu walutach
Cennik wykrywa teraz Twoją lokalizację przez GeoIP i pokazuje kwoty w lokalnej walucie. Na start obsługujemy USD, EUR i GBP. Kursy walut są odświeżane co tydzień na podstawie rzeczywistych danych rynkowych, a baza GeoIP jest aktualizowana co dwa tygodnie. Koniec z domyślaniem się, ile ostatecznie zapłacisz.
Pod maską
Gruntowna przebudowa monitoringu
Głównym problemem były fałszywe alerty. Nasz monitoring CPU porównywał zużycie pojedynczego rdzenia z limitami wielordzeniowych kontenerów. Proces Node.js zużywający 90% jednego rdzenia w 4-rdzeniowym kontenerze generuje 22,5% całkowitego obciążenia, a nie 90%. Znormalizowaliśmy wszystkie metryki CPU do rzeczywistej pojemności kontenera.
Sprawdzanie rate limitów przenieśliśmy ze zliczania na poziomie poszczególnych instancji do API gateway, gdzie limity są faktycznie nakładane. To wyeliminowało fałszywe ostrzeżenia o zbliżaniu się do limitu żądań, które wynikały ze zliczania ruchu między wewnętrznymi usługami.
Progi alarmowe znajdują się teraz w bazie danych z pełnym API do odczytu i edycji. Możemy dostrajać czułość alertów bez konieczności ponownego wdrażania aplikacji. Dodaliśmy również rejestr zdarzeń z histerezą, dzięki czemu usługa migocząca między stanami nie wysyła 50 powiadomień.
Duch 19 000 żądań
Błąd parsowania w naszym potoku żądań powodował wyciek licznika aktywnych żądań. Nieudane walidacje zwiększały licznik, ale nigdy go nie zmniejszały. Usługa proxy routing zgłaszała 19 390 "aktywnych" żądań. Rzeczywista liczba wynosiła około 20. Naprawiliśmy to, opakowując śledzenie żądań w odpowiednią obsługę błędów.
Infrastruktura
ClickHouse został zaktualizowany z wersji v24 do v26 LTS wraz z optymalizacją wydajności: 7-dniowy TTL dla tabel logów systemowych, zmniejszona liczba wątków w tle i zwiększona pamięć z 2 GB do 4 GB. Baza danych Proxy Vault otrzymała takie samo zwiększenie pamięci. Po stronie CI dodaliśmy grupy współbieżności, aby zapobiec wyścigom wdrożeń (race conditions), gdy wiele przepływów pracy uruchamia się jednocześnie.
Jednak najbardziej przyszłościowa zmiana może okazać się tą najmniejszą. Dodaliśmy plik llms.txt, aby asystenci AI mogli czytać ustrukturyzowany opis tego, co robi FourA. Mamy rok 2026. Coraz większa część programistów szuka narzędzi przez AI, a nie przez wyszukiwarki. Warto więc im to ułatwić.