fbpx
vshosting~

Špičkový poskytovatel full-service řešení pro ty nejznámější hráče v e-commerce, 17 let zkušeností a ty nejmodernější technologie: to všechno je Shopsys. Svým klientům vyvíjí e-shopy a B2B systémy na míru na vlastní open-source platformě. Mezi jejich zákazníky patří známá jména jako například SCONTO Nábytek, Mountfield, Bushman nebo Office Depot. Proto je pro Shopsys klíčová maximálně spolehlivá a výkonná serverová infrastruktura, kterou jim zajišťujeme už od roku 2013.

Infrastruktura začíná narážet na výkonnostní limity

Na podzim 2020 jsme na straně vshosting~ pozorovali, že dosavadní platformní služba pro hostování projektů běžících na Shopsys framework už nemá dostatečně velkou výkonnostní rezervu. Díky růstu Shopsys projektů, blížící se předvánoční sezoně i očekávání přidání nových klientů jako například Mountfield, jsme společně vyhodnotili, že by řešení zasloužilo pořádný upgrade. 

Celá architektura Kubernetes clusteru, který u nás Shopsys měl, byla odladěná. Proto se nabízel upgrade hardwaru na výkonnější variantu. Nešli jsme do ničeho menšího než extrémně výkonných serverů od AMD s procesory EPYC – každý s 32 jádry a 64 vlákny. Dalším vylepšením byl přechod na rychlejší NVMe disky.

„Enterprise servery s procesory AMD EPYC ve vshosting~ nasazujeme kvůli bezkonkurenčnímu výkonu čím dál hojněji. Při upgradu infrastruktury Shopsysu šlo o jasnou volbu – zajistí pevné zázemí s výkonnostní rezervou pro rozšiřování služeb i marketingové akce. Ve spojení s PCI-e NVMe SSD disky, které nahradily SATA SSD, jde z pohledu hardware o to nejlepší, co můžeme klientům nabídnout.“

Tomáš Jeníkovský
Deputy Head of HW/DC vshosting~

Upgrade vedl ke zrychlení načítání webů až o 63 %

Celá realizace proběhla 20. listopadu 2020 pro databázové servery a 25. listopadu pro aplikační. A výsledek? Průměrné zrychlení projektů od Shopsysu o 55 %. U některých z nich i přes 60 %!

Krásným příkladem takového projektu je Tropic Fishing, jehož načítání bylo už před upgradem velice rychlé. V průměru 586 milisekund. A to se podařilo zrychlit na neuvěřitelných 357 milisekund, což představuje vylepšení o 39 %.


Z dalších projektů na Shopsysu pár příkladů za všechny: u prodejce outdoorového oblečení Bushman se díky upgradu hardware zrychlilo načítání webu o 56 %, u Papírnictví Pavlík o 62 % a u elektro obchodu EMOS dokonce o 63 %!

Lepší SEO i vyšší dostupnost 

SEO experti často mluví o tom, jak rychlost načítání zlepšuje ranking webu u Googlu a spol. Evidentně na tom něco bude: boost výkonu serverové infrastruktury se projevil nárůstem návštěvnosti z vyhledávačů o 16 %. Zvedla se i míra prokliků na web z výsledků vyhledávání, a to o celých 5 procentních bodů! 

Do budoucna očekáváme ještě větší pozitivní dopad na SEO projektů na Shopsys platformě. Svět optimalizace pro vyhledávače má totiž velkou setrvačnost. Na to se jako sněhová koule nabalí nižší bounce rate, více navštívených stránek a ve výsledku i to, co e-commerce projekty zajímá nejvíc: vyšší prodeje. To vše pouze díky modernizaci hardwaru, která díky těmto výsledkům může mít u velkých projektů návratnost i v rámci jednotek dnů.

Zároveň jsme ve vshosting~ vytvořili repliky pro Postgres a Elasticsearch Shopsysu. Ten tyto repliky plánuje využít pro zlepšení dostupnosti služeb, což pro zákazníky bude znamenat, že v případě přetížení, údržby nebo dokonce výpadku databáze se automaticky použije záloha a vše pojede dál. 

Jak o naší spolupráci mluví v Shopsysu?


