Jak (a proč) zálohujeme ClickUp

V naší každodenní práci se spoléháme na ClickUp. Máme v něm velkou část našeho operačního know-how a jeho prostředí nám vyhovuje. Nativní možnosti exportu a zálohování dat nám ale v ClickUpu nestačí. Proto jsme vytvořili workflow, které pokrývá naše potřeby v oblasti zálohování, obnovy i zobrazení dat. Nešlo nám totiž jen o export dat, ale o kontinuitu našeho fungování.
Proč nám nestačil nativní export
Když dnes chcete zálohovat data z ClickUpu, nabízí se v první řadě nativní export do formátu CSV. Ten se může v některých případech hodit, třeba pro reporting nebo jednoduchou extrakci dat. Jako nástroj pro kompletní zálohu je ale výrazně méně vhodný. Zvlášť pokud vaše každodenní práce stojí na kontextu, komentářích, popisech tasků nebo jejich hierarchii.
Nechtěli jsme mít kvalitní zálohu dat jen proto, abychom ji měli „pro jistotu“ někde odloženou. Potřebovali jsme, aby zálohovaná data byla v takové podobě, se kterou se dá dál smysluplně pracovat v případě výpadku služby nebo její celkové nedostupnosti. Právě proto pro nás bylo nezbytné začít řešit zálohu komplexněji.
Jaká rizika jsme chtěli mít pokrytá
Proč ale data vůbec zálohovat? K čemu je to vlastně potřeba? Z pohledu našich potřeb jsme chtěli pokrýt konkrétní situace, které by v našem reálném provozu mohly nastat. Snažili jsme se tedy odpovědět si na několik základních otázek:
Co bychom dělali, kdyby byl některý náš space nedopatřením smazán a už se ho nepodařilo obnovit? Nebo kdyby z jiného důvodu došlo k podobné ztrátě dat? Pro naše fungování by to představovalo zásadní problém.
Co kdyby došlo k výpadku na straně ClickUpu? I krátkodobý výpadek by pro nás byl z pohledu každodenní práce citelný. A nedávný výpadek Cloudflaru jen připomněl, že podobné situace nejsou čistě teoretické.
Co kdyby došlo k dlouhodobějšímu omezení nebo přerušení služby ze strany ClickUpu?
A v neposlední řadě: co kdybychom se v budoucnu rozhodli přejít na jiný SaaS nástroj, na kterém bude MeasureDesign fungovat? Nemohla by nám existující záloha usnadnit případnou migraci?
Jak jsme se rozhodli, co vlastně potřebujeme
Na základě těchto otázek jsme došli k závěru, že potřebujeme řešení, které nám umožní automatizovat proces zálohy. Zároveň jsme ale chtěli mít možnost data nahrát zpět do ClickUpu a případně k nim přistupovat i v lidsky čitelné podobě. Ať už kvůli kontrole, auditu, nebo prostě ve chvíli, kdy by to jinak nešlo.
Nakonec jsme potřebovali ještě jednu věc: automatickou kontrolu nad celým procesem. Co když se při konkrétní záloze v konkrétní den něco nepovede? Měli bychom o tom vědět, abychom to mohli řešit a aby případné selhání nezůstalo bez povšimnutí.
Naše řešení ve třech částech
Na základě výše popsaných požadavků jsme vytvořili tři nástroje, ze kterých nakonec vzniklo jedno funkční workflow.
Prvním z nich je skript, kterým provádíme zálohu dat. Spouští se každý den, přistupuje k API endpointům ClickUpu a stahuje všechna naše data včetně příslušných metadat, příloh a vazeb. Subtasky si zachovávají informace o parent tascích, tasky obsahují svůj textový obsah i přílohy. A protože si v nich často posíláme screenshoty a obrázky, bez příloh by to zkrátka nebylo ono a záloha by nebyla kompletní.

