Webdevelopment is de afgelopen jaren enorm veranderd. Werkten ontwikkelaars eerst nog in een lokale omgeving, zien we nu het gebruik van containers snel toenemen. Dit heeft niet alleen voordelen voor de ontwikkelaar zelf, maar maakt het ook makkelijker om controle te houden over het proces, tot en met de productieomgeving. In dit artikel vertellen we je meer over containers en hoe je een lokale developmentomgeving beheert met Docker.
Van lokaal naar virtueel naar containers
Ging je als ontwikkelaar een paar jaar geleden met webdevelopment aan de slag? Dan was het een kwestie van het installeren van je eigen webserver en je kon aan het werk. Heel laagdrempelig, maar het zorgde ook voor de nodige problemen.
Zo ontstonden er vaak versieverschillen, omdat verschillende ontwikkelaars in hun eigen kopie van de code aan het werk waren en deze niet goed werden samengevoegd. Ook gebeurde het regelmatig dat ontwikkelaars verschillende besturingssystemen gebruikten, waardoor samenwerken erg lastig was.
Met de opkomst van virtuele servers werd dit probleem al voor een groot deel opgelost. Elke ontwikkelaar die aan jouw code werkt, gebruikt dan dezelfde server image, waarmee ze op dezelfde virtuele server samenwerken. Versieverschillen komen hierdoor bijna niet meer voor. Met tools als Vagrant en Docker is het voor ontwikkelaars heel eenvoudig om de virtuele server precies hetzelfde in te stellen. Voor het inladen van webserverconfiguraties en productieservers gebruiken we Puppet. Met deze 3 tools zorg je voor eenheid in de serverconfiguraties die je ontwikkelaars gebruiken, zodat versieverschillen en problemen door verschillende besturingssystemen voorkomt.
De laatste trend in developmentland is het gebruik van containers. Stel dat je een applicatie laat ontwikkelen. Deze app wordt dan opgedeeld in services, en elke service krijgt een eigen container. Bijvoorbeeld een container voor de database, eentje voor sessiebeheer en een voor mail. Dit is weer anders dan op een virtuele server, want daar worden meerdere services op geïnstalleerd.
Containers geven flexibiliteit
Omdat elke service zijn eigen container heeft, bestaat een gemiddelde webapplicatie al snel uit zo’n 10 containers. Het grote voordeel hiervan is de flexibiliteit, want je kunt de applicatie hierdoor per service horizontaal schalen. Dat is ideaal als er bijvoorbeeld door een marketingcampagne sprake is van een piekbelasting. Op dat moment wil je bijvoorbeeld de service ‘sessiebeheer’ opschalen, omdat je veel meer bezoekers op je website verwacht.
Containers zijn een uitdaging
Wie gaat ontwikkelen met containers, moet zich ervan bewust zijn dat je met de lokale ontwikkelomgeving al min of meer bepaald hoe de rest van de applicatiearchitectuur eruit gaat zien. Ontwikkelaars moeten dus goed nadenken over die architectuur, ze worden gedwongen om in losse services te denken en blijven denken. De services die bedacht worden voor de ontwikkelfase, moeten ook nog werken in de productiefase.
Het voordeel hiervan is dan weer wel dat het beheer van de applicatie uiteindelijk makkelijker uit te breiden is, omdat het om veel onafhankelijke onderdelen gaat.
Docker voor het beheer van containers
Met Docker kun je images bouwen van de services die je nodig hebt. Zo werken alle ontwikkelaars met dezelfde containers. De images kunnen vanuit Docker, door middel van continuous integration, automatisch getest en gedeployed worden naar een acceptatie- en productieomgeving. Het beheer is hierdoor een heel stuk eenvoudiger geworden, want de ontwikkelaar bepaalt welke versie van bijvoorbeeld de web- en databaseserver gebruikt worden.
Omdat het aantal containers zo snel kan groeien, is de kans groot dat je infrastructuur onoverzichtelijk wordt. Dat probleem los je op door je containers te managen, bijvoorbeeld met Docker Swarm of Kubernetes. Bij Seleno hebben we gekozen voor Kubernetes, daar vertellen we je in een volgende blog meer over.
Zijn containers iets voor jou?
Het is niet voor niets dat containers steeds meer gebruikt worden. Ben je benieuwd welke voordelen het ontwikkelen in containers voor jou kunnen hebben?
Neem dan even contact met ons op, we vertellen je er graag meer over!