„Dlouhodobá spolupráce s vshosting~ nás naučila, že jsou našimi spolehlivými partnery, ať už rosteme jakkoliv rychle. Díky jejich včasnému varování a  bleskovému upgradu infrastruktury jsme předešli potenciálním problémům, ale hlavně našim e-commerce projektům pomáháme více prodávat.“

Václav Macíček
Projektový ředitel Shopsys

Co jsme se naučili?

1. Proaktivita je u hostingu klíčová – proto serverovou infrastrukturu všech klientů důsledně monitorujeme. Například docházející výkon řešíme ještě než může způsobit problémy.

2. Vyšší výkon serverů v případě Shopysu => rychlejší načítání stránek – u Shopsys projektů čas načítání webů klesl v průměru o 55 %.

3. Investice do hardwaru může mít bleskovou návratnost – některým e-commerce projektům zrychlí web klidně i o polovinu. Výrazně tak zlepší SEO a pomůže s prodeji.

Zajímá vás, jak pomůžeme i vašemu e-shopu? Napište nám na obchod@vshosting.cz. A do druhého pracovního dne se vám ozveme.


vshosting~

DevOps a kontejnerizace patří mezi oblíbené IT buzzwordy dnešní doby. Nikoli bezdůvodně. Kombinace těchto přístupů je jedním z důvodů, proč se daří práci vývojářů stále zefektivňovat. V tomto článku se zaměříme se na 9 hlavních důvodů, proč by se i vám tyto vývojové přístupy mohly vyplatit.

Pár rychlých vysvětlivek na úvod

DevOps je složenina z anglických slov Development (Vývoj) a Operations (Provoz), a jde vlastně o přístup k vývoji software, který klade důraz na spolupráci vývojářů s IT odborníky starajícími se o provoz aplikací. To vede k mnoha výhodám, které si tu postupně rozebereme.

Kontejnerizace do DevOps skvěle zapadá a můžeme ji chápat jako podpůrný nástroj DevOps přístupu. Podobně jako kontejnery fyzické, které standardizovaly přepravu zboží, softwarové kontejnery představují standardní jednotku „přepravy“ softwaru. Díky tomu je IT odborníci mohou nasadit napříč prostředími v podstatě bez úprav (podobně jako fyzický kontejner můžete bez problému přeložit z lodi na vlak nebo na kamion).

Top 9 výhod DevOps a kontejnerů 

1) Synergie mezi týmy

U DevOps přístupu spolu vývojáři a admini úzce spolupracují a účastní se všech fází vývojového procesu. Tyto dva světy bývaly tradičně striktně oddělené, ale jejich de facto sloučení má mnohé výhody.

Spolupráce vede k větší efektivitě celého vývojového i operačního procesu a tím i k jeho zrychlení. Neméně důležitým aspektem je i to, že kooperace kolegů ze dvou odlišných oblastí s sebou často nese nejrůznější inovativní, „out of the box řešení“, na která by jinak nikdo nepřišel.

2) Transparentní komunikace

Častým problémem nejen v IT firmách bývá kvalitní komunikace. Každý má spoustu práce a hledí si svého. Výsledkem pak bývají nedorozumění, chybné předpoklady a z toho plynoucí konflikty a zbytečná práce.

Součástí myšlenky DevOps je zavedení transparentní a pravidelné komunikace mezi vývojáři a administrátory, díky čemuž všichni táhnou za jeden provaz. Obě skupiny jsou také zapojeny do všech fází tvorby aplikací či jejich částí.

3) Méně bugů a dalších „nehod“

Mezi principy DevOps patří také časté vydávání menších částí aplikací, oproti méně frekventovaným releasům větších celků. Díky tomu eliminujete riziko dopadu chybného kódu na celek. Jinak řečeno: pokud se náhodou něco pokazí, nerozbijete tím celou aplikaci. Spolu s důrazem na důkladné testování tento postup vede k výrazně nižší frekvenci výskytu bugů a jiných chyb. 

Pokud spolu s DevOps využijete kontejnery, můžete těžit z jejich standardizace. Ta mimojiné zajišťuje, že vývojové, testovací i produkční prostředí (tj. kde aplikace výsledně běží) je definováno identicky. Tím výrazně snížíte výskyt bugů, které se při vývoji a testování neprojevily, a ukážou se až při spuštění v produkčním prostředí. 

4) Snazší hledání i oprava chyb

Opravě případných chyb a zajištění hladkého chodu aplikace napomáhá i pro DevOps typické metodické ukládání všech předchozích verzí kódu. Díky nim lze velmi rychle identifikovat případný problém, který může nastat po vydání nové části aplikace. 

Když už k chybě dojde, stačí aplikaci jednoduše vrátit na předchozí verzi – zabere to maximálně pár minut. Vývojáři poté v klidu daný bug opraví zatímco uživatel aplikaci může bez potíží používat. Hledání eventuální chyby je také mnohem snazší, protože vydávaná část aplikace, ve které je potřeba bug najít, je velmi malá.

5) Bezproblémová automatizace a škálovatelnost

Kontejnerová technologie také výrazně zjednodušuje škálování a pomáhá DevOps týmu automatizovat některé činnosti. Například tvorbu a nasazování kontejneru lze automatizovat přes API, což přispívá k úspoře času a nákladů na vývoj.

Co se škálovatelnosti týče, aplikace můžete provozovat v libovolném počtu instancí kontejnerů, a to podle aktuální potřeby. Počet kontejnerů lze téměř okamžitě navyšovat (například během vánoční špičky) nebo naopak snižovat. Díky tomu ušetříte velkou část nákladů na infrastrukturu třeba v období, kdy poptávka po vašem zboží není tak velká. Zároveň když se zájem nečekaně zvedne – řekněme, že jste online lékárna v době pandemie – kapacitu bleskurychle navýšíte a hotovo.

6) Detailní monitoring byznysových metrik

K DevOps i kontejnerizaci nevyhnutelně patří i detailní monitoring, který pomáhá rychle identifikovat chyby v kódu. Monitoring je ale klíčový i k měření byznysových metrik. Díky nim můžete vyhodnotit, zda právě vydaná změna pomáhá dosáhnout vašich cílů nebo ne. 

Pro představu: dejme tomu, že jste se u svého e-shopu rozhodli pro redesign domovské stránky, jehož cílem je zvýšení počtu objednávek o 10 %. Díky detailnímu monitoringu brzy po vydání zjistíte, jestli jste vytyčených 10 % dosáhli či nikoliv. Kdybyste oproti tomu udělali 5 změn v e-shopu najednou, bude vyhodnocení účinnosti jednotlivých opatření mnohem složitější. Řekněme, že celkovým výsledkem těchto 5 změn je zvýšení počtu objednávek o 7 %. Která z novinek způsobila největší nárůst? A nezpůsobuje naopak některá z nich snížení počtu objednávek? Kdo ví.

7) Agilnější a rychlejší vývoj

Výsledkem všeho výše uvedeného je významné zrychlení celého procesu vývoje, od napsání kódu po úspěšné spuštění daného softwaru, a to i o 60 % a více.

Jak moc velké bude zefektivnění, tedy i úspory a potažmo nárůst tržeb, ovšem závisí na mnoha faktorech. Mezi ty nejdůležitější patří velikost vašeho vývojového týmu a míra využití podpůrných nástrojů, jakými je například technologie kontejnerizace, automatizace procesů a volba flexibilní infrastruktury. Zjednodušeně řečeno, čím větší tým máte a čím více využijete možností automatizace a flexibility zvolené infrastruktury, tím efektivnější celý proces bude. 

8) Menší náklady na vývoj

Asi nikoho nepřekvapí, že rychlejší vývoj, lepší komunikace a spolupráce týmů zamezující zbytečné práci a menší výskyt bugů napomáhá snížení nákladů na vývoj jako takový. Zejména u firem s většími IT týmy může jít i o desítky procent (!).

Často se i ukáže, že díky synergiím a větší efektivitě spojeného týmu nepotřebujete mít ve firmě 20 IT specialistů, ale třeba jen 17. A to je také pořádný rozdíl v rozpočtu.

9) Spokojenější zákazníci 

Akcelerace vývoje vede také k větší spokojenosti zákazníků. Váš byznys je totiž schopen pružněji reagovat na jejich požadavky a například do e-shopu přidat novou funkci, po které vaši klienti volají. Díky detailnímu monitoringu také lépe odhalíte, které změny zákazníci vítají a které je lepší zahodit. Snáze se tak odlišíte od konkurence a vybudujete si základnu skalních fanoušků, kteří jen tak jinam nakupovat nepůjdou. 

Co si z toho odnést

Když si to shrneme, z vývojářského pohledu DevOps spolu s kontejnery usnadní a urychlí práci, zlepší komunikaci s adminy a drasticky sníží výskyt bugů. Byznysově to znamená výrazné snížení nákladů a větší spokojenost zákazníků (a tedy i vyšší tržby). Z toho plynoucí rovnici „vyšší tržby + nižší náklady = vyšší ziskovost“ netřeba rozvádět.

Aby všechno fungovalo, jak má, budete také potřebovat dobrého poskytovatele infrastruktury – typicky nějakou formy Kubernetes platformy. Většinu z vás nejspíš jako první napadnou tradiční cloudy od amerických firem. Bohužel, podle zkušeností našich klientů vám uživatelská (ne)přívětivost těchto providerů celý proces příliš neusnadní. Další variantou je poskytovatel, který vám Kubernetes platformu předpřipraví, zdarma poradí co a jak a poskytne vám nonstop podporu na telefonu. To v češtině a za výrazně nižší cenu. Nechceme se chlubit, ale přesně tohle splňuje Kubernetes platforma od vshosting~.

Příklad infrastruktury využívající kontejnerovou technologii – vshosting~


vshosting~

Klienti se nás často ptají, čím se naše nová služba Platform for Kubernetes liší od podobných produktů například od Amazonu, Googlu nebo Microsoftu. Rozdílů je poměrně hodně, proto jsme se je rozhodli do detailu popsat v tomto článku.

Individuální návrh infrastruktury

Většina tradičních cloud providerů poskytuje platformu pro infrastrukturu, ale návrh a samotná tvorba infrastruktury je na klientech – respektive na jejich vývojářích. Valná většina vývojářů Vám ovšem potvrdí, že by se mnohem raději věnovali vývoji než četbě 196-stranné příručky o tom, jak používat Amazon EKS. Příručku je navíc, narozdíl od většiny návodů, opravdu potřeba přečíst – nastavování Kubernetes u Amazonu totiž není zrovna intuitivní.

Ve vshosting~ víme, jak moc je tohle pro spoustu firem frustrující. Vývojový tým by se měl zabývat vývojem a neztrácet čas něčím, co ani nepatří do jeho specializace. Proto si zakládáme na tom, že narozdíl od tradičních cloudů, Kubernetes řešení šijeme každému klientovi na míru. Nemusíte si tedy u nás složitě vybírat z předdefinovaných balíčků, číst dlouhé návody ani vymýšlet, jaká infrastruktura bude pro Vaše potřeby nejlepší. Navrhneme infrastrukturu Kubernetes přesně pro potřeby Vaší aplikace, a to včetně load balancingu, networkingu, storage a dalších nezbytností.

Kromě toho Vám rádi pomůžeme s analýzou aplikace pro přechod do Kubernetes, pokud ho ještě nepoužíváte. Na základě Vašich požadavků také poradíme s výběrem těch nejvhodnějších technologií (konzultace je v ceně služby!), aby vše běželo, jak má a následné škálování bylo co možná nejjednodušší.

Když už jsme u škálování, to je u nás mimořádně snadné. Opět se nekoná žádné vybírání z balíčků výkonu atd., u vshosting~ prostě plynule škálujete dle aktuální potřeby. Nabízíme také možnost jemného škálování jen u potřebných prostředků. Potřebuje Vaše aplikace kvůli nárůstu klientů více RAM, nebo větší diskový prostor? Není problém.

Poté, co vytvoříme customizovaný návrh infrastruktury, provedeme individuální instalaci a nastavení Kubernetes i loadbalancerů před předáním do ostrého provozu. Jen pro představu, u Googlu, Amazonu nebo Microsoftu by všechny tyto úkony byly na Vás. U vshosting~ také vše ve spolupráci s Vámi pečlivě odladíme. Po spuštění poběží Kubernetes v našem cloudu nebo na špičkovém hardware v našem vlastním datacentru ServerPark.  

Možnost kombinace fyzických serverů a cloudu

