Zašto biste trebali koristiti Docker i spremnike

Knjiga objavljena 1981. godine pod nazivom  Nailing Jelly to a Tree opisuje softver kao "maglovit i težak za čvrsto držanje". To je bilo točno 1981. godine, a od tada nije manje istinito ni gotovo četiri desetljeća. Softver, bilo da se radi o aplikaciji koju ste kupili ili o aplikaciji koju ste sami izradili, i dalje je teško implementirati, teško upravljati i pokretati.

Docker spremnici pružaju način da se bolje informirate o softveru. Možete koristiti Docker za zamotavanje aplikacije na takav način da se rješavaju problemi njezine implementacije i izvođenja - kako je izložiti na mreži, kako upravljati njezinom upotrebom pohrane i memorije i I / O-a, kako kontrolirati dozvole pristupa. izvan same aplikacije i to na način koji je dosljedan u svim "kontejnerskim" aplikacijama. Svoj spremnik Docker možete pokrenuti na bilo kojem računalu kompatibilnom s OS-om (Linux ili Windows) na kojem je instalirano vrijeme izvršavanja Dockera.

Docker nudi mnoge druge pogodnosti, osim ove praktične kapsulacije, izolacije, prenosivosti i kontrole. Spremnici za docker su mali (megabajti). Oni počinju trenutno. Oni imaju svoje ugrađene mehanizme za izradu verzija i ponovnu upotrebu komponenata. Mogu se jednostavno dijeliti putem javnog Docker Hub-a ili privatnog spremišta.

U ovom ću članku istražiti kako Dockerovi spremnici olakšavaju izradu i primjenu softvera - problemi se odnose na spremnike, kako ih rješavaju, kada su pravi odgovor na problem, a kada nisu.

Prije Docker kontejnera

Već dugi niz godina, korporativni softver obično se koristi na „golom metalu“ (tj. Instalira se na operativni sustav koji ima potpunu kontrolu nad temeljnim hardverom) ili na virtualnom stroju (tj. Instalira se na operativni sustav koji dijeli osnovni hardver s ostalim "gostujućim" operativnim sustavima). Naravno, instalacija na goli metal otežala je kretanje softvera i ažurirala ga - dva ograničenja zbog kojih je IT teško mogao odgovoriti na promjene u poslovnim potrebama.

Tada se pojavila virtualizacija. Platforme za virtualizaciju (poznate i kao "hipervizori") omogućile su više virtualnih strojeva da dijele jedan fizički sustav, a svaki virtualni stroj oponaša ponašanje cijelog sustava, zajedno sa svojim operativnim sustavom, pohranom i I / O-om, na izoliran način . IT bi sada mogao učinkovitije odgovoriti na promjene u poslovnim zahtjevima, jer bi se VM-ovi mogli klonirati, kopirati, migrirati i okretati prema gore ili dolje kako bi udovoljili potražnji ili sačuvali resurse.

Virtualni strojevi također su pomogli smanjiti troškove, jer se više VM-ova moglo konsolidirati na manje fizičkih strojeva. Naslijeđeni sustavi koji pokreću starije programe mogli bi se pretvoriti u VM-ove i fizički ukinuti radi uštede još više novca.

Ali virtualni strojevi i dalje imaju svoj dio problema. Virtualni su strojevi veliki (gigabajti), od kojih svaki sadrži puni operativni sustav. Samo se toliko virtualiziranih aplikacija može objediniti u jedan sustav. Pribavljanje VM-a i dalje traje prilično vremena. Napokon, prenosivost VM-ova je ograničena. Nakon određenog trenutka, VM-ovi nisu u mogućnosti pružiti brzinu, okretnost i uštedu kakvu zahtijevaju tvrtke koje se brzo kreću.

Pogodnosti Docker spremnika

Spremnici djeluju poput VM-ova, ali na daleko specifičniji i zrnatiji način. Oni izoliraju jednu aplikaciju i njene ovisnosti - sve vanjske softverske knjižnice koje aplikacija treba pokrenuti - i iz osnovnog operativnog sustava i iz drugih spremnika. Sve kontejnerske aplikacije dijele jedan zajednički operativni sustav (bilo Linux ili Windows), ali su međusobno razdvojene i od sustava u cjelini.

Prednosti Dockerovih spremnika pokazuju se na mnogim mjestima. Evo nekoliko glavnih prednosti Dockera i spremnika:

Docker omogućuje učinkovitije korištenje sistemskih resursa

Primjeri kontejneriziranih aplikacija koriste mnogo manje memorije od virtualnih strojeva, brže se pokreću i zaustavljaju te se mogu puno gušće spakirati na svoj hardver domaćina. Sve ovo znači manju potrošnju na IT.

