„Ať to běží každou noc“ patří k nejčastějším přáním u firemních aplikací. Noční reporty pro finanční oddělení. Týdenní přehledy pro vedení. Měsíční uzávěrky. Úklidové úlohy, které archivují staré záznamy. Připomínkové e-maily dva týdny po nástupu zákazníka. Upozornění na směnu třicet minut předem. Každý postup, v jehož popisu je každý nebo po, je naplánovaný postup – a psát plánovač od nuly je jeden z těch úkolů, které zní jako maličkost, ale klidně spolknou týdny. Když je součástí platformy – těsně propojený s automatizacemi, oddělený pro každé prostředí a od začátku sledovatelný – dá se naplánovaná práce nastavit stejně snadno jako kterákoli jiná logika.
Plánovač nabízí dva různé způsoby plánování, které pokrývají dvě situace, jak naplánovaná práce obvykle vzniká. Pravidelné intervaly ve stylu cronu řeší vzor „každý“: každou noc ve 2:00, každých patnáct minut, první den v měsíci, každý všední den v 9:00 a jakýkoli jiný pravidelný rytmus. Rozvrh se v jednoduché konfigurační obrazovce připojí k automatizaci a ta se spustí přesně podle něj. To je běžný případ a pro řadu prostředí jediné plánování, které kdy budou potřebovat.
Jednorázová budoucí spuštění řeší vzor „po“ – situaci, kdy chce automatizace spuštěná nějakou událostí naplánovat navazující akci na později. Automatizace spuštěná registrací nového zákazníka může naplánovat kontrolní e-mail za dva týdny. Postup potvrzující rezervaci může naplánovat SMS připomínku dvě hodiny před schůzkou. Automatizace řešící chybu může naplánovat další pokus za třicet minut. Ve všech případech právě běžící automatizace předává budoucímu spuštění vlastní argumenty s kontextem, který bude potřebovat. Naplánovaná úloha si tak při spuštění nemusí nic dohledávat; data si nese s sebou.
Zrušení úlohy tento vzor uzavírá. Jednorázově naplánovanou úlohu může pozdější automatizace zrušit, pokud se okolnosti změní. Schůzka se přesunula? Zrušte starou připomínku a naplánujte novou na nový čas. Objednávka se celá zrušila? Zrušte čekající navazující úlohu. Právě díky tomu působí naplánovaná práce spolehlivě, a ne křehce: plánovač není fronta typu „odešli a zapomeň“, ale fronta s viditelnými položkami, které lze prohlížet, upravovat i odebírat.
Oddělení jednotlivých prostředí je strukturní detail, na kterém při provozu ve větším měřítku záleží. Každé prostředí má svůj vlastní rozvrh; selhání naplánované práce v jednom prostředí neovlivní ostatní; stropy na zdroje se uplatňují zvlášť pro každé z nich. Zlobící noční úloha v jednom prostředí tak nezpomalí naplánovanou práci na celé platformě. Plánovač navíc spouští úlohy přímo v reálném prostředí daného zákazníka, ne přes nějaký sdílený nebo odkazovaný kontext, což předchází celé řadě překvapení, kdy by naplánovaná úloha v jednom prostředí omylem sáhla na stav jiného.
Automatická synchronizace konfigurace cronu udržuje provozní vrstvu v pořádku. Když prostředí přidá nebo odebere naplánovanou automatizaci, cron konfigurace platformy se aktualizuje sama – bez ručního zásahu operátora a bez rizika, že by se naplánovaná úloha rozešla se skutečným záměrem prostředí. Operátoři tak plánovač nemusí hlídat pokaždé, když prostředí upraví své automatizace.
Správa paměti je u naplánovaných úloh drobnost, ale důležitá. Dlouho běžící automatizace – noční uzávěrka procházející desítky tisíc záznamů, importní úloha zpracovávající velký soubor – dostanou paměťové limity odpovídající takové práci, ne přísnější limity používané u interaktivních volání API. Platforma bere naplánovanou práci jako jiný druh zátěže a podle toho ji dimenzuje, takže obvyklé „noční úloha ve tři ráno došla paměť“ prostě nenastává.
O přehled se stará samostatný protokol plánovače, který u každého naplánovaného spuštění zaznamená čas, dobu trvání, výsledek i případné chyby. Přepínač určuje, zda je protokolování zapnuté – některá prostředí ho chtějí mít potichu, jiná pořád zapnuté – a samotný protokol se dá dotazovat a filtrovat stejně jako jakákoli jiná data v prostředí. Pro administrátory, kteří řeší „proběhla dnešní noční úloha vůbec?“, je odpověď na jedno kliknutí a s plným kontextem.
Ukázka: měsíční přehled faktur. Implementátor vytvoří automatizaci, která najde všechny faktury uzavřené v předchozím měsíci, seskupí je podle zákazníka, pro každého vykreslí PDF souhrn a ten e-mailem pošle příslušnému správci účtu. Připojí cron rozvrh – první den v měsíci v 6:00 – a tím to celé končí. Prvního každého měsíce se automatizace spustí, každý správce účtu dostane svůj přehled ještě před sedmou ranní a protokol plánovače zaznamená výsledek. Když v konkrétním měsíci selže spuštění u jednoho zákazníka, protokol ukáže u kterého; když selže celý běh, administrátor se to dozví jako první – přesně proto ta vrstva pro přehled existuje.
Ukázka: odložená připomínka. Automatizace potvrzující rezervaci, která se spustí ve chvíli, kdy si zákazník rezervuje schůzku, naplánuje připomínku na dvě hodiny před jejím časem. Připomínka je jednorázově naplánovaná úloha a nese s sebou identifikátor schůzky jako svůj argument. Když nastane její čas, úloha si zjistí aktuální stav schůzky – ne stav v době rezervace, ale ten aktuální – a připomínku pošle jen tehdy, když je schůzka stále platná. Pokud se mezitím přesunula nebo zrušila, původní připomínku zruší ta automatizace, která přesun nebo zrušení řešila. Žádné zastaralé připomínky, žádní zmatení zákazníci.
Pro prostředí, jejichž provoz na naplánované práci závisí – což je při určité velikosti většina z nich – je plánovač tou nenápadnou funkcí, která mění „tohle bychom chtěli zautomatizovat“ na „máme hotovo“. Spolu s automatizacemi, doručováním v reálném čase a schránkou oznámení tvoří provozní tep platformy.