Další výhodou Kubernetes od vshosting~ je možnost kombinovat fyzické servery s cloudem – ostatní Kubernetes poskytovatelé toto vůbec neumožňují. Díky tomu si například můžete začít testovat Kubernetes na Virtual Machine s nižším výkonem a teprve poté přejít s projektem do produkce přidáním fyzických serverů (to vše u nás jde za běhu) s případným zachováním stávajících VMs pro vývoj. 

Pro srovnání: třeba Google Vám sice nabídne buď možnost on-prem Google Kubernetes Engine nebo variantu v cloudu, ale musíte si vybrat jedno z toho. Navíc on-prem variantu si musíte spravovat „na vlastní triko“. Variantu kombinující fyzické servery a cloud nenajdete ani u Amazonu a Microsoftu.

U nás je možné fyzické servery s cloudem kombinovat dle libosti a navíc se Vám postaráme o kompletní správu – Vy už se můžete soustředit jen a jen na vývoj. Dohlédneme na správu operačních systémů všech Kubernetes nodů a loadbalancerů, zajistíme i průběžné upgrady operačních systémů, kernelu apod. (po domluvě i upgrade Kubernetes).

Vysoké SLA a senior support 24×7

Jedním z nejdůležitějších kritérií výběru dobré Kubernetes platformy je její dostupnost. Možná Vás proto překvapí, že Microsoft AKS ani Google GEK neposkytují SLA („financially-backed service level agreement“) a pouze tvrdí, že se „vynasnaží zajistit alespoň 99,5% dostupnost“. 

Amazon EKS sice mluví o 99,9% SLA, ale vzhledem k jejich podmínkám vrácení kreditu jde ve skutečnosti pouze o garanci 95% dostupnosti – Amazon totiž vrací 100 % kreditu teprve při této úrovni dostupnosti. V případě pouze mírného poklesu pod 99,9 % dostupnosti Vám vrátí jen 10 % kreditu. 

Ve vshosting~ Vám smluvně garantujeme 99,97% dostupnost, tedy ještě více než poněkud teoretické SLA u Amazonu a výrazně více než negarantovaná dostupnost 99,5 % u Microsoftu a Googlu. Reálně se dostupnost u nás pohybuje dokonce na 99,99 %. Managed Kubernetes řešení u nás navíc funguje v režimu high-availability cluster, tudíž v případě poruchy jednoho serveru nebo části cloudu celé řešení ihned startuje na záložním serveru či v jiné části cloudu. 

Zaručujeme také vysokorychlostní konektivitu i neomezené datové toky do celého světa. Každému klientovi navíc garantujeme vyhrazenou šířku pásma do internetu. Naše síť má kapacitu až 1 Tbps a každá trasa je mnohonásobně zálohovaná.

Díky režimu high-availability cluster, vysoké kapacitě sítě a zálohovanému připojení je Kubernetes řešení od vshosting~ mimořádně odolné proti výpadku jakékoliv části clusteru. Kromě toho naše zkušené týmy Vaše řešení neustále monitorují a případné začínající problémy rychle identifikují, než se mohou projevit pro koncového uživatele. Máme také robustní AntiDDoS ochranu, která celý cluster efektivně chrání před kyberútoky.

Debugging a monitoring celé infrastruktury

Oproti tradičním cloud providerům, ve vshosting~ na Vaše řešení dohlížejí týmy senior administrátorů a techniků neustále 24/7, sedí přímo v našem datacentru a v případě problému reagují do 60 sekund – a to klidně v sobotu ve 2 ráno. Tito experti za Vás neustále monitorují desítky parametrů celého řešení (hardware, loadbalancery, Kubernetes) a díky tomu dokážou většině problémů zabránit předtím, než se pořádně projeví. Navíc garantujeme opravu nebo výměnu nefunkčního serveru do 60 minut.

Pro maximální zjednodušení od nás dostanete jeden servisní kontakt pro všechny služby: ať jde o Kubernetes jako takový, jeho správu nebo cokoliv ohledně infrastruktury. Vyřešíme běžnou údržbu i složitý debugging. V rámci ceny služby Platform for Kubernetes nabízíme také konzultace ohledně konkrétní podoby Dockerfiles (3 hodiny měsíčně).


