O LMC
O mě (Ondřej Mysliveček)
- ČVUT FEL (2004)
- LMC - produktový manažer
- LMC - head of product management
- LMC - technology director
- technology -> business -> technology/business
Vývoj vývoje v LMC
- Původně klasická organizace formou Waterfallu
- Již cca 3. rokem přecházíme na Agile/Lean
Pár otázek na úvod
- V kolika lidech jste intenzivně vyvíjeli v jedné codebase?
- Jaké verzovací systémy jste používali?
- Pracovali jste v jednom týmu s jedním cílem (a dobrým přehledm o tom, co dělají ostatní)?
- Jak často vám někdo rozbil váš kus kódu změnou úplně někde jinde?
- Stalo se vám, že vám někdo změnil DB schéma "pod rukama"?
Problémy vícetýmových prostředí
- Úmyslné změny mění víc než se čeká
- Občas extrémně složité merge commitů
- Nemožnost hýbat s menšími celky (občas je pouze 1 monolitická aplikace)
Možnosti řešení
Proč jsou menší celky výhodné?
- Transparentnější prostředí i jednotlivé dílky
- Izolace problémů
- Lze minimalizovat i dopady celkové nedostupnosti jednoho z dílků
APIfikace portfolia
(produktů/aplikací/systémů)
- Dílky musí být striktně oddělené a izolované
- Komunikace mezi dílky JASNĚ a STRIKTNĚ definovanými rozhraními
- Musíme vědět kdo s kým komunikuje
Jak se na API dívat?
[provider]
JE TO PRODUKT!!!
- QA
- Uptime monitoring
- Performance monitoring/testing
Jak API navrhovat?
[provider]
- Naprogramovat -> zdokumentovat (vygenerovat dokumentaci)
- Navrhnout -> zdokumentovat -> naprogramovat (TDD?)
A jakou formu API zvolit?
- SOAP? API založené na architekruře REST?
- Střez se API ve formě DB schématu /*
Znám své consumery
[provider]
- API odemykat pomocí tajných a unikátních klíčů
- Monitorovat používání API (každé použití, každého consumera)
Proč tak složitě???
- Nemáte tajné consumery
- Víte koho informovat o vypínání starých verzí API
- Máte API zabezpečené před zneužitím (základně)
- Dokážete identifikovat nepoužívané endpointy
Lifecycle management API
[provider]
- Jednou zveřejněné API se nemění
- Verzovat, verzovat, verzovat
- Zastarávání a vypínání
Proč tak složitě???
- Flexibilita v releasování změn API
- Koordinace priorit v týmech
Synchronně či asynchronně?
[consumer/provider]
Synchronní volání
- Možnost dát zpětnou vazbu uživateli
- Jednodušší (???)
- Velmi rizikové (???)
Asynchronní volání
- Ochrana proti nedostupnosti providera
- Menší komfort uživatele
- Obtížnější detekce vztahu consumer<->provider
- Nutnost řešit fronty
QA ze strany consumera?
[consumer]
- Pokrýt "cizí" API vlastními testy?
- Monitorovat "cizí" API?
Proč si komplikovat práci???
- Vlastní QA "cízího" API pro zajištění QA mého
Resistance is futile
you will be Apificated
Ondřej Mysliveček / LMC