Naarmate organisaties verder naar de cloud migreren, neemt ook het datavolume toe. Als gevolg daarvan is de database as a service (Daas)-markt aan een grote opmars bezig. Ook het aantal gebruikte databases groeit enorm doordat software voor flexibel schaalbare online services wordt gebaseerd op microservices. Dit zou onmogelijk zijn op basis van traditionele database-infrasturen. Maar wat staat er nog meer op de cloud-ready enterprise checklist?
Het kloppende hart van elke it-infrastructuur is de database. Hierin worden traditiegetrouw alle kritische bedrijfsdata opgeslagen, maar door de opkomst van big data willen we daarnaast ook steeds meer ongestructureerde data verzamelen. De hoop is om hier allerlei nuttige inzichten uit te destilleren die de business verder kunnen helpen en innovatie bevorderen.
Voor dit soort toepassingen zijn cloud-databases uitermate geschikt, omdat ze on-demand beschikbaar zijn en snel kunnen op- of afschalen. Een goede cloud-ready database moet echter wel aan een aantal belangrijke eisen voldoen, om een organisatie echt future-proof te maken.
Bewezen en robuuste database-features
Op zoek naar een geschikte cloud-database, is het logisch dat men dezelfde features verwacht als gevestigde traditionele database-oplossingen als Oracle, DB2 en SQL Server bieden. Inmiddels winnen open source-databases sterk aan populariteit, omdat ze ten eerste goedkoper zijn, en ten tweede qua mogelijkheden praktisch op hetzelfde niveau zijn gekomen als hun traditionele voorgangers.
De combinatie van cloud en open source lijkt een ideale combinatie, waarmee op een uiterst schaalbare en betaalbare manier full-featured databases ingezet kunnen worden, zonder investeringen te hoeven doen in hardware, softwarelicenties en applicatiebeheer.
Geautomatiseerde provisioning en beheer
Om database-beheerders efficiënter te laten werken is het geautomatiseerd kunnen uitrollen van databases op basis van templates van groot belang. Dit is inmiddels een vertrouwd concept, dat goed wordt ondersteund in cloud-omgevingen. Toch komen er bij het gebruik van databases nog diverse andere en meer complexe zaken om de hoek kijken.
Een daarvan is load balancing. Door nieuwe databases aan een omgeving toe te voegen, neemt de systeembelasting toe. Een ingebouwde vorm van load balancing moet daarom aanwezig zijn om te helpen de systeemprestaties op peil te houden, in het bijzonder op momenten dat er veel drukke query-activiteit is.
High availability en redundancy
Downtime kan een enorme impact hebben op een organisatie. Een goede cloud-database moet daarom zowel een hoge uptime bieden, evenals redundancy voor het geval een machine of bepaalde zone/regio in de infrastructuur van de cloud-provider uitvalt. Hiermee wordt gegarandeerd dat er weinig tot geen verstoring van de business kan optreden voor de applicaties die van de database gebruik maken. Onderdeel van high availability zijn snelle en efficiënte fail-over mogelijkheden, die automatisch worden uitgevoerd en gemakkelijk en over verschillende locaties uitgerold kunnen worden.
Hoge prestaties
Een onderzoek van Microsoft toonde ooit aan dat de inkomsten per gebruiker gemiddeld met 1,2 procent dalen als de reactiesnelheid van de website met vijfhonderd milliseconden toeneemt. Bij grote online retailers als Amazon lopen de gemiste inkomsten letterlijk in de miljoenen als de website even iets minder presteert. In onze always on 24/7 online economie is een concurrent immers altijd maar enkele klikken van de consument verwijderd.
De grote bottleneck bij online diensten is vrijwel altijd de database. Als deze de webapplicatie niet snel genoeg van informatie kan voorzien, stokt de service. Een goede cloud-database moet daarom zowel sterke lees- als schrijf-performance bieden. Bovendien moet het aantal nodes flexibel opgeschaald kunnen worden als onderliggende dataverkeer vraagt om snellere responstijden.
Transparant en elastisch schaalbaar
Transparantie ten aanzien van databases in de cloud verwijst naar de mogelijkheid om de installatie van een cloud-database aan te kunnen passen zonder onderbrekingen of verstoringen en zonder gevolgen voor de applicaties die de data gebruiken. Die kunnen immers nadelig zijn voor gebruikers. Zeker bij organisaties die een (onverwacht) snelle groei doormaken, is dit van uiterst groot belang. Met een paar uur downtime voor een aanpassing of uitbreiding van de database, kunnen gemakkelijk talloze potentiële klanten bot vangen en op zoek gaan naar een alternatief. Ook het opsplitsen van databases ter ondersteuning van microservices dragen bij aan het creëren van een uiterst robuust geheel zonder risicovolle single points of faillure.
Sterke beveiliging
Gezien de diversiteit aan grote cyberinbraken die regelmatig in de media voorbij komt, staat beveiliging steeds hoger op de agenda. Het goud is meestal te vinden in databases, en daarom is de beveiliging ervan van cruciaal belang, zeker als het een cloud-variant betreft. Versleutelde opslag is daarom vereist, zowel voor de opgeslagen data, als voor de data terwijl deze wordt verstuurd. Autorisaties, systeemrechten en objecttoegang zijn allemaal nodig om het veilig gebruiken en opslaan van data te garanderen.
Aanvullend daarop moeten er ingebouwde auditing-functies zijn, waarmee beheerders altijd kunnen terugzien ‘wie keek wanneer naar welke data?’ en wie heeft ‘wat op welk moment gewijzigd?’. SQL-injection is bovendien ook een grote bedreiging voor databases aan de applicatiekant, waardoor een firewall extra bescherming moet bieden om dit soort aanvalspogingen op cloud-databases op tijd te kunnen detecteren en blokkeren.
Multi-tenancy, public en private cloud
Zowel voor het beschermen van kritische bedrijfsdata, het garanderen van uptime als het beheersen van kosten is het flexibel ondersteunen van zowel private als public cloud-omgevingen essentieel. Databases kunnen daardoor zowel in een eigen datacenter als ergens in de publieke cloud draaien, afhankelijk van de data die erin is opgeslagen. Bovendien is het niet handig om het beheer aan de cloud-provider over te laten, zeker als deze geen database-expert is. Het is raadzaam dat de database-leverancier zelf de kritische database-features levert voor cloud-omgevingen voor de consistentie en vanwege hun specifieke productkennis.
Lage kosten
Ten slotte is er natuurlijk nog het kostenplaatje. Daarover valt te zeggen dat niet elke database goedkoper is als hij in een cloud-model wordt geleverd, in tegenstelling tot een on-premises installatie. Zeker bij traditionele leveranciers van relationele databases is dit vaak het geval. Open source databases als PostgreSQL en MongoDB worden echter ook in een cloud-model geleverd en dan zonder complexe licentiestructuren. Dit resulteert in aanzienlijk lagere en veel transparantere kosten. Open source databases en de cloud zijn daarom wat mij betreft het model voor de toekomst.
Aardig artikel waarbij ik me afvraag of dat niet ook voor een Database als webapplicatie geldt.
Lees ik dit: “SQL-injection is bovendien ook een grote bedreiging voor databases aan de applicatiekant,” dan mag ik opmerken dat SQL-injekties alleen mogelijk zijn als er slordig geprogrammeerd wordt in de applikatie. Met alle meldingen van de laatste jaren, moet iedere webprogrammeur dat inmiddels toch door hebben.
Dag Jeannot,
Leuk artikel waar ik me goed in kan vinden, daarbij wil ik wel een belangrijke aanvulling doen en die gaat over dezelfde zin waar Jan over valt; “SQL-injection is bovendien ook een grote bedreiging voor databases aan de applicatiekant, ”
In mijn ogen zal een cloud ready systeem nooit gevoelig zijn voor SQL Injection omdat mijn ervaring is dat je *nooit* vanuit de applicatie direct de database aanspreekt. Direct database aanspreken (bijvoorbeeld vanuit een browser web applicatie) is namelijk een sterke indicator van een *non* cloud ready systeem. Praten met de database doe je met webservices (SOAP / REST of whatever), want direct met de database praten betekent dat je systeem logica wel heel dicht op de presentatie laag zit waardoor je bijvoorbeeld niet makkelijk kunt ontsluiten daar een mobiel device (of alleen via diens browser).
Maar net zo belangrijk: Performance kun je nauwelijks sturen, juist door de webservices schaalbaar te maken is het schaalbaar maken van het systeem in zijn geheel eenvoudiger geworden.
Daarnaast zou een applicatie zich helemaal niet bewust moeten zijn van een (relationele) database. Tegenwoordig is ieder beetje systeem breder dan een relationele database alleen. Denk aan log *files* en NoSQL.
Niettemin kan ik me goed vinden in wat je schrijft en vind ik het een waardevol artikel, blijft er nog een kleine wens over: Heb je een link naar een cloud checklist?
Bedankt voor jullie reacties. Mijn bedoeling was onder andere ook om hiermee de aandacht te vestigen op het feit dat niet alle cloud-applicaties daadwerkelijk cloud-ready zijn.
Als je meer achtergrond wilt hierover, zou je de volgende whitepaper eens kunnen bekijken;
http://www.enterprisedb.com/cloud-ready-enterprise-database-checklist