vshosting~

Většina návodů pro dockerizaci aplikací, které naleznete na internetu, je určena pro specifický jazyk a prostředí. My se ale budeme věnovat obecným postupům určeným pro jakýkoliv typ aplikace a ukážeme vám, jak je možné dosáhnout jejich provozu v Docker kontejneru.

Výběr base image

Pro bezproblémový provoz a následné jednoduché úpravy a upgrady je vhodné vybrat co nejideálnější (a autorem dobře podporovaný) base image. Vzhledem k tomu, že na Docker Hub může nahrávat image naprosto kdokoliv, je dobré vybraný image důkladně prozkoumat a ověřit si, zda neobsahuje nějaký škodlivý software, nebo například staré verze knihoven s bezpečnostními problémy. 

Dobrou volbou pro začátek jsou image označené jako „Docker certified“, které poskytují určitou formu garance, že image je v pořádku a pravidelně aktualizovaný. Příkladem pro takový image je PHP nebo Node.js.

Dále můžeme také doporučit sbírku od firmy Bitnami, která obsahuje spoustu předpřipravených image aplikací a vývojových prostředí.

Doinstalování dalšího software

Podle toho, jaký image jsme si pro svůj projekt vybrali, můžeme provést instalaci dalšího software, tak, abychom splnili všechny předpoklady pro bezproblémový provoz aplikace.

Nejlepším řešením je použít balíčkovací systém distribuce, na které je image založen (obvykle Ubuntu/Debian, Alpine Linux nebo CentOS). Je také velmi důležité udržovat seznam nainstalovaného softwaru co nejužší, například neinstalovat do kontejneru textové editory, kompilátory a jiné nástroje pro vývoj.

Vlastní soubory v Docker image

Do výsledného image budeme také chtít přidat vlastní soubory. Ať už konfigurace, přímo zdrojové kódy nebo binární soubory z aplikace. V Dockerfile se k tomu používají příkazy ADD nebo COPY, který je transparentnější, ale neumožňuje některé pokročilejší funkce, jako je například rozbalení archivu do image.

Definice oprávnění

Ačkoliv je to ta nejjednodušší cesta, vyhněte se spouštění aplikace v kontejneru za uživatele root, přináší to mnohá bezpečnostní rizika a zesiluje možnost úniku z kontejneru v případě kompromitace aplikace nebo po využití nějaké bezpečnostní chyby v softwaru třetích stran, které využíváte.

Definice portů služby

Pokud vaše aplikace nepoužívá uživatele root, případně nemá zvýšené capabilities (CAP_NET_ADMIN), není možné používat tzv. privileged ports. (1-1024). To však v Dockeru není nutné. Použijte jakýkoliv vyšší port (např. 8080 a 8443 místo 80/443 u webserveru) a proveďte mapování portu prostřednictvím parametrů Dockeru.

Spuštění aplikace v kontejneru

Jakkoliv je jednoduché spouštět přímo binární soubor vaší aplikace (nebo web serveru, Node.js, apod.), mnohem sofistikovanější cestou je vytvořit si vlastní tzv. entrypoint – tedy skript, který provede úvodní konfiguraci aplikace, může reagovat na proměnné prostředí apod. Dobrý příklad tohoto řešení můžeme najít například v oficiálním image PostgreSQL.

Metody konfigurace

Velká většina aplikaci vyžaduje pro správné spuštění správnou konfiguraci. Je samozřejmě možné použít přímo konfigurační soubor (například v mountovaném adresáři zvenku kontejneru), ale ve spoustě případů je lepší použít předem připravený entrypoint skript, který nám vhodnou konfiguraci při spuštění připraví pomocí template a proměnných prostředí kontejneru.

Aplikační data

Vyhněte se ukládání dat na filesystém kontejneru, ve standardní konfiguraci dojde po restartu kontejneru k jejich smazání. Využijte bind mounts (adresář vně kontejneru), nebo mounted volume.

Stejně tak je nutné vyřešit ukládání/odesílání logů. Nejvhodnější je samozřejmě použití centralizovaného logování pro všechny vaše aplikace (ELK stack), dobrou službu však odvede i obyčejný remote syslog.

Co dál?

