Začalo to před rokem – vyrazil jsem na Data fesťák (kdy vlastně bude další?), přičichnul ke Keboole a trochu jsme pokecali. O půl roku později přišel Padák na myšlenku, že když dělám Salesforce, tak bych jim mohl napsat konektor, který by uměl aktualizovat data. Zajímavá výzva, zrovna jsem se pral s obcházením všech těch governor limitů, které SF má, tohle bude fajn. Trvalo to dalších pár měsíců, než jsme se potkali v kavárně, kde dělají hnusné kafe, ale Padák je stejně ochoten si tam zřídit kancelář.
A pak to bylo “ráz na ráz”.
Je to jednoduchý
Padák umí krásně povídat o jejich řešení, všechno zní logicky a velmi jednoduše. Napsat pro ně extender není žádná makačka.
Prostě napíšeš kód, zveřejníš ho na GitHubu nebo někde jinde, image v dockeru si ho stáhne, Keboola do ní navíc nahraje soubory, se kterými je potřeba něco udělat, a konfiguraci, kód s tím něco provede a případně vytvoří výstupní soubory, Keboola si stáhne chybové záznamy a případné výsledky a docker se spokojeně vypne. Nehledej v tom vědu, je to easy.
Opravdu to není problém
Napsat první verzi zdrojáku bylo opravdu jednoduché. Vzal mi soubor z disku a podle něj aktualizoval záznamy v Salesforce. Hotovo během hodinky. Skvělé, že má Salesforce tak detailní dokumentaci a ukázkové kódy.
Teď to obalit tou logikou načítání nastavení z Kebooly a přenosových souborů. Mají to chlapci pěkně popsané, ale stejně jsem byl velmi rád za zdrojáky Davida Esnera, které jsem po dohodě vyzobal a přiohnul sobě na míru. Ani to nebolelo, druhá hodinka programování za mnou.
A tak celý nadšený vyplňují registrační checklist a posílám to klukům, že jsem hotový.
Docker
Odpověď je rychlá – vždyť nemáš docker image. Jsem trochu překvapen, nějak jsem měl pocit, že “se to samo stáhne, spustí, zajistí”, ale podle všeho musím ještě něco udělat. Probůh jak to funguje?
Vždyť to tady máme popsané, je tam něco nejasného? No je to dlouhé, složité, neznámé. Nechcete se potkat, že bychom to během hodinky udělali spolu a bylo? Používáme tě ke kontrole dokumentace, zda je zřejmá 🙂 (překládám si jako že nechtějí).
A tak se trápím, instaluji, zkouším. Do toho přichází Padák s informací, že na Digital Ocean se dá Docker image koupit za 5USD na měsíc (a při registraci přes můj odkaz dostanete 10USD jako kredit). Proč bych to probůh dělal, když je to normálně zadarmo a stačí to nainstalovat?
Po hodině hledání problémů se ovšem rád registruji, během minutky mi to běží a já se pouštím do praktického ladění, testování a hraní. Konečně chápu, jak se pro Keboolu testuje nový kód. A že někdy stojí za to zaplatit, než se trápit. Dva večery ladění mě stály 0,03USD, to celkem jde.
Maven
Aby těch nových technologií nebylo málo, tak David ve svých kódech používá Maven pro odkazování na související balíčky. Než bych se s nimi stahoval, aby se mi kódy podařilo zkompilovat, rozhoduji se pro jeho použití také. Trochu problém mám jak do něj ale zaregistrovat vlastní balíček pro komunikaci se Salesforce, ale naštěstí dost rychle nacházím, že už je to někde nahrané a stačí se odkázat.
Uff, do tohohle jsem naštěstí úplně do hloubky proniknout nemusel, protože jinak to vypadýá, že odkázat se na vlastní balíček není úplně triviální.
Nicméně díky odlišné struktuře adresářů si ještě užívám při kompilaci kódu, ale tady naštěstí problém i řešení nacházím rychle.
Zkrátka porod
První porod je dlouhá věc, první psaní komponenty pro Keboolu také. 30 % času jsem strávil programováním, 20 % trápením se a hraním s Dockerem, 10 % zabral Maven, 20 % testování a 20 % komunikace včetně úvodní schůzky.
Další porody bývají rychlejší a pokud to tady bude stejné a budu o polovičku rychlejší, díky zkušenostem, tak mě skoro láká napsat něco dalšího. Programátor jsem už být nechtěl, ale tyhle radůstky před spaním, to je něco jiného.
Navíc ten zápis do Salesforce je proklatě rychlý. Přes Data Loader jsem tam cpal a aktualizoval data celý den, přes Keboola jsem tři miliony řádků zaktualizoval během 6 minut. Slušná rychlost.