fb
IT Systems 10/2019 29. 11. 2019 15:00

Kontejnery umožňují flexibilnější vývoj

Red HatKontejnery poskytují vývojářům efektivní metodu, díky níž mohou v krátkém čase vytvořit a provozovat aplikace jak v režimu on-premise ve výpočetním centru, tak v cloudových prostředích. Základ pro kontejner tvoří operační systém Linux, ale kontejnery lze používat i v operačních systémech Windows a MacOS.

Při používání kontejnerů spojí vývojáři aplikaci se všemi souvisejícími prvky do jednoho kompaktního přenositelného sandboxu, který je možné beze změny přenášet mezi desktopy, on-premise servery i cloudem. Kontejnerizace se vyznačuje dvěma základními aspekty: za prvé standardizovaným formátem, který zajišťuje přenositelnost kontejnerů, a za druhé standardizovaným způsobem spouštění aplikací. Proto lze aplikaci v kontejneru při zachování její kompletní funkčnosti přesouvat mezi vývojovým, testovacím a produkčním prostředím.

Široký výběr a podporované jazyky

Výhodou pro vývojáře je možnost využívat své důvěrně známé vývojové prostředí a programovací jazyky, ať již jde o vývojová prostředí jako Eclipse, či programovací jazyky jako C, C++, C#, Java nebo jiné široce rozšířené jazyky. Výhody možnosti volby se ukazují při kombinování kontejnerů a microservices architektury, kdy se rozdělí nové nebo již existující aplikace do microservices dle poskytovaných funkcionalit. Kromě toho jsou kontejnery ve srovnání s virtuálními stroji nenáročné na zdroje a kompaktní. Skvěle se tak hodí k uvedení aplikace do provozu; od konfiguračních nastavení a závislostí ve vývojovém prostředí, přes různé testovací a integrační stanice až do produkčního prostředí. Vývojáři jsou pak optimálně vybaveni, jestliže tento proces automatizují pomocí praktik jako je Continuous Integration (CI) a Continuous Delivery (CD).

Na rozdíl od virtuálních strojů jsou kontejnery provozovány„neměnně“. Vývojáři tak nemusí počítat s „nepovšimnutými“ změnami způsobenými zásahem administrátorů v běžícím provozu. Naopak mohou vycházet z toho, že určitá verze kontejnerů, která byla úspěšně prověřena v testovacím prostředí, bude pracovat naprosto stejně i v produkčním prostředí. Mimoto jsou vývojáři díky kontejnerům schopni zachovat striktní oddělení od infrastruktury, na níž kontejnery běží. Pro řádné fungování nehraje roli to, zda kontejnerová aplikace běží v on-premise režimu ve výpočetním centru na vlastním hardwaru nebo ve veřejném cloudu. Společnosti se mohou samostatně rozhodnout, v jakém prostředí kontejnery nasadí. V závislosti na příslušných požadavcích mohou kontejnerovou aplikaci přesunout z vlastního výpočetního centra do veřejného cloudu, ale také zpět.

Kubernetes pro správu kontejnerů

Pro orchestraci a správu kontejnerů je k dispozici platforma Kubernetes, která vývojářům a IT provozu nabízí rozsáhlé funkce automatizace, škálování a správy kontejnerových aplikací. Kubernetes umožňuje snadno spravovat kontejnery přes více serverů, může efektivněji přidělovat hardwarové prostředky potřebné k provádění podnikových aplikací, stejně jako řídit a automatizovat aktualizace a zprostředkování aplikací. Kubernetes navíc nabízí funkce pro škálování kontejnerů a souvisejících prostředků. Mimoto poskytuje i možnosti k rozšiřování úložiště a provádění stavových (stateful) aplikací.

Ve světě Linuxu existují kontejnerové technologie již mnoho let, dlouhou dobu však byly na okraji zájmu, což se v posledních letech, kdy dochází k jejich rozvoji, mění. V současné době představuje kontejnerizace klíčový faktor pro implementaci aplikací, přičemž v centru zájmu stojí linuxové kontejnery založené na formátu OCI (Open Container Initiative) podporovaném všemi významnými IT společnostmi. Jako vývojový stupeň formátu Docker se již dnes formát OCI etabloval jako průmyslový standard a je pod patronátem Linux Foundation.

Rozkvět kontejnerizace aplikací

První zkušenosti s kontejnery má za sebou už mnoho organizací. IT oddělení a vývojáři často využívají kontejnery především při vývoji nových bezstavových (stateless) a nepříliš složitých webových aplikací, které pak v další fázi otevírají dalším skupinám uživatelů ve společnosti a rozšiřují jejich funkce. Když se pak počet kontejnerů zvýší na několik tuctů, začnou se vývojáři navíc zabývat i CI a CD, automatickým testováním a nasazením Kubernetes.

V určitých případech postupují společnosti strategicky a analyzují svůj aktuální počet aplikací a plánovaný nový vývoj. U některých kandidátů je kontejnerizace od začátku vyloučena, zejména v případech, kdy se očekává, že aplikace brzy dosáhnou konce svého životního cyklu a budou odstraněny, má-li být aktuální standardní software nahrazen novou verzí nebo softwarem ve formě služby nebo jsou-li aplikace příliš úzce propojeny s jinými aplikacemi a rozdělení by přineslo obrovské náklady.

Vedle nového vývoje, při němž jsou ve většině případů kontejnery žádoucí, existují i tři různé scénáře využití kontejnerů u stávajících aplikací: v případě scénáře Lift and Shift (označuje se také jako rehosting) zabalí vývojáři existující aplikaci bez její další modernizace do kontejneru s co nejmenším množstvím změn a provedou její migraci například do cloudu, kde ji provozují. Při scénáři Lift and Reshape (označuje se také jako replatforming) zjišťují vývojáři, které části aplikace profitují z kontejnerové technologie, přepracují je převedením na microservices a vytvoří API pro integraci a komunikaci. V případě tzv. refactoringu pak většina prostředků vyžaduje podstatnou úpravu zdrojového kódu na základě nové architektury. Vynaložené úsilí je však opodstatněné pouze v případě, že z něho vyplyne velmi vysoký a trvalý užitek.

Matthias Pfützner Matthias Pfützner
Autor je Senior Cloud and Account Solution Architect ve společnosti Red Hat.

Kalendář akcí
Konference - Semináře - Školení
Časopis IT Systems/Speciál
Aktuální číslo časopisu IT Systems Aktuální číslo časopisu příloha #1
Archív časopisu IT Systems
IT Systems 10 IT Systems 9 IT Systems 7-8 IT Systems 6
Archív časopisu IT Systems Special
Aktuální číslo časopisu příloha #1 Aktuální číslo časopisu příloha #1 Aktuální číslo časopisu příloha #1 Aktuální číslo časopisu příloha #1