Revolgy blog

Kubernetes pro byznys v kostce

Written by Štěpán Kaiser | října 7, 2019

Kubernetes. Občas si s kolegy děláme legraci, že jen vyslovení tohoto slova by bohatě stačilo k vyvolání bouřlivého potlesku na libovolné tech konferenci. Teď samozřejmě záměrně trochu přeháním, ale zřejmě sami uznáte, že Kubernetes (k8s) je momentálně absolutní rockstar (nejen) IT světa. Jeho popularita není náhodná. Přispívá k ní obrovská komunita a velké množství contentu, který o k8s můžete najít. Z vlastní zkušenosti však vím, že většina článků, videí i podcastů, je zaměřena především na technické publikum, které Kubernetes aktivně používá, nebo by je používat chtělo.

Obsah, který by se zaměřoval na danou technologii z hlediska businessu nebo marketingu se vyskytuje spíše sporadicky, v Českém prostředí téměř vůbec. A protože já osobně nejsem technik, a přesto jsem fanouškem Kubernetes, rozhodl jsem se napsat něco málo z tohoto úhlu pohledu. A přestože s Kubernetes pravděpodobně, stejně jako lidé z businessu, nebudu nikdy pracovat, je dobré o něm vědět. Přináší totiž velkou řadu benefitů a můžete se díky němu velmi blízko přiblížit scénáři, který byl pár let zpátky ještě naprostou utopií - developer napíše kód, stiskne tlačítko, vše bez problému funguje a vaši aplikace generuje zisky.

Co je to Kubernetes a co má společného s kontejnery?

Co to ale vlastně Kubernetes je? Kubernetes je open source systém pro orchestraci (správu) aplikačních kontejnerů. Pro maximální zjednodušení si zkuste kontejner představit jako něco, v čem je vaše aplikace “zabalená” a bez čeho by v daném systému nefungovala. Zájemci naleznou přesnou definici kontejnerů třeba tady. Nebudu se rozepisovat o tom, proč je dobré používat aplikační kontejnery a jaké to nese benefity (to si nechám na jiný článek). Pojďme teď předpokládat, že kontejnery používáte - ať vás k tomu vedlo cokoliv.

Velká aplikace se ve většině případů skládá z mnoha kontejnerů (a vícera menších aplikací v nich zabalených) - například web server, databáze, cache, atd. S množstvím takovýchto aplikací úměrně roste i množství kontejnerů, o které je potřeba se starat, sledovat a třídit je. A zde už do hry vstupuje Kubernetes, který ke správě kontejnerů slouží. Pro lepší pochopení si zde pomůžu businessovou analogií. Stejně, jako firma nemůže efektivně fungovat bez toho, aby její zaměstnance někdo vedl, určoval jim cíle a staral se o to, aby jich byl dostatek, nemůžou ani kontejnery správně fungovat bez vedení ze strany Kubernetes.

5+1 benefitů, které Kubernetes přinesou vašemu businessu

Jaké jsou tedy konkrétní výhody Kubernetes pro business?

1) Vaše infrastruktura bude nezničitelná

Občas se stane, že váš kontejner “umře”. To se stává naprosto běžně a stávat se to bude (není třeba v tuto chvíli pátrat po příčinách, kterých může být spousta, a je těžké je všecky uhlídat). Pokud se však o vaše kontejnery stará Kubernetes, při smrti jednoho kontejneru okamžitě nastartuje nový (stejný) - vy se nemusíte o nic starat. Neunikají vám tak zbytečně peníze kvůli tomu, že část (nebo dokonce celá) aplikace nefunguje a vaše IT oddělení nemusí řešit, jak ji rychle “nahodit” zpět.

2) Peak traffic? Žádný problém.