Vždy je co zlepšovat. Nad rámec tohoto článku je možné se zamyslet nad různými možnosti configuration managementu, ELK stacku pro logování, sbírání aplikačních a systémových metrik přes Prometheus a možnosti dosažení load balancingu a high-availability pro naši aplikaci s použitím Kubernetes – které vám ve vshosting~ rádi postavíme přímo na míru vašemu projektu 🙂


Damir Špoljarič

Docker v poslední době nabývá na popularitě. O Dockeru můžeme mluvit jako o kontejnerové virtualizaci, což je správně, ale určitě to plně nevystihuje jeho účel. Možná je přesnější hovořit o izolaci procesů. Ani to ale nevyjádří přesnou podstatu.

O Dockeru lze uvažovat i jako o virtualizaci, která nemá žádný overhead. Start kontejneru je okamžitý, kernel se sdílí s podkladovým OS a ani nedochází k žádnému zpomalení při vlastním běhu programu, resp. jde vlastně o fork systemd procesu. Nejlepší tedy bude mluvit o Dockeru jako o Dockeru.

Výhody používání Docker

Docker, stejně jako jiné kontejnerové virtualizace, odstraňuje jeden z velkých problémů samotné virtualizace – nároky na hardware. Některé virtualizace mohou spotřebovat až 1/5 výkonu. Klasická virtualizace, jak ji zná dnes asi už každý, pracuje s modelem hardware – hostitelský OS – hypervisor – klientský OS – aplikace.

U Dockeru je to jinak. Kontejnery totiž sdílí jednu linuxovou instanci, nad kterou se pak jednotlivé izolované procesy spouští. Pracuje tedy s modelem hardware – OS – docker engine – a pak už rovnou aplikace.

Technologie Docker není náhradou za LXC. „LXC“ se odkazuje na jádro Linuxu (jmenovitě jmenných prostorů a řídících skupin), které umožňuje navzájem vytvářet procesy mezi jednotlivými oblastmi a řídit přidělování prostředků. Na vrcholu této nízké úrovně funkcí jádra nabízí Docker nástroj na vysoké úrovni s mnoha výkonnými funkcemi.

Docker je (narozdíl od strojů) optimalizován pro nasazení aplikací. To se odráží v jeho rozhraní API, uživatelském rozhraní, filozofii návrhu a dokumentaci. Naproti tomu skripty LXC se zaměřují na kontejnery jako lehké stroje – v podstatě na servery, které se bootují rychleji a potřebují méně paměti.

Nejzajímavějši funkce Docker

Přenosné nasazení mezi stroji

Docker definuje formát pro zabalení aplikace a všech jejích závislostí do jednoho objektu nazvaného kontejner. Docker jako kontejner lze v přeneseném smyslu slova skutečně s kontejnerem srovnávat. Cokoliv, myšleno aplikace a její prostředí, do něj uzavřete, můžete snadno přenést kamkoliv. Kdekoliv ho použijete bude fungovat stále stejně.

Automatický build

Docker obsahuje nástroj pro vývojáře k automatickému sestavení kontejneru ze zdrojového kódu s plnou kontrolou závislostí aplikací, vytvářením nástrojů, balením, apod. Volně jsou k použití make, maven, chef, puppet, salt, balíčky Debian, RPM, zdroj tarballs nebo jakékoli kombinace výše uvedených, bez ohledu na konfiguraci strojů.

Verze

Docker obsahuje funkce typu git pro sledování následných verzí kontejneru, kontrolu rozdílu mezi verzemi, zavádění nových verzí, rollback atd. Historie také zahrnuje, jak byl kontejner sestaven a kým. Získáte tak sledovatelnost celé cesty z produkčního serveru až k vývojáři. Docker také provádí inkrementální nahrávání a stahování, podobně jako git pull, takže nové verze kontejneru mohou být přenášeny pouze odesláním diffs.

Klony

Každý kontejner může být použit jako “rodičovský obraz” pro vytvoření více specializovaných komponent. To lze provést ručně nebo jako součást automatizovaného buildu. 

I když ve způsobu používání Dockeru nikomu nic nebrání, měly by se v rámci udržitelnosti vytvářet pouze kontejnery obsahující jednu aplikaci. Pokud použijete aplikací více, vzniká riziko konfliktních závislostí, a to jde přímo proti filosofii Dockeru, kterou je snadná přenositelnost. Proto jsou od více-aplikačních kontejnerů vývojáři samotným Dockerem odrazováni.

