Jak vybudovat datovou aplikaci, a jaké jsou “best practices” při jejím vývoji?
Každý den proudí do bankovních systémů tisíce záznamů, které je potřeba správně zpracovat a včas doručit dál. Neviditelná, ale zásadní práce, na které stojí spolehlivost finančních institucí i jejich schopnost plnit regulatorní požadavky. Právě v téhle oblasti působí Jaroslava Salavcová, datová vývojářka v České spořitelně, která stojí také za vznikem aplikace Rockify.
Od kódu k regulátorovi
Její pracovní den se točí kolem kódu, který zajišťuje, aby data putovala tam, kam mají, ať už jde o interní systémy, nebo o regulatorní reporty pro Českou národní banku. „Oficiálně jsem datový vývojář, ale vlastně vyvíjím hlavně podpůrné aplikace,“ popisuje Jaroslava svou pozici. Kromě samotného zpracování dat se stará i o to, aby se jednotlivé procesy spouštěly ve správný čas, správném pořadí a měly k dispozici vše potřebné. Největšími výzvami jsou pro ni nedostatek času, množství schůzek a často ne zcela definitivní zadání.
Nezmeškejte žádné novinky ITT
Řešení na míru
Aplikace Rockify vznikla jako odpověď na velmi praktický problém – jak řídit a hlídat stovky až tisíce denních úloh, které zpracovávají data v bankovním skladu. Každý proces musí proběhnout přesně ve správném pořadí, s kontrolou všech podmínek a bez kolize s jinými běžícími úlohami. Právě tuto orchestraci dnes Rockify zajišťuje, a to nejen pro původní datový sklad, ale také pro další týmy, které si na něm staví vlastní datové produkty. „Bylo potřeba vyrobit něco, co by umožnilo sledovat a řídit procesy, které loadují a zpracovávají data do DWH. Žádný komerční nástroj, který by splňoval požadavky, tehdy na trhu nebyl, “ vysvětluje Jaroslava.
Rockify jako dirigent datových procesů
Rockify dnes funguje jako univerzální orchestrátor, který propojuje různé datové platformy a zajišťuje, že úlohy běží přesně tak, jak mají. Uživatelé si v něm mohou jednoduše poskládat jednotlivé kroky, určit jejich pořadí i podmínky spuštění. Díky tomu zvládne obsloužit širokou škálu procesů – od databázových procedur přes python skripty pro práci s daty z Datalake až po REST služby, které spouštějí úlohy na platformách jako Keboola nebo Databricks. „Kromě vlastní orchestrace procesů umí Rockify také sledovat a vyhodnocovat SLA, odesílat notifikace třeba v případě chyby nebo zpožděného zpracování, monitorovat přenosy dat či sbírat “události” z jiných aplikací,” dodává Jaroslava.
Technické výzvy
Na vývoji aplikace Rockify se podílí celý tým, který momentálně řeší přechod aplikace z platformy Oracle Weblogic Server na OpenShift, což je nemalá výzva. První převedená aplikace by měla brzy běžet v produkci. Vedle Rockify se tým stará i o rozvoj dalších pěti aplikací, například Relman pro nasazování změn nebo DETool pro kontroly a opravy dat. Jednou z hlavních komplikací při přesunu na OpenShift jsou tzv. „dlouho běžící úlohy“. Úlohy spouštěné v rámci loadů dat mohou běžet i hodiny, což OpenShift špatně zvládá a komplikuje toJaroslava se při vývoji drží osvědčeného přístupu, který začíná u „otravných maličkostí“: „Je potřeba napsat spousty kódu – různé procedury pro zamykání, logování nebo změny stavů. Následně se musí dobře vymyslet a poskládat kostra celého řešení, to se nemusí povést napoprvé. Takže se kostra párkrát zase rozebere a přeskládá,” popisuje. Teprve potom začíná efektivní skládání jednotlivých funkcí a rychlý nárůst nové funkcionality. „Dobře vymyšlená kostra a dobře napsané otravné maličkosti se poznají podle toho, že nová funkčnost pak zabere třeba jen dvě hodiny práce i se zaverzováním,“ dodává. údržbu i nasazování. Řešení spočívá v přesunu spouštění těchto úloh do speciální komponenty mimo OpenShift, která navíc umožňuje jejich asynchronní provádění.
Jednoduchost versus univerzálnost
Zeptali jsme se Jaroslavy, jaký přístup preferuje při návrhu ETL frameworků, načež odpověděla, že: „Framework by měl být jednoduchý v tom smyslu, aby se uživatelům dobře používal, ale i v implementaci, aby se dobře rozvíjel a spravoval. Univerzálnost řešení podle ní záleží na konkrétní míře, kterou chceme pokrýt, ale cílem není vytvářet extra nástroje pro každou maličkost. Nejlepší je hledat zlatou střední cestu. Při samotném návrhu nového ETL frameworku vychází z bohatých zkušeností: „Napsala jsem za život desítky něčeho, co by se mohlo nazvat frameworkem, takže každý další už není tak docela nový. Můžu použít to, co se nejlépe osvědčilo, a naopak upravit nebo vynechat věci, které nebyly ideální,“ popisuje.
Best practices
Jaroslava se při vývoji drží osvědčeného přístupu, který začíná u „otravných maličkostí“: „Je potřeba napsat spousty kódu – různé procedury pro zamykání, logování nebo změny stavů. Následně se musí dobře vymyslet a poskládat kostra celého řešení, to se nemusí povést napoprvé. Takže se kostra párkrát zase rozebere a přeskládá,” popisuje. Teprve potom začíná efektivní skládání jednotlivých funkcí a rychlý nárůst nové funkcionality. „Dobře vymyšlená kostra a dobře napsané otravné maličkosti se poznají podle toho, že nová funkčnost pak zabere třeba jen dvě hodiny práce i se zaverzováním,“ dodává.
Existuje ideální datová platforma?
Jaroslava přiznává, že jde o náročnou otázku. „Myslím, že ideální platforma neexistuje. Je třeba se smířit s tím, že dokonalé řešení nenajdeme, a místo toho se vydat směrem, který nám připadá dostatečně dobrý, vytrvat v něm a postupně něco vybudovat,“ popisuje. Ze své zkušenosti dodává, že by bylo žádoucí, aby nová řešení byla skutečně inovativní a nevytvářela pouze kopii desítky let starých postupů na nové platformě.