späť na články

Docker #1: 5 dôvodov, prečo sme ho začali používať

Mário Keméň
Backend programátor
Docker #1: 5 dôvodov, prečo sme ho začali používať

Rýchle zhrnutie: Nechce sa Vám inštalovať nespočetne veľa balíčkov, knižníc a nástrojov potrebných na rozbehnutie webovej appky? Zdá sa Vám, že plytváte čas rozbehnutím vývojového prostredia pre nového kolegu? Šetriť svoj drahocenný čas a využiť ho efektívnejšie sa dá napríklad aj používaním nástroja Docker, a to nielen ako jednotné prostredie pre lokálny vývoj.


Predtým ako sme poznali Docker, všetko potrebné pre vývoj sme si museli inštalovať každý sám. Postup na inštaláciu sme mali spísaný v internej poznámke. Čiže, keď sme si menili PC z dôvodu údržby alebo si nový kolega potreboval nakonfigurovať svoj PC, riadili sme sa postupom v poznámke.

Ak by úloha “rozbehaj si komp” predstavovala jednorázovú záležitosť, tak by to možno nebolo až také otravné. Ibaže čo keď potrebujete:

  • zmeniť verziu programovacieho jazyka?
  • zmeniť JS balíčkovací systém?
  • na jednom projekte také prostredie, na druhom iné a na treťom ďalšie?
  • špecifické nastavenie na úrovni webového servera viazané k projektu
  • a XY ďalších vecí

Tým som chcel poukázať hlavne na to, že časom stále meníme rôzne verzie používaných nástrojov/aplikácií a najradšej by sme to robili bez rizika, že by sme si niečo rozbili a naša robota by potom stála.

O Dockeri sme vedeli už dlho, ale potreba ho viac preskúmať v praxi, začala vznikať v čase, keď sme sa ako firma začali personálne rozrastať, chceli sme maximalizovať homogénnosť našich vývojových prostredí a ako bonus má Docker stále stúpajúcu krivku popularity medzi vývojármi. Od absolvovania kurzu a prvej “Hello World” aplikácie ubehol už nejaký ten rok a my neprestávame byť hladní po zlepšovaní nášho vývojového procesu.

Prejdime ale už na tie dôvody, prečo sme začali Docker používať.

1. Jednotné vývojové prostredie

          Principiálne to znamená, že stačí mať nainštalovaný webový prehliadač, GIT, IDE a Docker. Toto predstavuje úplné minimum na to, aby vývojár mohol začať pracovať. Všetko ostatné (webový server, databáza, redis, elasticsearch, atď.) sme schopní zabaliť do kontajnerov konkrétnej webovej aplikácie a toto nastavenie verziovať v GITe, ktoré každý používa. Kontajner predstavuje izolovanú službu od prostredia PC, na ktorom beží a tento kontajner zdieľa operačné jadro systému. Nie je to virtuálka, ale ako veľmi odľahčenú virtualizáciu to môžeme pokojne tiež volať. Docker je už iba aplikácia, ktorá s týmito kontajnermi dokáže efektívne pracovať.

          2. Izolácia aplikácií a služieb

            Bežnou vecou je, že firma prevádzkuje projekty, ktoré môžu bežať na rôznych verziách napr. programovacieho jazyka alebo webového servera povedzme z historických dôvodov. V produkcii sa to dá vyriešiť jednoducho, pretože stačí iba kúpiť ďalší server alebo virtual a rozbehať tam prostredie s konfiguráciou pre dané projekty. Lenže, čo keď firma prevádzkuje 95% projektov na najnovších verziách balíčkov a tých zvyšných 5% je “nutné zlo”, o ktoré sa treba starať? Rozbehať si takýto projekt pre lokálny vývoj by znamenal downgrade viacerých balíčkov a nástrojov, a to je častokrát tŕnistý postup (väčšinou len na úrovni CLI). Docker tieto prípady vynikajúco rieši, pretože aplikácie sú medzi sebou nezávislé a prepnutie trvá do pár sekúnd.

            3. Bezpečné škálovanie

              Najlepší príklad predstavuje zmenu verzie čohokoľvek. Tým, že konfigurácia kontajnerovej aplikácie je zabalená doslovne v 1 až 2 súboroch a je to prenositeľné medzi platformami, sme schopní sa kedykoľvek vrátiť do funkčnej verzie (ak by sa nám nepodaril nejaký update). To nám dáva bohaté možnosti experimentovania s instatným vrátením do stavu určeným pre vývoj.

              4. Multiplatformové

                Existujú 2 hlavné verzie Docker-u pre desktopové platformy a to Windows a Mac OS. Tiež existuje podpora pre cloud (AWS, Microsoft Azure a IBM Cloud) a serverové platformy ako napr. CentOS, Oracle Linux, Ubuntu a ďalšie. Aplikácie zabalené v Docker-i by preto mali bežať na rôznych platformách. V ideálnom svete to beží všade bez problémov. Windows má však občas problém umožniť alokovať diskový priestor pre Docker a tiež záleží, akú distribúciu WIN používate. Napríklad Pro, Enterprise alebo aj Education majú natívnu podporu Hyper-V (ktorú Docker využíva pre podporu virtualizácie). Nižšie (ekonomickejšie) verzie túto podporu nemajú, ale dá sa to bezproblémovo vyriešiť aplikáciou Docker Toolbox. Stále sú to však drobné problémy v porovnaní s tým, aký benefit nám prináša si appku takto spúšťať na rôznych platformách.

                “Build once, run everywhere.”

                5. Je to zdarma!

                  Áno, Docker je open source projekt, ale samozrejme nič nie je tak úplne zdarma. Dalo by sa povedať, že toto je skôr benefit ako dôvod. Investícia spojená s Docker-om znamenala absolvovať školenie, ktoré povedzme je tou najmenšou položkou. Najväčší “škrt” určite predstavoval čas strávený výskumom a testovaním tejto technológie. Aby takáto investícia nebola márnotratná, jednoducho si len treba predtým odpovedať na pár otázok typu:

                  • Prečo by sme to mali chcieť?
                  • Akú hodnotu nám to prinesie?
                  • Nie je to len “hype” v komunite?
                  • Ako je riešená podpora?
                  • atď atď

                  Investícia do Docker-u nám v konečnom dôsledku už teraz šetrí čas tam, kde predtým nie a vytvoril sa tak priestor na výskum ďalších procesných zlepšení.

                  Záver

                  V tomto článku som sa snažil vyjadriť hlavné dôvody, prečo sme išli do Docker-u. Celkovo s jeho príchodom pociťujeme jednoduchšie personálne rozširovanie (týka sa len vývojárov) a tiež zvýšenie možnosti experimentovania. 

                  Na tému Docker chystám aj ďalšie články, ktoré sa už budú primárne zameriavať na technickú stránku, ako napríklad základné pojmy, rozbehanie projektu a modularita v škálovaní. 

                  Mário Keméň
                  Backend programátor

                  Mário sa podieľa na rozvoji klientských riešení, prispieva k rozvoju produktu Venalio a je náš Docker guru.



                  Páčil sa vám článok?
                  Zdieľajte.

                  Zaujala vás naša práca
                  a máte záujem o kvalitný e-shop?

                  Začnime spolu
                  nový projekt

                  Napíšte nám