Kniha publikovaná už v roce 1981 s názvem Nailing Jelly to a Tree popisuje software jako „mlhavý a obtížně uchopitelný“. Platilo to v roce 1981 – a po uplynutí čtyřiceti let to není o nic méně pravdivé. Software, ať už jde o aplikaci, kterou jste zakoupili, nebo tu, již jste vytvořili sami, zůstává obtížné nasadit, spravovat i provozovat.
Využíváte už ve firmě autonomní agenty postavené na bázi umělé inteligence?
Kontejnery ale poskytují způsob, jak nad softwarem získat více kontroly. Docker můžete použít k zabalení aplikace takovým způsobem, že její problémy nasazení a provozování – jak ji vystavit v síti, jak spravovat její využití úložiště a paměti, vstupů, výstupů a jak řídit oprávnění přístupu – se řeší mimo samotnou aplikaci způsobem, který je konzistentní ve všech „kontejnerizovaných “ aplikacích.
Takový kontejner můžete spustit na jakémkoli hostiteli s operačním systémem (jde o Linux či Windows), ve kterém je nainstalován runtime pro Docker.
Docker nabízí kromě tohoto praktického zapouzdření, izolace, přenositelnosti a kontroly mnoho dalších výhod. Kontejnery jsou především poměrně malé (v řádu megabajtů), spouštějí se okamžitě a mají své vlastní vestavěné mechanismy pro verze i opětovné použití komponent.
Lze je navíc snadno sdílet prostřednictvím jak veřejného (Docker Hub), tak i privátního repozitáře.
Kontejnery Docker jsou také nezměnitelné, což má bezpečnostní i provozní výhody. Jakékoli změny v kontejneru se musejí nasadit jako zcela nová instance s označením jiné verze.
Jak tedy kontejnery Docker usnadňují vytváření i nasazení softwaru a co jsou problémy, které kontejnery řeší?
Před kontejnery
Po mnoho let se podnikový software obvykle nasazoval buď „přímo na hardware (bare metal),“ tj. do operačního systému (OS), který má úplnou kontrolu nad nosným hardwarem, nebo naopak do virtuálního stroje, tj. nainstalováním do OS, který sdílí nosný hardware s dalšími „hostujícími“ operačními systémy.
Instalace na nosný hardware přirozeně způsobila, že bylo příslušný program těžké přesunout a aktualizovat, což jsou mimochodem dvě omezení, která oddělení IT ztěžují pohotově reagovat na změny ve firemních potřebách.
Pak přišla virtualizace. Virtualizační platformy (známé také jako „hypervizory“) umožnily více virtuálním strojům sdílet jeden fyzický systém, kdy každý virtuální stroj izolovaným způsobem napodobuje chování celého systému včetně vlastního operačního systému, úložiště, vstupů a výstupů.
Oddělení IT tak mohlo efektivněji reagovat na změny firemních požadavků, protože virtuální počítače lze klonovat, kopírovat, migrovat a spouštět či vypínat podle různých požadavků, i za účelem šetření zdrojů.
Virtuální počítače také pomohly snížit náklady, protože je možné konsolidovat více virtuálních počítačů na menší rozsah fyzického hardwaru. Zastaralé systémy provozující starší aplikace se mohly převést do podoby virtuálních počítačů a fyzicky vyřadit, aby se ušetřilo ještě více peněz.
Virtuální počítače však stále přinášejí problémy. Jsou relativně velké (v řádu gigabajtů) a každý z nich obsahuje celý operační systém. Do jediného systému lze přitom konsolidovat jen malé množství virtualizovaných aplikací.
Provisioning virtuálních počítačů stále trvá celkem dlouho a navíc je přenositelnost virtuálních počítačů omezená. Při překročení určitého bodu nedokážou virtuální počítače zajistit takovou rychlost, agilitu a úspory, které rychle fungující firmy potřebují.
Výhody kontejnerů
Kontejnery fungují trochu jako virtuální počítače, ale mnohem konkrétnějším a podrobnějším způsobem. Izolují jednu aplikaci a její závislosti (všechny externí softwarové knihovny, které aplikace vyžaduje ke svému spouštění) jak od nosného operačního systému, tak i od dalších kontejnerů.
Všechny kontejnerizované aplikace sdílejí jeden běžný operační systém (Linux nebo Windows), ale jsou od sebe a od systému oddělené. Operační systém poskytuje potřebné izolační mechanismy, aby k tomuto oddělení došlo. Docker tyto mechanismy balí do praktické sady rozhraní a metafor pro vývojáře.
Výhody kontejnerových technologií mají mnoho forem. Následně uvádíme některé z hlavních výhod Dockeru a kontejnerů.
· Docker umožňuje efektivnější využití systémových zdrojů
Instance kontejnerizovaných aplikací používají mnohem méně paměti než virtuální stroje, spouštějí se a vypínají rychleji a na hostitelském hardwaru jich může být mnohem více. To vše přináší snížení výdajů na IT.
Úspory nákladů se budou lišit v závislosti na tom, o jaké aplikace jde a jak náročné na zdroje jsou, ale kontejnery vždy fungují efektivněji než virtuální počítače. Je také možné ušetřit náklady za softwarové licence, protože k provozování stejných pracovních zátěží potřebujete mnohem méně instancí operačních systémů.
· Docker umožňuje rychlejší cykly dodávání softwaru
Podnikový software musí rychle reagovat na měnící se podmínky. To znamená nejen snadné škálování podle požadavků, ale také jednoduché aktualizace pro přidání nových požadovaných funkcí.
Kontejnery usnadňují rychle předávat do provozního prostředí další verze softwaru s novými funkcemi pro firmu a v případě potřeby se rychle vrátit k předchozím variantám. Usnadňují také implementaci strategií, jako je blue/green nasazení.
· Docker umožňuje přenositelnost aplikace
Při provozu podnikové aplikace záleží na tom, kde ji spouštíte – zda za firewallem s cílem udržet vše potřebné blízko a v bezpečí, nebo ve veřejném cloudu s cílem usnadnit veřejný přístup a zajistit vysokou pružnost zdrojů.
Protože kontejnery Docker zapouzdřují vše, co aplikace potřebuje ke svému spuštění (a jen tyto věci), umožňují, aby se aplikace mezi prostředími snadno přesouvaly. Může je spouštět každý hostitel s nainstalovaným prostředím run-time pro Docker, ať už je to notebook vývojáře, nebo instance ve veřejném cloudu.
· Docker je vhodný pro architekturu mikroslužeb
Lehké, přenosné a samostatně funkční kontejnery usnadňují vytváření softwaru podle principů aktuálních vývojových trendů, takže nebudete řešit zítřejší problémy pomocí včerejších vývojových metod.
Jedním ze softwarových vzorů, které kontejnery usnadňují, jsou mikroslužby, v rámci nichž se aplikace vytvářejí z mnoha volně provázaných komponent.
Rozdělením tradičních „monolitických“ aplikací do samostatných služeb umožňují mikroslužby škálování různých částí firemních aplikací, jejich změny a obsloužení jejich nároků odděleně. Lze tak podle firemních potřeb přiřadit jednotlivé týmy a určit rozdílné časové plány.
Kontejnery nejsou k implementaci mikroslužeb nezbytné, ale perfektně se hodí pro koncept mikroslužeb a pro procesy agilního vývoje obecně.
Co Docker nevyřeší
První věc, na kterou je potřebné pamatovat u kontejnerů, je stejná jako u všech ostatních softwarových technologií: není to zázračné řešení. Kontejnery Docker samy o soběnemohou vyřešit každý problém. Konkrétně jde například o tyto:
· Docker nevyřeší vaše bezpečnostní problémy
Software v kontejneru může být ve výchozím nastavení bezpečnější než software přímo na hardwaru, ale je to stejné jako u domu se zamčenými dveřmi, který je bezpečnější než při odemčených dveřích.
Nic to neříká o situaci v sousedství, o viditelné přítomnosti cenností lákavých pro zloděje, o denním režimu jeho obyvatel atd. Kontejnery mohou do aplikace přidat vrstvu zabezpečení, ale jen jako součást obecného způsobu zabezpečení aplikace v kontextu.
· Docker magicky nezmění aplikace na mikroslužby
Pokud převedete do podoby kontejneru existující aplikaci, může to snížit její spotřebu zdrojů a usnadnit nasazení. Nezmění to ale automaticky design aplikace ani způsob její interakce s ostatními aplikacemi. Tyto výhody zajistí jen úsilí a čas vývojářů, ne přesun všeho do kontejnerů.
Pokud do kontejneru vložíte monolitickou či SOA aplikaci, získáte tím prostě jen starou aplikaci v kontejneru. Pro vaši práci to nepřinese nic užitečnějšího, dokonce to může naopak vytvořit určité komplikace.
Kontejnery samy o sobě nemají mechanismy k vytváření aplikací ve stylu mikroslužeb. K dosažení toho potřebujete vyšší úroveň orchestrace.
Nejčastějším příkladem takového orchestračního systému je Kubernetes. Ke správě mnoha kontejnerů Docker rozmístěných na více hostitelích lze použít také Docker Swarm.
· Docker není náhradou za virtuální počítače
Jedním přetrvávajícím mýtem o kontejnerech je, že jsou náhradou za virtuální počítače. Mnoho aplikací, které se provozovaly ve virtuálních počítačích, lze přesunout do kontejnerů, ale to neznamená, že je tam možné či vhodné přesunout všechny.
Pokud například působíte v oboru s přísnými regulačními požadavky, nebudete moci nahradit virtuální počítače za kontejnery, protože virtuální počítače zajišťují více izolace než kontejnery.
Computerworld si můžete objednat i jako klasický časopis. Je jediným odborným měsíčníkem na českém a slovenském trhu zaměreným na profesionály v oblasti informačních a komunikačních technologií (ICT). Díky silnému zázemí přináší aktuální zpravodajství, analýzy, komentáře a přehledy nejnovejších technologií dříve a na vyšší odborné úrovni, než ostatní periodika na tuzemském trhu.
Obsah Computerworldu je určen odborníkům a manažerům z firem a institucí, kteří se podílejí na rozhodovacím procesu při nákupu ICT technologií. Jednotlivá čísla si můžete objednat i v digitální podobě.
Chcete si článek přečíst celý?
Tento článek je součástí exkluzivního obsahu pouze pro odběratele našeho newsletteru.
Přihlaste se k odběru newsletteru a my vám do mailu pošleme odkaz na celý článek.