Een container is een gestandaardiseerd pakket dat een applicatie samen met alle libraries, instellingen en dependencies bevat die hij nodig heeft om te draaien. Omdat alles in één bundel meegaat, gedraagt de software zich hetzelfde op de laptop van een developer, op een testserver en in productie.
Zie het als een zeecontainer in een haven. Of er nu schoenen of elektronica in zitten maakt niet uit, elke kraan, elk schip en elke vrachtwagen weet ermee om te gaan omdat de buitenkant standaard is. Softwarecontainers lossen hetzelfde probleem op. De klassieke klacht van developers, “maar bij mij werkt het wel,” verdwijnt omdat de container zijn eigen omgeving meedraagt. De host draait gewoon de doos en hoeft niet te matchen met wat erin zit.
Dit is de kern van containerisatie, en de tool waar de meeste mensen mee beginnen is Docker. Zodra je meer dan een handvol containers over meerdere servers draait, pak je meestal Kubernetes erbij om ze automatisch in te plannen, op te schalen en te herstarten. Containers zijn lichter dan volledige virtuele machines omdat ze het besturingssysteem van de host delen in plaats van elk hun eigen mee te dragen.
Die lichtheid verandert hoe je software draait. Omdat een container in een seconde of twee start in plaats van een minuut, kun je tien kopieën van een app opstarten als het verkeer stijgt en ze weer afsluiten als het zakt, en betaal je alleen voor wat je gebruikt. Het houdt diensten ook uit elkaar: een database en een webapp kunnen in losse containers op dezelfde machine draaien zonder dat hun dependencies botsen.
Bij TopDevs leveren we de meeste klantapplicaties in containers, zodat deployments voorspelbaar zijn en precies dezelfde build die door onze tests komt ook in productie draait.