Containerisatie: Dockerize alles, ook op lokale omgevingen

In software ontwikkeling en vooral bij DevOps georiënteerde organisaties, is Docker bekend en wordt veel gebruikt door tech bedrijven. Maar zelfs voor non-technische bedrijven kan het nuttig zijn om containerisatie te gebruiken.

In deze blog

In software ontwikkeling en vooral bij DevOps georiënteerde organisaties, is Docker bekend en wordt veel gebruikt door tech bedrijven. Maar zelfs voor non-technische bedrijven kan het nuttig zijn om containerisatie te gebruiken in hun architectuur. Hoewel er veel containerisatie tools zijn, is Docker de meest populaire en wordt het vaak in 1 adem met containerisatie genoemd. Daarnaast is er ook Kubernetes, wat ook een populaire naam is in dit ecosysteem, maar het is niet hetzelfde als Docker. Beide kunnen en worden samen gebruikt, maar er zijn grote verschillen in wat ze proberen te bereiken met hun verschillende producten.

Containerisatie is een natuurlijke volgende stap in de software-ontwikkeling industrie. Als je wilt weten wat het verschil is tussen containerisatie en virtualisatie, kun je dit artikel lezen.

Hoe is dit nuttig voor jouw organisatie?

In veel organisaties is er een mix van commerciële off-the-shelf software en op maat gemaakte applicaties. Hoewel er ook voordelen zijn voor de eerste categorie, zijn er veel meer in de tweede. Vaak, wanneer een onderaannemer applicaties bouwt voor jouw landschap, zijn dezelfde software componenten steeds opnieuw nodig. Je hebt een frontend, backend, database, netwerken, opslag en toegang tot lokale bronnen nodig. Waarschijnlijk draait het op meerdere omgevingen met verschillende versies. En dit is waar veel repetitieve taken op u liggen te wachten:

  1. Servers of VM’s regelen
  2. OS installeren
  3. Software pakketten installeren
  4. Verbinden met andere componenten in uw netwerk
  5. Configuratie van alles
  6. Testen of alles werkt

In dit scenario kan het gunstig zijn om over te schakelen naar een container gebaseerde architectuur. Het eenmalig configureren van container images met voorgedefinieerde OS, software, dependencies en de juiste configuratie is veel sneller dan het handmatig opzetten van applicaties op uw machines. Natuurlijk kost het configureren van container images ook tijd, maar dit proces is efficiënter en het resultaat is herbruikbaar en ook specifiek daarvoor ontworpen: configuraties kopiëren en plakken is mogelijk en wijzigingen aanbrengen is ook eenvoudiger. Er is ook een heel actief ecosysteem, waarmee het voor ontwikkelaars eenvoudiger wordt in een DevOps-wereld.

Meer voordelen van containerisatie:

  1. Standaardiseer je software build- en distributieproces
  2. Zowel inzetbaar op public cloud als op eigen infrastructuur
  3. Maakt software-architectuur beter overdraagbaar
  4. Veel softwareleveranciers leveren hun software ook als pre-build images
  5. Past perfect in geautomatiseerde CI/CD-pipelines

Wanneer kun je alles containeriseren?

We hebben de voordelen uitgelegd, laten we nu de scenario’s doornemen waar dit mogelijk is.

  1. Web applicaties of software die op de achtergrond draait op vooral Linux gebaseerde machines. Hoewel er ondersteuning is voor Windows en Mac gebaseerde systemen, is er voor de Linux ecosystemen veel meer ondersteuning en de performance en schaalbaarheid is bewezen.
  2. Veel applicaties die samen met andere applicaties draaien, typisch een microservices landschap met veel afhankelijkheden. Het onderhouden van al deze afhankelijkheden in een landschap vol met applicaties kan complex zijn. Docker biedt een set ontwikkelaarstools, vooral in de bouwfase, waardoor het eenvoudiger wordt om container images te bouwen inclusief alles wat nodig is om een applicatie te draaien – de applicatiecode, binaries, scripts, dependencies, configuratie en omgevingsvariabelen.
  3. Vooral maatwerk webapplicaties die op verschillende omgevingen draaien, zoals lokaal, test, staging en acceptatie. Het distribueren van images was nog nooit zo eenvoudig, omdat er een duidelijk onderscheid is in vooraf gebouwde software en de noodzakelijke configuratie die erbij hoort. Kennisdeling tussen ontwikkelaars is eenvoudiger en je hoeft niet alles te weten van een machine, omdat het op een beschrijvende manier is gedocumenteerd. Dit versnelt de onboarding van nieuwe teamleden en hun adoptie van jouw landschap, zelfs voor ontwikkelaars die geen operations ervaring hebben.

Wanneer niet?

Natuurlijk kun je niet letterlijk alles containeriseren, er zijn altijd uitzonderingen en gevallen waarin je dit niet wilt doen:

  1. Desktop applicaties met een veelzijdige GUI vereisen veel meer performance resources.
  2. Niche en specialistische software, sommige software is gewoon moeilijk te containeriseren.
  3. Eenvoudige applicaties met minder of geen afhankelijkheden, vaak onderhouden door 1 persoon. In dit geval zal het overkill zijn en niet de overhead waard.

Hoe zit het met eMagiz?

In ons bedrijf wordt containerisatie al een tijdje gebruikt en onze nieuwe, volgende generatie runtime wordt uitgebracht op een container gebaseerde architectuur in onze eigen Cloud. Afgelopen kwartaal hebben we dit al voltooid voor onze eigen API Gateway. Onze volgende stap is om andere modules van het platform ook op deze nieuwe architectuur uit te brengen. Dit is ons hoofddoel voor dit jaar. Onderdeel van deze ontwikkeling is ook het ondersteunen van on-premises en lokale container deployments voor eMagiz componenten die buiten onze eigen cloud draaien. Het resultaat waar we op mikken is: vooraf gebouwde container images met eMagiz software (gateways, connectors etc.) met jouw context & model configuratie. Beschikbaar als download in ons portaal en klaar om door jou op jouw eigen locatie te worden geïnstalleerd.

Volgende keer zal ik wat meer vertellen over zowel dit onderwerp als over andere relevante onderwerpen. Laat me weten wat je ervan vindt of deel jouw ervaringen met mij via LinkedIn. Bedankt voor het lezen!

Door Samet Kaya, Software Delivery Manager @ eMagiz

Twitter
LinkedIn
WhatsApp
Email
nl_NL_formal