Continuous Integration / Continuous Delivery (CI/CD) je metodologie vývoje softwaru. Termín si půjčuji a aplikuji ho na data, nikoli software, konkrétně na data, která se neustále mění v čase a která je potřeba kontinuálně integrovat do vašich systémů evidence, tedy neustále!
Jako vždy, když skočím rovnýma nohama do hloubky, můj příklad je převzetí zdroje poloh veřejné dopravy (přístupného přes REST API), který se obnovuje každých 30 sekund, a přenos dat do hostované feature služby v portálu ArcGIS Enterprise a také do prostorově povolené tabulky ve Snowflake. Pro zpracování použiji webový nástroj, protože vysoká dostupnost je samozřejmě žádoucí.
Zde jsou pozice autobusů, vlaků a trajektů před několika okamžiky (brzy v sobotu místního času) v Aucklandu, NZ.
Pozice autobusů, vlaků a trajektů v Aucklandu
Buďte trpěliví, zatímco si užívám zábavu s mým integračním scénářem 😉.
Řekněme, že pracuji ve Fako (fiktivní název), kteří vyřešili problém první/milé poslední míle e-commerce. Fako zjistilo, že dopravní sítě jsou velmi efektivní pro spojení lidí a maloobchodního zboží k nákupu nebo prodeji, když jsou cestující kupujícími i prodávajícími. Ve spolupráci s dopravci odstraníme několik řad sedadel v každém vozidle na obou stranách uličky a nahradíme je mřížkami chytrých úložných skříněk, do kterých mohou naši skladníci v našich skladech umístěných u dopravních terminálů doručovat internetové nákupy. Kupující objednávají z jakékoli webové stránky pro doručení na den a trasu, prodávající prodávají na našem webu a my přenášíme položky na trasy kdekoliv v síti. Jsme speditéři. Mobilní aplikace Fako umožňuje zákazníkům použít telefon k odemknutí skříňky s jejich položkou kdykoliv během cesty. Některé skříňky jsou chlazené, máme vlastní řadu jídelních sad. Velmi oblíbenou funkcí naší mobilní aplikace je možnost účastnit se aukcí opuštěných položek. Fako platí dopravcům ekvivalent jízdného za každou položku, což výrazně zvyšuje jejich efektivní počet cestujících. Fako nemusí kupovat flotilu doručovacích vozidel a dopravci získávají zvýšené příjmy. Obchod kvete!
Zadní systémy Fako běží na Snowflake. Aby vše fungovalo, musí Fako kontinuálně udržovat stav sítě jako prostorově povolené objekty ve Snowflake. Podívejme se jak!
Nejprve nudným způsobem, pro který jsem se sám diskvalifikoval tím, že jsem zvolil frekvenci nepodporovanou plánovačem úloh Windows – bylo by to zkopírovat Spatial ETL workspace zdroj fmw na můj Data Interoperability server a nakonfigurovat plánovanou úlohu založenou na příkazovém řádku zdokumentovaném v log souboru z manuálního spuštění jako uživatel arcgis:
Příkazový řádek pro spuštění tohoto workspace:
"C:\Program Files\ESRI\Data Interoperability\Data Interoperability AO11\fme.exe" C:\Users\arcgis\Desktop\ContinuousIntegration\VehiclePositions2Snowflake.fmw
Tuto možnost byste měli pečlivě zvážit pro vaši situaci, je robustní a jednoduchá.
Nyní ne-nudný způsob. Jak jsem řekl, posunul jsem se tímto směrem prací s daty aktualizovanými hromadně ve vysoké frekvenci. Vytvořím webový nástroj, který provede integraci a pak se po čekání na aktualizaci zdrojových dat zavolá sám.
Wow webový nástroj, který volá sám sebe, žádný webhook a žádné plánování? Je to šíleně jednoduché (možná taky jen šílené).
Vytvořil jsem dva Spatial ETL nástroje, jeden skutečný a jeden dummy, který nic nedělá, ale má stejné jméno a parametry (v tomto případě žádné).

Sdílel jsem historii dummy verze VehiclePositions2Snowflake jako webového nástroje a zaznamenal URL submitJob. Je důležité, aby byl webový nástroj asynchronní, takže když je volán, neblokuje workspace čekáním na odpověď:
https://dev99999.esri.com/server/rest/services/VehiclePositions2Snowflake/GPServer/VehiclePositions2Snowflake/submitJob
Pak upravte skutečný ETL nástroj ve finálním HTTP kroku tak, aby volal URL submitJob. Spusťte nástroj a z jeho historie přepište dummy webový nástroj.
Dovolím vám si nástroj sami prohlédnout, ale v zásadě horní tok získává data o vozidlech a synchronizuje je s portálem a Snowflake a dolní tok čeká na to i na uplynutí 30 sekund a pak provede HTTP volání.
The Self Integrating ETL Tool
Pak stačí spustit webový nástroj jednou ručně a můžete začít závodit; bude se opakovat donekonečna. Sedím zde a obnovuji svou mapu Pro (bez cache vrstvy feature služby) a sleduji pohyb dopravního vozového parku.
Ve Snowflake se také moje data obnovují:
Konzole Snowflake
Zpět k nudným detailům: nezapomeňte při publikování Spatial ETL nástrojů jako webových nástrojů musí být Data Interoperability nainstalováno a licencováno na každém serveru hostujícím nástroje a při použití připojení přes web nebo databázových přihlašovacích údajů jako zde jděte do dialogu Nástroje>FME Options a exportujte požadované přihlašovací údaje (pravým kliknutím pro menu) do XML souborů, umístěte je na svůj server a importujte je do prostředí Workbench jako vlastník služby arcgis. Pokud spouštíte workspace ručně na serveru možná budete muset změnit i Python prostředí. Nakonec zatímco blog ke stažení má soubor FMW, nástroj publikovaný na váš server by měl mít vložený zdroj.
Nyní to byla zábava!