Při definování docker image je především nutné dodržet alespoň tato pravidla:

  • mít explicitně deklarované a izolované závislosti
  • konfiguraci mít uloženou do prostředí
  • počítat s možností neomezeného škálování aplikace nahoru i dolů

Bezstavové vs. stavové aplikace

Obecně se pak dá říct, že je Docker nejsilnější v provozu bezstavových aplikací. U aplikací stavových, jako jsou typicky databázové servery, dává jeho použití smysl pouze v určitých případech. U jednoinstančních instalací Dockeru může být smysl v provozování stavových aplikací pouze pro účely nějakých development nebo testing verzí.

Pokud se ale budeme bavit o provozování Dockeru na nějaké větší platformě s množstvím fyzických serverů, tak mohou být škálovatelné stavové aplikace zajímavou možností, jak v závislosti na vytížení aplikace upravovat její výkon. Typicky Docker Mysql Cluster.

Na závěr lze říci, že se jedná o velmi sofistikovaný a výkonný nástroj pro development a testing aplikací. Pro jeho použití v produkčním prostředí je ale nutné projít trošku delší cestu.

Pokud hledáte prostředí pro větší projekty, které je postavené na Dockeru, mrkněte na naší službu Managed Platform for Kubernetes. Ta nabízí plně automatizovanou infrastrukturu pro Docker aplikace.


Damir Špoljarič

S rozvojem aplikací založených na microservices architektuře s použitím kontejnerizovaného řešení (Docker, LXC..) roste i poptávka po službě, která by provozovatelům takových aplikací zajistila plně spravovanou, tedy managed, platformu. 

vshosting~ tak jako první firma v ČR a SR přináší privátní cloud s plně spravovaným řešením pro Docker založený na open-source orchestračním řešení Kubernetes. Nová služba se jmenuje Managed Platform for Kubernetes.

Jedná se o „spin-off“ tradičních managed služeb pro rozsáhlou architekturu za použití technologie Docker. Jde tedy o řešení pro aplikace, které jsou již pro Docker vytvořeny a které potřebují maximální flexibilitu a škálovatelnost.

Managed Platform for Kubernetes zajistí uživatelům:

  • infrastrukturu jako službu – buď ve vshosting~ cloudu nebo na fyzických serverech
  • plně spravovanou Kubernetes orchestraci a všechny související služby této infrastruktury jako je load balancing, object storage případně shared-filesystem storage a také tradiční full managed služby pro související persistentní služby (SQL a NoSQL databáze, RabbitMQ apod.), kde provoz těchto služeb není v Dockeru obecně doporučován a pro vývojáře tvoří blackbox, který „musí prostě fungovat“
  • monitoring a zálohování
managed Kubernetes cluster

Managed Platform for Kubernetes je služba, která vyžaduje individuální přístup a odladění platformy na míru klientské aplikaci včetně build & deploy procesu. vshosting~ nabízí také doplňkovou službu auditu klientských šablon a souvisejícího serverového nastavení. Jedinou odpovědností klienta (resp. jeho vývojářů či DevOps) tak zůstává odpovědnost za provoz jednotlivých kontejnerů a obsažené klientské aplikace jako celku vzhledem k filosofii Docker aplikací.

Více informací o službě Managed Platform for Kubernetes najdete zde: https://vshosting.cz/kubernetes/


Během 17 let jsme provedli úspěšnou migrací stovky klientů. Pomůžeme i vám.

  1. Domluvte se na konzultaci

    Stačí nám zanechat kontakt. Obratem se vám ozveme.

  2. Bezplatný návrh řešení

    Nezávazně probereme, jak vám můžeme pomoct. Navrhneme řešení na míru.

  3. Profesionální realizace

    Připravíme vám prostředí pro bezproblémovou migraci dle společného návrhu.

Zanechte nám svůj e-mail nebo telefon




    Nebo nás kontaktujte napřímo

    +420 246 035 835 V provozu 24/7
    konzultace@vshosting.cz
    Zkopírovat
    Obratem se vám ozveme