Digest novinek v Keboola Connection #5

11.10.2013, 22:17 - UPDATE: Tomáš Trnka a Radovan Jirka mě v komentářích na Facebooku "sepsuli", že to je moc #nerd. Doplnil jsem pro ně komentáře do závorek :)


Po delší době vykopávám další "weekly digest" novinek v Keboola Connection. Docela úspěšně prodlužuju intervaly mezi publikací těhle změn a novinek,  pokorně jsem se odhodlal přestat tomu říkat "weekly digest" :-) Předchozí 4 proběhly v Google Docs, pak v Mailchimpu a teď jsem to celé přesunul sem, na padak.keboola.com blog. Historické digesty jsou tady: 

  • #1 (18.3..2013)
  • #2 (25.3.2013)
  • #3 (1.4.2013)
  • #4 (12.6.2013)

Opět v obraně před "TL;DR" odpověďma přepínám do módu rychlého seznamu s linkama. Dotazy v komentářích, prosím. Čísla bodů nereflektují mnou vnímaný význam.


Obecně Keboola Connection

  1. vyrobili jsme generátor UIček a přepisujeme frontend komponent; dovedeme teď různým lidem ukazovat různé UI + stavba UI je skvěle rychlá
  2. v backend DB máme nově všechny SAPI tokeny šifrované 
  3. servery, které se starají o běh našich komponent, migrujeme do AWS VPC (umožňuje nám to lépe izolovat jednotlivé služby a vynutit si větší bezpečnost na nižší úrovni naší infrastruktury)


TAPI

  1. máme Redshift TAPI backend; jakoukoliv existující transformaci s MySQL backendem je možné odbavit na Amazon Redshift clusteru. Kratičká zkušenost s MySQL / Redshift / Vertica / BigQuery je popsaná tady. (Redshift je sloupcová databáze, kterou Amazon "koupil" od http://www.paraccel.com/. Je to SQL na steroidech, de-facto bez limitů.)


SAPI

  1. plná podpora asynchronních loadů (díky tomu můžeme ještě lépe horizontálně škálovat)
  2. možnost bezpečně emailem doručit nově vyrobený token (kolegovi / klientovi)
  3. mazání sloupců tabulek, přidávání a odebírání indexů je zpracováno asynchronně
  4. je možné snapshotovat tabulky - pak se provede otisk všech dat, metadat a eventů dané tabulky
    1. ze snapshotu je možné vyrobit novou tabulku (rychlá forma "copy")
    2. tabulku je možné ze snapshotu taktéž obnovit (rollback)
  5. máme API na mazání řádků v tabulce
  6. máme API na vyprázdnění tabulky
  7. u každé tabulky je možnost nechat si vykreslit Graf, který ukazuje jak daná tabulka vznikla; graf je de-facto pavouk, který ukazuje, jaké transformace načítají jaké tabulky a jaké tabulky z nich pak vyrábí/zapisují. Jednotlivé objekty v grafu jsou klikací a slouží jako navigace


Extraktory

  1. databázový extraktor podporuje MSSQL
  2. ConstantContact (něco jako Mailchimp, jen trochu víc profi)
  3. YouTube
  4. Mailchimp
  5. Recurly (systém na vyúčtování předplatného)
  6. NetSuite (největší cloud ERP systém)
  7. Konvertor měn (získává kurzy měn z Evropské Centrální Banky a Česká Národní Banky a různě konvertuje měny v datech v Storage API)
  8. všem extraktorům brzo doplníme chybějící UI


Writer

  1. nově nepoužívá pro upload dat do GoodData CL Toolu - děláme přímý REST API load (zahazujeme komponentu, kterou GoodData dál nechce podporovat - díky tomu zároveň získáváme větší kontrolu nad celým procesem zpracování dat)
  2. UI je přepsané do Angular JS
  3. ze SAPI exportuje data komprimovaně (jen prostě zrychlení :-)
  4. umí se vypořádat s problémem GoodData Auth Proxy, která vrací u některých jobů chybu 401 (bud v Q4 od GD opraveno)
  5. report execution provádíme přes REST API a né přes CL Toolu (viz bod 1)
  6. veškeré logy v S3 jsou privátní, UI generuje podepsané odkazy, platné 2 dny
  7. podpora SSO, pokud writer dostane email platného uživatele, umí na něj vrátit SSO link (SSO je Single Sign On - mechanismus, jak do GoodData přihlásit lidi, aniž musí někam zadávat heslo)
  8. podpora Mandatorních Filterů - objekt k filtraci se zadá tečkovou notací dle SAPI, například "out.c-main.orders.product = 7" - writer se postará o všechno ostatní; konfigurace je v SYS stage a je v takovém formátu, aby byla generovatelná z transformace. Je tedy možné pomocí joinu zjistit, který obchodník nově prodává který produkt a připravit mu pro to MUF (mandatorní filter je princip, jak lidem zamezit koukat na část dat v projektu, aniž sami vědí, že koukají na filtrovaná data)


Provisioning

  1. pro více sandboxů jednoho KBC uživatele vyrábí společné SQL credentials - není nutné při přepínání projektů přelogovávat SQL klienta
  2. umí fallback na perzistentní transformační backend v OVH - ochrana před sleháním SPOT instancí (provisioning zajišťuje vyrobení SQL databáze pro konkrétní datovou transformaci; transformace provozujeme na serverech, které kupujeme v aukci. Tyhle typy serverů nejsou úplně stabilní. Pokud něco selže, přehodí se zpracování transformací do jiného datacentra, které máme rezervované na východě Kanady, u firmy OVH)
  3. veškerá data o účtech v SAPI šifruje


Sardine

  1. zrychlená pomocí cachování odpovědí ze SAPI
  2. podporuje GoodData js eventy
    1. Sardine umí ovládat odkazy z dashboardů a dělat s nima volitelné věci (například můžeme přesměrovat odkazy z reportů do modálního okna, místo do nového tabu prohlížeče)
    2. umí k reportům, které uživatel downloaduje, doplnit plné texty z dat v SAPI (do GoodData se dá poslat text (buňka v tabulce) s maximem 255 znaků, někdy je ale potřeba v rámci exportu reportu doplnit osekané texty na původní velikost, tohle umíme udělat bezešvě během pár vteřin, díky těsné integraci dashboardu s originálními daty v Storage API)


MISC

  1. úspěšně jsme provedli PoC s realtime backendem a transformacema, které jsou inicializované stažením dat; klient nahrává data do Storage API a v momentě stažení jsou vrácena modifikovaná - takto upravené data pak fungují jako realtime reporty v GoodData dashboardech (plní Google Charts na dashboardu)
  2. máme frontend k AWS CloudSearch na tagování nestrukturovaných textů (díky tomu se mohou přímo na dashboardu definovat kategorie (např.) konverzací)