Ušteda troškova varirat će ovisno o tome koje su aplikacije u igri i koliko resursima trebaju, ali spremnici uvijek djeluju učinkovitije od VM-ova. Također je moguće uštedjeti na troškovima softverskih licenci, jer vam je potrebno mnogo manje instanci operativnog sustava da biste pokrenuli ista radna opterećenja.

Docker omogućuje brže cikluse isporuke softvera

Poduzetnički softver mora brzo reagirati na promjenjive uvjete. To znači i jednostavno skaliranje kako bi se udovoljilo potražnji i lako ažuriranje kako biste dodali nove značajke po potrebi poslovanja. 

Docker spremnici olakšavaju brzo stavljanje novih verzija softvera s novim poslovnim značajkama u proizvodnju - i po potrebi brzo vraćanje na prethodnu verziju. Oni također olakšavaju provedbu strategija poput plavo / zelene implementacije.

Docker omogućuje prijenos aplikacija

Važno je tamo gdje pokrećete poslovnu aplikaciju - iza vatrozida, kako biste stvari držali u blizini i zaštitili se; ili u javnom oblaku, za lakši javni pristup i visoku elastičnost resursa. Budući da Docker spremnici obuhvaćaju sve što je potrebno za pokretanje aplikacije (i samo te stvari), omogućuju jednostavno prebacivanje aplikacija između okruženja. Bilo koji domaćin s instaliranim Dock runtimeom - bilo to prijenosno računalo programera ili javna instanca u oblaku - može pokrenuti Docker spremnik.

Docker sjaji za arhitekturu mikro usluga

Lagani, prijenosni i samostalni Dockerovi spremnici olakšavaju izgradnju softvera prema naprednom razmišljanju, tako da ne pokušavate riješiti sutrašnje probleme jučerašnjim razvojnim metodama.

Jedan od spremnika softverskih uzoraka koji olakšavaju su mikroservisi, gdje se aplikacije sastoje od mnogih labavo povezanih komponenata. Razlažući tradicionalne, „monolitne“ aplikacije u zasebne usluge, mikroservisi omogućavaju skaliranje, modificiranje i servisiranje različitih dijelova poslovne linije odvojeno, odvojeni timovi i na odvojenim vremenskim trakama, ako to odgovara potrebama korisnika. poslovanje. 

Spremnici nisu potrebni za implementaciju mikrousluga, ali su savršeno prikladni za pristup mikrouslugama i općenito agilnim razvojnim procesima.

Problemi Docker spremnika ne rješavaju

Prvo što morate imati na umu kod spremnika je isti savjet koji se odnosi na bilo koju softversku tehnologiju: ovo nije srebrni metak. Docker spremnici sami po sebi ne mogu riješiti svaki problem. Posebno:

Docker neće riješiti vaše sigurnosne probleme

Softver u spremniku prema zadanim postavkama može biti sigurniji od softvera koji se koristi na golom metalu, ali to je kao da kažete da je kuća s zaključanim vratima sigurnija od kuće s otključanim vratima. Ne govori ništa o stanju u kvartu, vidljivoj prisutnosti dragocjenosti koje primamljuju lopova, rutini ljudi koji tamo žive, i tako dalje. Spremnici aplikaciji mogu dodati sloj sigurnosti, ali samo kao dio općeg programa osiguranja aplikacije u kontekstu.

Docker čarobno ne pretvara programe u mikroservise

Ako sadržavate postojeću aplikaciju, to može smanjiti njezinu potrošnju resursa i olakšati implementaciju. Ali to ne mijenja automatski dizajn aplikacije niti način interakcije s drugim aplikacijama. Te pogodnosti dolaze samo kroz vrijeme i trud programera, a ne samo kroz mandat da se sve premjesti u spremnike.

Stavite monolitnu aplikaciju u stilu SOA ili SOA u kontejner i na kraju ćete dobiti staru aplikaciju u kontejneru. To ga ne čini korisnijim za vaš rad; ako ništa, moglo bi ga učiniti manje korisnim. 

Docker nije zamjena za virtualne strojeve

Jedan od upornih mitova o spremnicima jest da čine VM zastarjelim. Mnoge aplikacije koje su se nekad izvodile u VM-u mogu se premjestiti u spremnik, ali to ne znači da sve mogu i trebaju. Na primjer, ako se bavite industrijom s teškim regulatornim zahtjevima, možda nećete moći zamijeniti spremnike za VM-ove, jer VM-ovi pružaju više izolacije od spremnika.

Slučaj za Docker kontejnere

Rad na poslovnom razvoju poznat je po tome što je skriven i sporo reagira na promjene. Poduzetnici za programere cijelo se vrijeme protive takvim ograničenjima - ograničenjima koja im nameće IT, zahtjevima koje pred njih postavlja poslovno društvo. Docker i spremnici pružaju programerima veću slobodu za kojom žude, a istovremeno pružaju načine za izgradnju poslovnih aplikacija koje brzo reagiraju na promjenjive uvjete poslovanja.