Druhým nástrojem je obnovovací skript. Pomocí něj jsme schopni dostat data ze zálohy zpět do ClickUpu, pokud by se ukázalo, že je to potřeba. Tento skript ale žádná existující data v ClickUpu nemění. Pouze vytváří nové spacy ze zálohy, takže nehrozí, že bychom při obnově přišli o něco dalšího.

Poslední částí je prohlížeč. Ten nám umožňuje zobrazit data obsažená v záloze tak, aby byla snadno čitelná a srozumitelná. Funguje v podstatě jako webová stránka, ve které je možné obsah zálohy procházet. Všechno je uspořádané hierarchicky: spacy obsahují listy a tasky, tasky zase textový obsah, komentáře, přílohy i obrázky.


Záloha dat totiž řeší jen část problému. Tou druhou je otázka, jestli dokážeme zálohu později použít k něčemu skutečně užitečnému. A právě naše workflow, složené ze tří částí, nám to umožňuje.
Jak jsme naše workflow nasadili
Zálohovací proces jsme nasadili do Google Cloudu. Pracujeme s ním často, takže se jeho využití přímo nabízelo. Záloha probíhá každou noc jako Cloud Run Job. Není tak závislá na počítači některého z členů týmu a spouští se automaticky podle nastaveného harmonogramu. Nad samotnou zálohou jsme postavili monitoring. Ten hlídá úspěšnost běhu a pokud něco nedopadne tak, jak by mělo, dá nám hned vědět.
Samotné vytvoření zálohy ale nestačí. Stejně důležité je vědět, že záloha skutečně vznikla a že během jejího vytváření nedošlo k žádným problémům. Právě proto jsme vedle samotného zálohovacího procesu řešili i jeho průběžnou kontrolu. Monitoring tvoří samostatný skript, který spouští hlavní proces zálohy. Kontroluje, zda záloha doběhla tak, jak má, a následně vyhodnocuje log vzniklý během jejího běhu. Pokud by se v logu objevily chyby nebo jiné problémy, automaticky nás upozorní e-mailem.
Záloha, kterou nikdo neověřuje, totiž podle nás není tak úplně záloha. Proto nezálohujeme ručně, ale celý proces jsme nastavili tak, aby byl automatizovaný, opakovatelný a aby jeho výstup byl pravidelně kontrolován.
Výstup zálohy, tedy všechny soubory, přílohy, obrázky a další data, ukládáme do samostatného bucketu v Google Cloudu. Záloha je tak uložená nezávisle na ClickUpu a v případě problémů zůstává samostatně dostupná.

Co pro nás z toho všeho vyplývá
Existence spolehlivé zálohy nám dává větší jistotu v každodenním fungování. Můžeme se spolehnout na to, že pokud dojde k nějaké neočekávané události, budeme schopni fungovat dál. Zároveň tím snižujeme naši závislost na jedné službě a jejím provozu. Díky tomu jsme lépe připraveni jak na případné výpadky, tak i na možnou budoucí migraci k jiné službě.
Závěrem
SaaS nástroje, jako je ClickUp, jsou skvělé pro produktivitu. A nám se konkrétně s ClickUpem pracuje velmi dobře. Zároveň se pro nás stal natolik důležitým, že v něm dnes máme velkou část našeho know-how a spoustu informací, které využíváme na každodenní bázi. Takto kritická data by ale neměla existovat jen na jednom místě a v jednom dodavatelem určeném formátu.
Naším cílem proto nebylo ClickUp nahradit, ale doplnit ho o jistotu, že o důležitá data nepřijdeme a budeme s nimi schopni pracovat i mimo něj.

Pokud vás naše řešení zaujalo a chtěli byste ho využít nebo si ho upravit pro vlastní potřeby, kompletní technické řešení je k dispozici ve veřejném GitHub repozitáři. Součástí repozitáře jsou všechny tři části workflow - zálohovací nástroj, obnovovací nástroj i prohlížeč záloh včetně dokumentace potřebné pro jejich nasazení a provoz.
Projekt je zveřejněn pod licencí MIT a je poskytován bez jakýchkoliv záruk. Použití, úpravy i nasazení jsou tedy plně na vlastní odpovědnost.
































