DevOps en Docker zijn twee termen die je steeds vaker tegenkomt. Hoewel de ene term vooral een werkwijze aanduidt en de ander een specifieke techniek, zijn ze in onze ogen onlosmakelijk met elkaar verbonden. Combineer ze met elkaar en je ontwikkelproces krijgt een flinke boost terwijl veel hedendaagse problemen als sneeuw voor de zon verdwijnen.

Wat is DevOps?

DevOps is een term die op vele manieren wordt uitgelegd. Wij zien DevOps als de nieuwe manier van werken die past bij moderne softwareontwikkeling. DevOps is een samensmelting van Development en Operations. In combinatie met nieuwe technische ontwikkelingen, waaronder de opkomst van Docker, wordt het mogelijk om Development en Operations als één afdeling te behandelen. De ontwikkelaar krijgt in veel grotere matere de mogelijkheid onderdeel te maken van het ontwikkelproces. Dat opent deuren: een hechte integratie tussen development en de IT-infastructuur maakt het mogelijk om sneller software uit te rollen, het proces van software ontwikkeling verder te automatiseren en efficiënter om te gaan met je (technische en financiele) resources. Het gaat niet om een samenvoeging van beide afdelingen, maar om een manier van werken waarbij de scheiden tussen beiden grotendeels vervaagt. Door een goede inrichting van de processen kan het moderne DevOps-team ook de thuishaven vormen voor QA en Security.

Bij een te grote scheiding tussen Dev en Ops onstaan vaak problemen. Veel gehoorde frustraties: "Operations weet vaak niet exact welke serverconfiguratie optimaal werkt met de de software van afdeling development, waardoor de performance van onze code te wensen overlaat" en "Wij moeten vaak lang wachten voordat operations een nieuwe server heeft opgeleverd waarop we onze software kunnen uitrollen" zijn twee opmerkingen die we vaak tegenkomen. De DevOps-werkwijze lost dit probleem op. De sleutel van dit succes is Docker.

Wat is Docker?

Docker lijkt de standaard te worden voor het uitrollen van applicaties. Met Docker creëer je in een handomdraai een minimale omgeving waarin je applicatie kan draaien. In enkele regels configuratie definieer je welke software je in je omgeving wilt hebben, welke instellingen van belang zijn en welke bestanden / applicatie je in de container wilt hebben. De eenvoud waarmee een Docker container opgezet kan worden door een software ontwikkelaar, heeft een grote invloed op het proces van softwareontwikkeling, serverbeheer en IT-infrastructuur.

Je Docker container bevat alleen datgene dat strict noodzakelijk is om je applicatie goed te laten functioneren. Dat maakt een container vele malen lichter dan een virtuele server, haalt veel serverbeheertaken weg en leidt ertoe dat de software ontwikkelaar volledige controle krijgt over de omgeving waarin zijn applicatie moet draaien. Docker is de daarmee de drijvende kracht achter DevOps.

DevOps: een praktijkvoorbeeld

Hoe maakt Docker de DevOps-werkwijze mogelijk? En waarom kan dat niet goed zonder Docker? In dit artikel laten we je zien hoe Docker bijdraagt aan een efficienter werkproces waarbij automatisering, het terugdringen van foutgevoeligheid en het beperken van downtime centraal staat. Dat doen we door de 'traditionele' situatie te vergelijken met de situatie waarbij je software in een Docker container draait.

Traditionele situatie

In de traditionele situatie, die nog steeds veel gebruikt wordt, worden server en applicatie als losse onderdelen gezien die los van elkaar onderhouden worden. Dat leidt tot de volgende stappen als je je applicatie op een nieuwe server wilt draaien:

  1. Server opzetten
  2. Configureren
  3. Applicatie builden en naar je server verplaatsen
  4. Testen of je applicatie volledig aansluit bij de serverconfiguratie
  5. Applicatie live zetten

Deze werkwijze is erg gangbaar en voelt nog altijd heel natuurlijk aan. Tegelijkertijd zorgt deze aanpak voor een hoge mate van foutgevoeligheid, is het tijdrovend en maakt het moeilijk om je applicatie snel naar een andere omgeving te migreren. Ook vereist het online zetten van een nieuwe versie van je applicatie de nodige zorg: blijft het nog functioneren met de huidige softwareversies op de server? wat als het niet goed gaat? Docker lost al deze vraagstukken op.

DevOps & Docker

Docker vormt in onze ogen een belangrijk fundament van de DevOps-filosofie, waarbij Development en Operations steeds meer verweven raken. Vergeet het denken in termen van servers, het periodiek uitbrengen van een nieuwe release van je applicatie en de beheren van je server. Met DevOps en containers, heb je alleen omkijken naar de zaken die direct raken aan het functioneren van je applicatie. De drie stappen om aan de slag te gaan met containers:

  1. Plaats een Dockerfile in je code repository.
  2. Kies waar je je applicatie wilt draaien.
  3. Deploy!

Automatisering is het uitgangspunt van Docker. Door vooraf vast te leggen hoe je omgeving eruit moet zien, kan je keer op keer een identieke omgeving opstarten. Dat brengt Continuous Integration / Continuous Deployment binnen handbereik. Als je de basis hebt staan, is CI/CD eenvoudig te implementeren. Automatisering kan natuurlijk ook met een reguliere (virtuele) server in combinatie met automation tools als Ansible, Chef of Puppet, maar dat zijn doorgaans zaken waarvoor je alsnog een afdeling Operations inschakelt. Docker zowel noodzaak voor een volledige server als de noodzaak tot geavanceerde automation configuratie weg. Dat scheelt je veel tijd, geld en frustratie. Tegelijkertijd zorgt het voor een snellere ontwikkeltijd en een efficiëntere werkwijze.

Aan de slag met Docker en DevOps?

Wij zijn ervan overtuigd dat Docker en DevOps heel veel processen kunnen verbeteren. Wij zijn gespecialiseerd in DevOps, Docker en Kubernetes en denken graag met je mee! Daarnaast bieden we diverse hulpmiddelen om snel in kaart te krijgen hoe eenvoudig jij aan de slag kunt met DevOps, Docker of CI/CD: