PavelZanek.com
build Nástroje

Laravel Horizon

Laravel Horizon je praktická vrstva nad Redis frontami v Laravelu. Pomáhá sledovat průchodnost jobů, selhání, dobu běhu i nastavení workerů, takže fronty nejsou jen proces někde na serveru, ale část aplikace, kterou lze reálně řídit a kontrolovat. Největší smysl dává u projektů, kde se fronty používají pravidelně a jejich stav má vliv na provoz.

Laravel Horizon

Laravel Horizon je nástroj, který začne být opravdu užitečný ve chvíli, kdy fronty přestanou být jen technický detail. Dokud aplikace zpracuje pár jobů denně, člověk si často vystačí se základním queue workerem a logy. Jakmile ale přes fronty běží e-maily, importy, exporty, notifikace, webhooky nebo delší výpočty, potřebujete vidět víc než jen to, že na serveru běží nějaký proces.

Horizon k Laravel frontám přidává přehled, metriky a konfigurační vrstvu. Neřeší za vás návrh jobů ani to, jestli jsou dobře rozdělené. Pomáhá ale pochopit, co se ve frontách skutečně děje: jak rychle se joby zpracovávají, kde padají, jak dlouho běží a jestli počet workerů odpovídá reálnému provozu.

Kdy fronty začnou být provozní téma

Fronty se v Laravelu zavádějí často kvůli jednoduché potřebě: nechci uživatele nechat čekat na pomalou operaci. To je dobrý začátek, ale časem se z front může stát samostatná provozní vrstva aplikace. Pokud se zpozdí zpracování e-mailů, importů nebo platebních webhooků, už to není jen technický problém. Začne to být vidět v produktu.

V takové chvíli je Horizon užitečný hlavně proto, že dává vývojáři i provozu společný pohled. Vidíte failed joby, průchodnost, runtime a chování workerů. Když se něco začne zhoršovat, nemusíte nejdřív hádat, jestli je problém v Redis, v konkrétním jobu nebo jen v nedostatečném počtu procesů.

Konfigurace, která patří do kódu

Jedna z věcí, které mám na Horizonu rád, je konfigurace workerů v souboru. Nastavení supervisorů, prostředí, front a počtu procesů není jen ruční stav na serveru, ale součást projektu. To se hodí hlavně ve chvíli, kdy aplikace roste nebo se nasazuje do více prostředí.

U produkční aplikace nechci spoléhat na to, že si někdo pamatuje, jak mají workery běžet. Chci, aby konfigurace byla verzovaná, čitelná a opakovatelná. Horizon do toho zapadá dobře, protože dovoluje definovat různé chování pro lokální vývoj, staging a produkci, včetně balancing strategií a limitů.

Dashboard jako rychlá zpětná vazba

Dashboard není jen hezký doplněk. U front je rychlá vizuální zpětná vazba často praktičtější než dlouhé hledání v logách. Když vidíte failed joby, čekající fronty nebo runtime jednotlivých úloh, mnohem rychleji poznáte, jestli je problém jednorázový, nebo se v systému opakuje.

Samozřejmě je potřeba správně vyřešit přístup. Horizon dashboard nepatří veřejně na internet bez kontroly. V produkci má smysl mít jasně nastavenou autorizaci, protože uvnitř jsou informace o provozu aplikace. Když je přístup správně omezený, je dashboard velmi dobrý nástroj pro vývojáře i technickou podporu.

Na co si dát pozor

Horizon sám o sobě nezachrání špatně napsané joby. Pokud joby nejsou idempotentní, neumí dobře pracovat s retry logikou nebo dělají příliš mnoho věcí najednou, dashboard jen ukáže důsledky. Pořád je potřeba přemýšlet nad tím, jak joby navrhovat, jak dlouho mohou běžet a co se má stát při chybě.

Největší hodnotu má Horizon jako součást provozní disciplíny. Fronty se sledují, failed joby se řeší, konfigurace workerů se upravuje podle reálného zatížení a metriky nejsou jen dekorace. V takovém nastavení je Horizon velmi praktický nástroj, protože z neviditelné části aplikace udělá něco, co se dá rozumně řídit.

add_circle Chybí tu nástroj?

Navrhněte nástroj do výpisu

Pokud jste nenašli užitečný nástroj, pošlete mi jeho název a URL. Zkontroluji ho a případně doplním do veřejného katalogu.

alternate_email

Zůstaňme v kontaktu

Odebírejte novinky ze světa Laravelu a infrastruktury přímo do své schránky.