Některé aplikace se potýkají s tzv. “peak traffic” neboli výkonnostními špičkami (např. ty pro objednávku a rozvoz jídla, eshopy, prodejci vstupenek,...). Pokud Kubernetes zjistí, že aplikace a její kontejnery nestíhají odbavovat provoz (např. ve chvíli, kdy byl spuštěn prodej vstupenek na koncert Leoše Mareše, a lidé blázní, aby si je mohli koupit, nebo když si v poledne lidé začnou objednávat obědy), okamžitě nastartuje její klon(y) a dočasně zvýší výkon. Ve chvíli, kdy se provoz zase sníží, “přebytečné” kontejnery se zničí. Vy tak bez problémů prodáváte lístky nebo pizzu bez toho, aby vám unikaly zisky, protože služba kvůli velkému množství requestů “spadla”.

3) Snížíte náklady na infrastrukturu

Aby vám neunikaly zisky, potřebujete, aby byla vaše infrastruktura využívána optimálně. Nechcete přece platit za výkon, který zrovna nepoužíváte. Pokud např. doručujete jídlo, je nesmysl platit ve 3 hodiny ráno za stejný výkon jako v poledne, kdy nastává “peak traffic”. Nadruhou stranu ale musíte mít dostatečný výkon, abyste byli schopni odbavit kdykoliv jakýkoliv počet požadavků a zákazníci byli spokojeni. Zde opět pomůže Kubernetes, který dokáže výkon optimalizovat podle požadavků aplikace v reálném čase.

Tento benefit je samozřejmě mnohonásobně zajímavější, pokud používáte nějakou cloudovou infrastrukturu v režimu pay-as-you-go.

4) Bezproblémová Multi-Cloud/Hybrid strategie

Další obrovská výhoda Kubernetes je jejich efektivní fungování napříč public cloud providery, private cloudy a on-prem infrastrukturou. Můžete si snadno vybrat, kde jaký workload poběží, a nemusíte se tak vůbec bát vendor lock-inu. Architekturu založenou na Kubernetes můžete provozovat kdekoliv můžete si tak vždy vybrat to nejvhodnější prostředí vzhledem k efektivitě a nákladům.

5) Skoncujete s operations. Pracujete na vývoji produktu.

Kvalitní lidské zdroje jsou to nejdůležitější, co máte. Technicky nadaných lidí je na trhu omezené množství, a je neefektivní zatěžovat je správou infrastruktury, a plýtvat jejich časem na operations. Kvalitní lidé by měli mít čas věnovat se produktu a spolupracovat s businessem na doručování nejlepších služeb zákazníkům. Kubernetes jim v tomto ohledu v kombinaci s dalšími nástroji pomůže uvolnit ruce. Mohou díky němu např. snadno a bez výpadků releasovat nové verze aplikací několikrát denně (a klidně se i vracet k těm starším) díky práci na úrovni kontejnerů. Existuje také řada managed Kubernetes (GKE/EKS), kdy se o jeho správu stará někdo jiný (což například u windows serverů neexistuje). Obrovské množství úkolů, které spadají pod infrastructure operations jsou díky Kubernetes automatizovány a vaši lidé se tak mohou soustředit na budování produktu.

6) Zajistí vám rychlý time to market

Jestliže chcete být nejlepší, musíte jednat rychle a agilně. Být schopni reagovat na požadavky zákazníků, dodávat co nejrychleji a nejkvalitněji nové featury je dnes stěžejní. I zde vám pomůže Kubernetes. Poskytuje totiž mnoho nástrojů, které vám usnadní nastolit tzv. “Microservices approach” a rozdělit váš vývoj na malé agilní týmy, které budou schopné dodávat novinky klidně i na denní bázi. Kubernetes pomůže s jejich hladkým nasazením do produkce.

Obrovské množství infrastructure operations tasků je díky němu automatizovaná a vaši lidé se mohou soustředit na budování produktu. Díky Kubernetes se tak můžete velmi blízko přiblížit scénáři, který byl pár let zpátky ještě naprostou utopií - developer napíše kód, stiskne tlačítko a vše bez problému funguje.

Kubernetes samozřejmě nejsou jediná služba, která s podobnými problémy dokáže pomoct. Je ale rozhodně nejdostupnější a nejpopulárnější. Pamatujte ale na to, že Kubernetes není lékem na všechno a v některých případech se může hodit naprosto jiné řešení. Je proto ideální předem jejich nasazení konzultovat.