Flux 7 introduceert 8 veelgebruikte Docker-gebruiksscenario's, namelijk vereenvoudigde configuratie, code-pipelinebeheer, verbeterde ontwikkelefficiëntie, geïsoleerde applicaties, geconsolideerde servers, debuggemogelijkheden, multi-tenant omgevingen en snelle ontwikkeling. We hebben het gehad over Docker, hoe je het gebruikt en op welke momenten? Misschien kan dit artikel je helpen. Als er iets te communiceren valt, kun je dat via opmerkingen met ons doen.
Een paar weken geleden woonden we DockerCon bij, de eerste Docker-gerichte techconferentie. Het is gericht op ontwikkelaars en professionals die geïnteresseerd zijn in het bouwen, leveren en draaien van gedistribueerde applicaties op het Docker open platform, of het nu draait op hun eigen notebooks of virtuele machines in het datacenter. We woonden de conferentie bij, en Flux7 is een systeemintegratiepartner voor Docker Foundations en gastspreker.
Onze CEO, Aater Suleman, sprak met een van onze klanten. Hoewel DockerCon erg leuk was, vond ik dat de conferentie te veel focuste op de details van Docker en de gebruikssituaties van Docker verwaarloosde. In dit artikel wil ik enkele praktische gebruikssituaties van Docker introduceren en delen.
Voordat we de gebruiksscenario's van Docker bespreken, laten we eens kijken wat Docker zo bijzonder maakt.
Docker biedt lichte virtualisatie met vrijwel geen extra overhead, wat best gaaf is.
Ten eerste hoef je je geen zorgen te maken over de extra overhead van Docker terwijl je geniet van de virtualisatiekracht die het biedt. Ten tweede kun je een groter aantal containers op dezelfde machine maken dan op een virtuele machine.
Een ander voordeel van Docker is dat containers binnen enkele seconden kunnen worden gestart en gestopt. Solomon Hykes, oprichter van Docker, sprak ooit over wat Docker heeft gedaan bovenop alleen LXC, en je kunt het bekijken.
Hier zijn enkele van mijn Docker-gebruiksscenario's, waarin ik je laat zien hoe je de voordelen van Docker kunt benutten om een consistente omgeving met weinig overhead te creëren.
1. Vereenvoudigde configuratie
Dit is het belangrijkste gebruiksscenario voor Docker dat door Docker Company wordt geadverteerd. Het grootste voordeel van virtuele machines is de mogelijkheid om verschillende platforms (software, systemen) op je hardwarefaciliteiten te draaien, en Docker biedt dezelfde functionaliteit met minder extra overhead. Het stelt je in staat om de runtime en configuratie in code te zetten en vervolgens te deployen, en de configuratie van dezelfde Docker kan in verschillende omgevingen worden gebruikt, wat de koppeling tussen hardware-eisen en applicatieomgevingen vermindert.
2. Code-pijplijnbeheer
Het vorige scenario helpt enorm bij het beheren van de code-pijplijn. Code gaat door veel intermediaire omgevingen, van de machine van de ontwikkelaar tot de uiteindelijke implementatie in de productieomgeving. Elke tussenliggende omgeving heeft zijn eigen kleine verschillen, en Docker biedt een omgeving die consistent is van ontwikkeling tot lancering, waardoor de codepipeline veel eenvoudiger wordt.
3. Verbeter de ontwikkelingsefficiëntie
Dit brengt enkele extra voordelen met zich mee: Docker maakt ontwikkelaars productiever. Als je een gedetailleerder voorbeeld wilt zien, kun je verwijzen naar Aaters presentatie op DevOpsDays Austin 2014 of DockerCon.
In verschillende ontwikkelomgevingen willen we allemaal twee dingen goed doen. Ten eerste willen we de ontwikkelomgeving zo dicht mogelijk bij de productieomgeving brengen, en ten tweede willen we snel de ontwikkelomgeving opbouwen.
Idealiter moeten we, om het eerste doel te bereiken, elke service in een aparte virtuele machine draaien om de gezondheid van de service in productie te monitoren. We willen echter niet elke keer een netwerkverbinding nodig hebben, en het is vooral lastig om elke keer dat we opnieuw compileren op afstand verbinding te maken. Dit is wat Docker bijzonder goed doet: de machines in de ontwikkelomgeving hebben meestal relatief weinig geheugen, en bij virtueel gebruik moeten we vaak geheugen toevoegen aan de machines in de ontwikkelomgeving, maar nu kan Docker gemakkelijk tientallen services laten draaien in Docker.
4. Isoleer applicaties
Er zijn veel redenen waarom je ervoor kunt kiezen om verschillende applicaties op één machine te draaien, zoals de eerder genoemde scenario's om de ontwikkelefficiëntie te verbeteren.
We moeten vaak serverconsolidatie overwegen om kosten te verlagen, en het opsplitsen van een monolithische applicatie in één losjes gekoppelde dienst. Als je wilt begrijpen waarom losjes gekoppelde apps zo belangrijk zijn, bekijk dan dit artikel van Steve Yege dat Google en Amazon vergelijkt.
5. Servers consolideren
Net zoals meerdere applicaties via virtuele machines worden geïntegreerd, maakt Docker door zijn vermogen om applicaties te isoleren het mogelijk om meerdere servers te consolideren om kosten te besparen. Omdat er geen geheugenverlies is van meerdere besturingssystemen en ongebruikt geheugen over meerdere instanties kan worden gedeeld, kan Docker een betere oplossing voor serverconsolidatie bieden dan virtuele machines.
6. Debugging-vermogen
Docker biedt veel tools die niet per se alleen voor containers zijn, maar ook voor containers. Ze bieden veel functionaliteit, waaronder de mogelijkheid om checkpoints voor containers in te stellen, versies in te stellen en de verschillen tussen twee containers te zien, wat kan helpen bugs te debuggen. Je kunt een voorbeeld hiervan vinden in het artikel Docker Save the World.
7. Multi-tenant omgeving
Een andere interessante use case voor Docker is in multi-tenant applicaties, waardoor het herschrijven van kritieke applicaties kan voorkomen. Een specifiek voorbeeld van dit scenario is de ontwikkeling van een snelle, gebruiksvriendelijke multitenant-omgeving voor IoT-toepassingen. Deze multi-tenancy basiscode is complex en moeilijk te hanteren, en het herplannen van zo'n aanvraag is tijd- en geldverspilling.
Met Docker is het eenvoudig en goedkoop om geïsoleerde omgevingen te creëren voor meerdere instanties van elke applicatielaag van de tenant, dankzij de snelheid van Docker-omgevingen en hun efficiënte diff-commando's.
Je kunt hier meer over dit scenario leren.
8. Snel uitzenden
Voor virtuele machines duurt het enkele dagen om nieuwe hardwarebronnen te introduceren. De virtualisatietechnologie van Docker verkortt deze tijd tot minuten, en Docker maakt simpelweg een containerproces aan zonder het besturingssysteem te starten, wat slechts enkele seconden duurt. Dit is precies wat zowel Google als Facebook waarderen.
Je kunt een vernietigingsbron in je datacenter creëren zonder je zorgen te maken over de overhead van een herstart. Doorgaans hebben datacenters slechts 30% resourcebenutting, en kan het gebruik van middelen worden verbeterd door Docker en efficiënte resourceallocatie. |