Rychle a agilně dodávat nové featury všichni umíme, nebo to aspoň tvrdíme. Nestresujeme se bugy a nedokonalostmi. Důležité je, že je kód rychle v produkci, uživatelé šťastní, adopce novinky blesková. Uplyne pár měsíců (nebo let) a rychle nahozená featura se přilepí na produkt jak příslovečný psí exkrement. A jednoho krásného dne jí potřebujeme updatnout na vyšší, zpětně nekompatibilní, verzi, nahradit jiným řešením nebo jen prostě vypnout. A tady začínají naše těžkosti, přijďte si poslechnout, jak nám to vůbec nejde.
2. ● Praha, Vancouver, Chicago
● ~50 lidí
● Dev tým
○ 18 lidí, nevlezeme se do kanclu
○ Remote
○ 500.keboola.com
● Vlastní produkt
● Investoři (nemáme)
● Černá čísla od prvního dne
● 10+ let
● Frontend, backend,
infrastruktura
● 2014 – orchestrační nástroj na
dávkové joby (Docker
kontejnery)
● Adopce Azure
Keboola & Já
3. ● Produkt, který sami
potřebujeme
● Cloudová platforma pro práci
s daty
● “Datový Operační systém”
● Prostředí pro provoz aplikací
pro práci s daty
● Multicloud
● Multitenant + singletenant
● Uživatelé
● mají Projekty
● a v nich Storage (data)
● a Komponenty (kód)
● pro ně vytvoří Konfigurace,
● jejich spuštěním vzniknou Joby
● pravidelné pouštění
posloupností Jobů řeší
Orchestrátor
● Vše je Verzované
Co je Keboola (Connection)?
4. Co je Keboola (Connection)?
1. Oracle extraktor stáhne data z
CRM.
2. SQL transformace vyčistí data a
připojí počasí.
3. Python transformace data
zakategorizuje podle modelu.
4. Tableau writer pošle data do
Tableau Server.
5. Kategorie se pošlou zpět do CRM.
6. To vše každou hodinu.
5. ● Storage = Snowflake
○ ~50 TB, 1 b řádků
○ Do projektů nesmíme
● Komponenta = Docker image
○ ~1000 komponent, 700 cizích
○ ~16 000 verzí
● Konfigurace = json
○ ~120 000 konfigurací
○ ~1 500 00 verzí
● Job ~ Docker container
○ ~43 000 denně
○ 24 hodin za minutu
● Exponenciální růst
● Konfigurace je stav UI formuláře
a cizí kód
○ SQL, Python, R, AWQL...
● Do Storage nevidíme
● Do Konfigurací vidíme
● Ale nemůžeme je měnit
○ Enterprise level audit trail
● Stejné prostředí pro všechny
○ Žádné uživatelské nebo projektové
nastavení, jen featury.
● Legacy
○ Odstraněný UI prvek zůstane
navždy v konfiguracích
Prostředí
6. Vznik a zánik featury
Čím nás to zatěžuje
● Žádné featury na zakázku
● Požadavkům zákazníků
navzdory
● Zpětná kompatibilita (API i UI)
● Uložené Dzfigܰ musí
zůstat funkční
● Migrace na nové komponenty
● Legacy
Co se děje
● Posouvání platformy dopředu
○ Nové technologie
○ Změna use-case
○ Změny architektury
● Vnější okolnosti
○ Nová technologie
○ Změny cizích API
○ Security, governance
○ Zrušená technologie
● Příležitost, (ne)baví nás
● Podplacení zákazníkem
8. Update Python 3.6.4 → 3.6.5
Release Python 3.6.5
Oznámení
70 Python transformací využívá
odstraněnou funkci
Další ping
30 transformací
v 6 projektech
Opt-out
Implementace možnosti
odložit update
3
2018
4
2018
5
2018
7
2018
10
2018
11
2018
1
2019
2
2019
Adresný ping
Asi 25 ticketů
BC break v PIP
Update + Revert
Hurá!
Pohár přetekl
6 transformací ve 2
projektech
Update a revert
(protože Pandas)
Další Update
A revert
(protože APT)
9. MySQL transformační backend
AWS Redshift
30minutový limit
omezení délky běhu (My)SQL na 30
minut (incentiva na přechod na
Redshift)
Q3 Deprekace
oznámení deprekace MySQL,
support do konce Q1/2018,
vypnutí zakládání v UI bez featury
Deaktivace
Přes featuru
2014 2015 2016 2017 2018 2019
Snowflake
MySQL nedává žádný smysl!MySQL je pomalý bráška
Vypnutí
NIC!