Continuous Integration, Delivery, Deployment
Agilní vývoj, Lean, CI/CD, Extreme Programming – to vše má v základech myšlenku trvalého přísunu inovací. Často a pravidelně, s krátkou zpětovazební smyčkou, s nízkým rizikem a malým vázaným kapitálem. Místo megaprojektů s nejistým výsledkem se soustředí na malé, ale velmi časté krůčky. Tak malé (= levné co do času a peněz), že pokud se šlápne vedle, není to problém – snadno se vrátíme zpět nebo myšlenku zatratíme. Organizace se pak přestanou bát rizika a mohou se učit ze svých chyb, zpětné vazby od zákazníků i ze svých úspěchů. Že by konečně byla u konce éra přemýšlení “Big bet”? Konec toho, že jedinou cestou k úspěchu je shromáždit obrovský kapitál a čas a vsadit na jediného koně v naději, že se to za dva roky povede? Čas od prototypu do minimum viable product je dnes velmi rychlý a následné inovační tempo může být závratné. Při tom všem není zase až tak moc kapitálu potřeba. Víte, že aplikace WhatsApp měla v roce 2014 poměr vývojářů k uživatelům 1 : 14 000 000? Firmu s 52 zaměstnanci (z toho je 32 vývojářů) koupil Facebook v roce 2014 za neuvěřitelných 19 miliard USD.
Těmto tématům se chceme na cloudsvět věnovat podrobněji. Dnes se spokojíme jen s pár hesly shrnujícími CI/CD a můžete se podívat na demo jak to může vypadat prakticky.
Continuous Integration
Nechť je na konci každého dne jeden integrovaný kód aplikace.
- Nepoužívej branche, na konci každého dne nechť jsou všechny změny zapracovány (merge) do master branch (trunk)
- Všechno (!) je v source control
- Na všechno je automatizovaný unit test (nebo je dokonce test dřív, než samotný kód pokud praktikujete TDD)
- Pokud nejde dnešní kód zapracovat nebo selže unit test, všechno zastav – top priorita je tohle vyřešit
Continuous Delivery
Nechť je na konci každého dne aplikace ve funkčním stavu, plně použitelná uživateli.
- Automatizuj vše – unit testy, funkční testy, výkon, bezpečnost
- Když to bolí, dělej to častěji
- Release proces se týká všech – od Dev přes QA po Ops (takže ano vývojáři, to jak se to provozuje je i váš problém a jaká je kvalita rovněž… a ano provozáci, vývoj bude vytvářet a mazat infrastrukturní zdroje mnohokrát denně pro různé automatizované testy místo “když to zatím trochu funguje, nesahat”)
- Každý den jsem připraven na release, pokud produkťák řekne (hlavní důvod, proč to nedělám automaticky je, že aplikace neběží u mě, ale třeba na mobilech zákazníků a nechci, aby ji stahovali tak často)
Continuous Deployment
Co funguje, jde okamžitě uživatelům a přináší hodnotu.
- Máš-li pod kontrolou svoje IaaS/PaaS prostředí (typicky u interních aplikací nebo SaaS providerů), releasuj do produkce každý den
- Máš-li rozdělanou práci (ale pozor, z předchozích dvou fází víme, že i ta je plně integrovaná a zcela funkční, třeba ale ještě nenaplnila všechny user stories, které produkťák požaduje), schovej je feature flagem
CI/CD demo
Podívejte se na ukázku, jak se pracuje v takovém prostředí – není delší, než 8 minut a je v češtině.