Hoe waarom en wanneer van databases in containers

Door: Martijn Wallet 21-7-2020

Categorieën
:
Beheer, BLOG, Cloud, DBMS, Review,

In deze blog bespreekt Martijn Wallet, onze Manager Consultancy en Training, wat containerization is, wat de voor- en nadelen zijn en wat je eraan hebt en wanneer je er beter bij weg kunt blijven. Databases in containers, hoe, waarom en waneer?

Hoe dan?

Een container is een logisch verpakkingsmechanisme, waarmee applicaties kunnen worden gescheiden van de omgeving waarin ze worden uitgevoerd. Alle code, configuraties en afhankelijkheden zijn verpakt als eenheid, zodat de applicatie snel en betrouwbaar kan draaien, zonder afhankelijkheid van de omgeving, of dat nu on-premise is, public of private cloud, of zelfs bare-metal. Doordat je meerdere containers direct op het besturingssysteem kunt uitvoeren, is de opzet een stuk eenvoudiger dan die van een virtuele machine. Dankzij container-orchestrationplatformen, zoals Kubernetes, worden automatisch clusters met containers gelanceerd en wordt hun lifecycle beheerd. Daardoor is het een stuk eenvoudiger om containers grootschalig uit te rollen. Zonder dergelijke platformen had containerization niet zo’n vlucht genomen.

Aandrijvende factoren voor containerization

Al sinds 1960 zien we een beweging naar virtualisatie en abstractie, denk bijvoorbeeld aan COBOL en Java Application Servers maar ook aan de opkomst van virtuele machines. Inmiddels zien we meer en meer born-in-the-cloud apps, serverless microservices die uitgerold worden binnen een serverless architectuur en is cloud-native technology helemaal hot. De abstractie van apps van besturingssysteem en infrastructuur brengt ongekende agility en flexibiliteit. Bovendien lanceren containers veel sneller dan virtuele machines en zijn ze beter schaalbaar. En dan hebben we het nog niet gehad over de kostenbesparing in de application lifecycle en de veel lagere hypervisorlicentiekosten. Containerplatformen zijn standaard opensourceplatformen, wat bij VM-platformen lang niet altijd het geval is. Vanuit het oogpunt van de developer en de DBA is een groot voordeel dat containers in zowel de ontwikkelomgeving als in productie exact hetzelfde draaien.

Uitdagingen

Het werken met databasecontainers kent ook wat uitdagingen. Databases vereisen veel bandbreedte en een lage latency, standaard biedt Docker – het raamwerk waarmee je een applicatie in een container kunt verpakken – dit niet. Grote hoeveelheden diskruimte maken databasecontainers minder agile en lastiger verplaatsbaar. Databases zijn standard stateful en durable, containers zijn stateless en ephemeral en tenslotte hebben databases veel – dynamische – configuratieparameters. Dit laatste is overigens ook een uitdaging met virtuele machines. Configuration drift is een veelvoorkomend probleem op virtuele machines.

Kenmerken

Containerized databases worden door een aantal zaken gekenmerkt. Zo zijn het vooral kleine databases die passen bij een microservices architectuur. In combinatie met een orchestrationplatform zijn ze gelijkwaardig aan bestaande clusteringoplossingen voor databases. Hun elasticiteit biedt meer flexibiliteit dan kostbare capaciteitsplanning vooraf. Door de scheiding van opslag en processen, heb je te maken met onafhankelijke storage-performance en -capaciteit. Software-defined containerized databases zijn op dit moment nog vaak de missing link voor snelle DevOps cycles. Wanneer containerized databases voldoende omarmd worden zal er een naadloze samenwerking tussen development en operations ontstaan.

Virtualisatie versus containerization

Wat heb je aan containerization?

Containerization ondersteunt microservices en CI/CD pipelines met meerdere instanties, zoals Dev, Test en Prod. Het maximaliseert veiligheid en maakt automatische schaalbaarheid mogelijk. Containers zijn de (multi-) cloud. Het maakt het eenvoudiger om softwareupates te stroomlijnen en om virtualisatie uit te schakelen (VMWare, KVM, RHEV, et cetera). Dankzij containerization kunnen we databases als vervangbaar behandelen en de impact van downtime minimaliseren.

Wanneer kost het moeite om te kiezen voor containerization?

Er zijn zowel technische als menselijke redenen waardoor het lastig kan zijn te kiezen voor containerization. Heb je te maken met monolithische applicaties of support van legacyapplicaties, daar leent containerization zich minder goed voor. Door containerization zullen er grotere aantallen database instances opduiken die je afschrikken vanwege een hoger aantal outages. Een traditionelere mindset en de comfortzone kunnen menselijke obstakels vormen om te kiezen voor containerization.

Meer weten?

Meer weten over containerization in het algemeen? Of zit je in een besluitvormingsfase waarbij je graag eens een onafhankelijke invalshoek wilt aanhoren? Neem gerust vrijblijvend contact op, we denken graag mee. Wij hebben verscheidende database omgevingen (waar onder PostgreSQL) in Kubernetes, Docker etc mogen ontwerpen, implementeren en op dit moment in beheer. Kijk voor je beeldvorming eens bij onze projecten.

Route naar effectief databasebeheer?

Wij leven in een wereld die meer en meer door data gedreven is. Goed beheer van je dataplatform (in de cloud) wordt dan ook steeds crucialer. Een goede database-expert weet precies hoe de nieuwste tooling werkt, voelt zich als een vis in het water bij zowel opensource- als gelicenceerde databaseomgevingen en vindt het oplossen van complexe databasepuzzels een feest. Maar wat is nu de route naar effectief databasebeheer? Om een aantal handvatten aan te reiken hebben we daar een whitepaper over geschreven. Download hier onze whitepaper.

Andere blogs over dit onderwerp:

How to run Postgres on Docker

SQL Server draaien in Docker

Terug naar blogoverzicht