A Dockerben és az Ansible-ben egyvalami elvitathatatlanul hasonló: a népszerűségük. Az utóbbi öt évben a Google keresőkben nagyjából hasonló utat jártak be, és törtek fel mindketten, vagyis ugyanolyan elszántsággal söpörték be az feléjük irányuló érdeklődést. Az érdeklődés növekedése és számossága is azt sugallja, hogy valamilyen összefüggés lehet a két dolog között:
Pedig ahogy lenni szokott, ezen eszközök múltja sokkal korábbra nyúlik vissza.
Az Ansible egy konfiguráció menedzsment eszköz, olyan, ami már 14 éve is volt a piacon (lásd Puppet). Tulajdonképpen arról van szó, hogy egy komplex, sokgépes infrastruktúrát egyszerűbben lehet kezelni, egy úgynevezett Playbookban megírni az elérni kívánt állapotokat (tehát nem parancsokat!), majd ezt futtatni akárhány virtuális vagy fizikai gépen. Sokszerveres környezetben éri meg nagyon használni.
Előnye még, hogy a Playbook részfeladatait, a Role-okat az Ansible felhasználók maguk terjesztik akár az Ansible Galaxy-n keresztül, itt tehát már megoldott feladatok ezreiből válogathatunk magunknak olyat, amilyenre éppen szükségünk van.
A Docker ehhez képest egy konténer toolkit. A konténer egy determinált, jól körülhatárolható és izolált folyamat, amit általában egy meghatározott feladat ellátására hozunk létre egy vagy sok-sok szerveren. Amikor végzett a konténer, akkor eldobjuk, és ha újra kell, újra elővesszük. A konténer megszerez magának minden erőforrást, amire szüksége van, de mást nem.
A Docker segít a fejlesztőnek, hogy pehelysúlyú applikációkat nagyon könnyen pakoljon össze, juttasson el a célhelyre, majd futtassa ott úgy, hogy az eredményben biztos lehet (amennyiben saját maga írta meg, persze).
A konténerek múltja szintén több mint egy évtizedre nyúlik vissza, csak épp eleinte senki nem használta őket. Az akkor még csak Linuxon elérhető lehetőségeket nagyon kevesen tudták egyáltalán kezelni. A lökés 2013-ban volt érezhető, amikor a Dockert jegyző dotCloud átnevezte magát Dockerre, nyílt forráskódúra változtatta a Dockert, majd egy évvel később kiadták a Docker 1.0-át. Nyilván nem ártott a sikernek, hogy a Windows 10 és Windows Server 2016-ban is elkezdték támogatni.
Ahogy a Role-okat, úgy a Dockereket is letölthetjük mások által megírt valójukban. Hogy miért fontos ez? Azért, mert ezek is borzasztó vonzóvá teszik a bennük rejlő lehetőségeket.
Nálunk is számtalanszor jelentkeznek ügyfelek az igénnyel: hoznák a konténereiket. A lelkesedés érthető, mert tényleg fantasztikus eszközről beszélünk, de ahogy minden más, ez is csak avatott kezekben válik arannyá. Ritkán találkozunk olyannal, hogy a megfelelő feladathoz a megfelelő eszközt használnák, illetve találkozhatunk ész nélkül a Dockerből összelegózott alkalmazással is.
Egy Docker addig jó, amíg működik. De mi van, ha egyszer csak nem működik?
Az Ansible hihetetlen népszerűségre tett szert azért, mert nagyon egyszerű vele dolgozni. Az automatizálás nem lehet nehezebb, mint maga a feladat, amit automatizálni akarsz – ez az ígéret, és ehhez tartják is magukat. A Dockerek, különösen a specializált feladatokra készített eszközök összetákolásának lehetősége miatt, még vonzóbb lett a fejlesztők és a vállalatok szemében. Erőforrás-megtakarítás: minek fizess egy embert, ha megcsinálja ugyanazt a mások által megírt kódot? Nagy veszélyeket, nagy összeomlásokat rejt magában ez a felfogás.
Mi azt tartanánk jónak, ha fejlesztő és rendszergazda együtt dolgoznák ki az adott feladatra optimálisan működő, ügyes konténereket, folyamatokat. Az egyszerűség, könnyű skálázhatóság, gyors használat pedig nem szabad, hogy berántson nagyon a lejtőn minket, mert a hó csúszik, és jön a fa.
Addig is: a RackForestnél az optimális futás érdekében külső konténerek csak alapos üzemeltetői szemmel történő átvizsgálás után mehetnek élesbe.