Einfluss von DevOps auf das Datenbankmanagement · Unser Oracle Multitenant Footprint 8 Hardware 2x...
Transcript of Einfluss von DevOps auf das Datenbankmanagement · Unser Oracle Multitenant Footprint 8 Hardware 2x...
Einfluss von DevOps auf das
Datenbankmanagement
Alain Fuhrer, Head IT Database Services
ANALYTICS ON OLTP DATAREPORTS AUF OLTP DATEN
Koordinaten
▪ Alain Fuhrer
▪ Head IT Database Services@Die Mobiliar
2
https://twitter.com/AlainFuhrer
https://www.linkedin.com/in/alain-fuhrer-718883b5
https://mobiliar.ch/db-blog
3
4
19.11.2019 5
6
19.11.2019 7
Open Source
Unser Oracle Multitenant Footprint
8
Hardware
2x Exadata X8-2 (3 DB Nodes)
14 – 16 CPU / Node
Databases
ca. 2000 PDB’s verteilt auf ca. 60 CDB's▪ Oracle Audit▪ Refreshable PDB
▪ PDB Lockdown Profile▪ Data Guard
Features
▪ PDB Relocate
Typische DB Bestellung früher…
19.11.2019 9
Developer Montag 09:15
Guten Morgen lieber DBA. Ich bin dabei einen neuen Service
zu entwickeln und benötige dafür eine DB. Kannst du mir bitte
eine erstellen? DBA Montag 14:35
Guten Morgen lieber Entwickler. Wenn du mir paar Details wie
DB System, DB Name, User, benötigte Rechte und
Tablespaces mitteilst, werde ich das gerne für dich erledigenDeveloper Dienstag 08:00
Bitte entschuldige ich dachte die Angaben reichen. Ich denke
Oracle und als Name bitte "mein_neuer_service_1"
Danke! DBA Dienstag 16:50
Ich habe dir eine Oracle Datenbank mit dem Namen "newsrv1"
(Nur 8 Zeichen möglich) erstellt.
PS: Du kannst sie aber immer noch nicht verwenden, da die
Angaben über den User / Rechte immer noch fehlenDeveloper Mittwoch 08:23
Hallo DBA. Bitte den User "app_newsrv1" erstellen. Betreffend
den Rechten bin ich noch unsicher, deswegen bitte alles
Developer Mittwoch 15:45
Perfekt Danke!
Passwort?
DBA Mittwoch 15:10
OK, der User wurde erstellt. Alle Rechte kriegst du sicher nicht,
aber ich habe dem User die Standard Applikationsrolle der
Mobiliar zugeteilt. Das sollte reichen und sonst melde dich.
DBA Mittwoch 15:56
Ah sorry vergessen, teile ich dir per Telefon mit.
Rufe dich gleich an
3 Tage!
19.11.2019 10
“Ich will, dass die Mobiliar 2020
fähig ist jeden Tag neue Services in
Produktion zu deployen”
11
Rolf Trueb CIO Swiss Mobiliar Insurance
2016
12
Step 1
Von klassischenProjekten zu
agilen Methoden
19.11.2019 13
Problem mit klassischen Softwareprojekten
SAFe Framework wurde in der Ganzen Firma eingeführt
3 Monate 3 Monate
Datenbank Team plant in Sprints und mit Stories
19.11.2019Titre de la présentation 15
▪ Team definiert am PI Planning, welche Arbeitspakete in den nächsten 3 Monaten erledigt werden
▪ Die Pakete werden in Stories aufgeteilt und gemeinsam auf die einzelnen Sprints des PI verteilt
▪ Es finden regelmässige Meetings statt, in welchen über den Fortschritt der einzelnen Stories berichtet
und über allfällige Probleme diskutiert wird
16
Step 2
Von monolithischenApplikationen
zu µServices
19.11.2019 17
Monolithisch vs. Microservice
Transformation von monolytisch zu µServices
t
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
Typische Evolution
18
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µService
µServices (microServices)
20
Step 3
Das DB Management
muss sichmassiv ändern
Anforderungen an das Datenbank Team
21
Wir müssen der Entwicklung "managed Services" anbieten
• Wir haben immer mehr µServices welche immer schneller DB's benötigen
• Oracle Multitenant hilft uns diese Challenge zu bewältigen
Automatisierung: Wir müssen ein automatisches DB deployment
implementieren (DBaaS)
• Datenbanken müssen innert Minuten verfügbar sein
• Datenbanken können für Monate, Tage, Stunden oder Minuten benötigt werden
• 1:1 Mapping zwischen Datenbank und µservice
• Die Datenbanken müssen komplett ohne DBA erstellt werden!
Typische DB Bestellung früher…
19.11.2019 22
Developer Montag 09:15
Guten Morgen lieber DBA. Ich bin dabei einen neuen Service
zu entwickeln und benötige dafür eine DB. Kannst du mir bitte
eine erstellen? DBA Montag 14:35
Guten Morgen lieber Entwickler. Wenn du mir paar Details wie
DB System, DB Name, User, benötigte Rechte und
Tablespaces mitteilst, werde ich das gerne für dich erledigenDeveloper Dienstag 08:00
Bitte entschuldige ich dachte die Angaben reichen. Ich denke
Oracle und als Name bitte "mein_neuer_service_1"
Danke! DBA Dienstag 16:50
Ich habe dir eine Oracle Datenbank mit dem Namen "newsrv1"
(Nur 8 Zeichen möglich) erstellt.
PS: Du kannst sie aber immer noch nicht verwenden, da die
Angaben über den User / Rechte immer noch fehlenDeveloper Mittwoch 08:23
Hallo DBA. Bitte den User "app_newsrv1" erstellen. Betreffend
den Rechten bin ich noch unsicher, deswegen bitte alles
Developer Mittwoch 15:45
Perfekt Danke!
Passwort?
DBA Mittwoch 15:10
OK, der User wurde erstellt. Alle Rechte kriegst du sicher nicht.
aber ich habe dem User die Standard Applikationsrolle der
Mobiliar zugeteilt, dass sollte reichen und sonst melde dich.
DBA Mittwoch 15:56
Ah sorry vergessen, teile ich dir per Telefon mit.
Rufe dich gleich an
3 Tage!
Start Punkt: Die Development Pipeline
23
Version control Build Server
Development
registerdetect push image
Get imagePush
Start Image
Docker registry
Wann und wo soll nun die DB gebaut
werden?
trigger deployment
Kubernetes
Ansatz 1: Docker Container mit Oracle Datenbank in Kubernetes
24
PROs
▪ Gleiches RDBMS in Entwicklung und in Produktion
CONs
▪ DB Management wird sehr komplex und aufwändig
▪ Deployment ist zu langsam für die Anforderungen
▪ Oracle ist zu schwerfällig für Docker
▪ Keine 12c XE Version verfügbar = Lizenzkosten
Application Images
Oracle Images
Ansatz 2: Docker Container mit PDB auf DB Server
25
PROs
▪ Datenbanken weiterhin in Verantwortung der DBA's
▪ Möglichkeit der Automatisierung (DBAAS)
▪ PDB' können sehr schnell provisioniert werden
▪ Gleiches RDBMS über alle Entwicklungstufen bis Produktion
▪ Deckt alle Anforderungen der Entwicklung ab
CONs
▪ Cloud native, aber nur mit der Oracle Cloud
Application Images
Connect using OUD
DBaaS Architektur bei der Mobiliar Versicherung
26
t = 2 min
t = 1 min
Build Server
Development
registerdetect build
Get imagePush
Start Image
Docker registry
Kubernetes
order get state
OUD connect
t = 4...6 min
t = 8...10 min
Voll automatisches Applikations Deployment
inklusive Oracle DB in weniger als 10 Minuten
trigger deployment
PDB
Version control
Technische Implementierung
27
Build Server
Container Database
Repository
Database
https://pdborder-api/$pdbname
REST Server
REST Call Execute Function
Execute Procedure
DB Link
▪ Job in DB zum starten eines Scripts erstellen
▪ OS Credentials an Job übergeben
▪ Shell script erstellt oder löscht pdb und führt
post actions aus
▪ Update pdb_orders Tabelle wenn Job erledigt
▪ Success Meldung an Build Server
▪ Build Server erstellt den Applikations Container
sql über oracle client
pdb_orders
Template
PDB APPL 1 APPL 2
DBAAS ist perfekt, aber wo soll die PDB erstellt werden?
28
$pdb_name=topdb1
CDB Inventorydo10mm01 to10ms01 po10ss01
do10mm02 to10ms02 po10ss02
do10mm03 to10ms03 po10ss03
Verfügbar
Gesperrt
PDB Inventory
pdb count on to10ms01 = 22
pdb count on to10ms03 = 37
to10ms01
Job auf CDB erstellen
Restrictions
P = 50 PDB / CDB
T & D = 150 PDB / CDB
Fazit – Die DBaaS Schnittstelle ist ein grosser Erfolg
29
▪ Wir konnten die Anforderungen von allen Stakeholdern abdecken
▪ In zwei Jahren wurden mehr als 1000 PDB's automatisiert über die Schnittstelle deployed
▪ Mit diesem Service können wir heute und in naher Zukunft die Anforderungen abdecken, die eine agile
Softwareentwicklung an das DB-Management stellt
79102 103 113 118 138 158
180 192225 242
265298 310
332361
383 391429 434 440 459
493517
546580
625653 673
710746
808861
980
1’083
Dez 16
Jan 17
Feb 17
Mär 17
Apr 17
Mai 17
Jun 17
Jul 17
Aug 17
Sep 17
Okt 17
Nov 17
Dez 17
Jan 18
Feb 18
Mär 18
Apr 18
Mai 18
Jun 18
Jul 18
Aug 18
Sep 18
Okt 18
Nov 18
Dez 18
Jan 19
Feb 19
Mär 19
Apr 19
Mai 19
Jun 19
Jul 19
Aug 19
Sep 19
Okt 19
CREATED PDB IN DEV OVER DBAAS
Und als wir dachte wir hätten
sämtliche Probleme gelöst kam
direkt die nächste Challenge…
30
Jeder Entwickler wollte eine andere Open Source DB
31
Relational Search Engine Document Store
Key Value Store
Graph Database
19.11.2019 32
Die Entwickler schreien nach Open Source Datenbanken 2018
Produkt Begründung der Entwicklung
• Alle Microservices laufen in Docker Containern auf Kubernetes, wir wollen auch die DB im Docker Container.
• Wir haben meistens nur einige MB an Daten weshalb benötigen wir ein RDBMS das x Mal grösser ist als der Inhalt
• Wir wollen Cloud Nativ sein und ein Docker Container können wir überall deployen
• Postgres in Docker kann viel einfacher in unsere CI/CD Pipeline integriert werden als Oracle über die DBAAS
Schnittstelle
• Es gibt keine aktuelle Oracle Version mit allen Funktionen welche lizenzfrei ist für die ersten Builds auf dem
Entwickernotebook, ausserdem ist Oracle und Docker viel zu schwerfällig (Grösse / Startup Time)
• Wir benötigen einen Document Store für JSON basierte Services
• Oracle kann auch JSON aber ist für uns zu kompliziert und aufwändig
• Mongo DB kennen einige Entwickler und kann schnell und einfach in Docker deployed werden.
• In der Mobiliar werden immer mehr Applikationen betrieben welche auf Textsuche basieren.
• Bei einer Applikation auf Oracle stand das Go Life auf der Kippe, da Textsuche verwendet wurde und die Performance
auch nach intensiven Tuningaufwand durch externe Spezialisten nicht ausreichend war. Bessere Performance hätte ein
massiver Umbau des ganzen Datenmodels vorausgesetzt
• Als letzte Hoffnung versuchte ein Entwickler eine Elastic Search Instanz der Oracle DB vorzulagern, in welche die Daten
geladen und die Textsuche ausgelagert wird. Ohne Tuningaufwand war die Applikation um Faktor 10 schneller!
• Dies zeigte uns, dass wir in Zukunft für Applikationen mit intensiver Textsuche auf Elastic Search setzen wollen
(Use Cases sind Phonetische Suche, Unstrukturierte Suche, Indexierung von Dokumenten)
Evaluationskriterien für Open Source DB-Systeme
3319.11.2019
Features
▪ Containerfähigkeit
▪ Schlanke Software
▪ Keine / tiefe Lizenzkosten
Backup / Restore
▪ Disaster-fähig
▪ Point in time-Recovery
▪ Online
Hochverfügbarkeit
▪ Kurze Ausfallzeiten
▪ Spiegelung über mehrere RZ
Sicherheit
▪ Personalisierte User
▪ Audit-Funktionen
▪ Verschlüsselung
Monitoring und Logging
▪ Zentralisiert
▪ Alerting-Funktionen
▪ Historische Daten
(Hersteller) Support
▪ Unterstützung bei Problemen
▪ Tiefe Supportkosten
Automatisierter Betrieb
▪ Automatisierung einmalig
vor Betriebsaufnahme
▪ Lifecycle und Deployments
sind definiert
▪ Standardisierung ist definiert
Instanziieren der DB Systeme anhand des Evaluationskatalog
3419.11.2019
Features
▪ Elasticsearch wird für Suchfunktionen, Replikate und Log-
Daten eingesetzt. EL eignet sich nicht für business-
kritische und transaktionssichere Datenhaltung.
Backup / Restore
▪ Backup wird auf Anfrage vom Feature
Team entwickelt und aufgesetzt.
Anforderungen werden erhoben und
umgesetzt
Hochverfügbarkeit
▪ Elasticsearch läuft im Kubernetes
Cluster. Die Verfügbarkeit beruht
auf den Kubernetes Mechanismen
Sicherheit
▪ Sicherheit erfolgt über das Plug-
In ReadonlyREST
Monitoring und Logging
▪ Monitoring und Logging erfolgen
über Grafana und Prometheus,
Standard Tools für Kubernetes
(Hersteller) Support
▪ Support wird aus der Community
bezogen. Wir beziehen KnowHow
durch externe Beratung
Automatisierter Betrieb
▪ Elasticsearch läuft im Docker
Container.
Welche DB Dienstleistungen stellen wir der Entwicklung zur Verfügung?
19.11.2019Titre de la présentation 35
▪ Steht unter der Verantwortung
vom DB Team
Standard DB Service
DB Service
Gruppen
▪ Steht unter der Verantwortung
der Entwickungsteams
Agile DB Service
▪ Unterstützt die Entwicklungsteams
beim Aufbau eines Agile DB
Service
DB Enabling Service
▪ Unterstützt die Entwicklungsteams
bei der Migration auf einen
Standard DB Service
DB Migration Service
19.11.2019 36
Aktueller Stand der Services
Produkt Aufwand DB Team und aktueller Status
• Zusammen mit den Entwicklern und externen Spezialisten definierten wir die Architektur zum Betrieb von Postgres in Docker
• Enormer Aufwand damit der Service Enterprise ready ist (Backup, Restore, Lifecycle, Automatisierung)
• Mehrere Container für einen Microservice notwendig welche untereinander kommunizieren müssen (Dafür ist Kubernetes nicht vorgesehen)
• Persistenz, einziger Persistenzlayer in Kubernetes ist NFS welches schon bei geringer Last Probleme macht (I/O Latenz)
• Kubernetes ist eine Applikationsverwaltungsplattform keine DB Plattform!!
• Anhand dieser Probleme wurde der Entschluss gefasst das die PDB als Datenbanklösung für Microservices bleit. Auch weil die Entwicklung
mittlerweile mit dem DBAAS sehr zufrieden ist.
• Wird ein Service in der Cloud entwickelt, dient als Datastore ein DB Service aus der Cloud und kein "Mobi Engineerter Docker Container"
• Mongo DB Service wurde implementiert und steht unter gewissen Auflagen (keine heiklen Daten) als Docker Service zur Verfügung
• Deployment sowie Lifecycle vollwertig automatisiert (Config as Code)
• Service wird komplett durch DBA verwaltet, Entwickler müssen sich um nichts kümmern (Lifecycle, Backup, Security)
• Service wird von der Entwicklung sehr selten genutzt und zwar aus folgende Gründen:
• Es gibt doch nicht so viele Microservices welche rein JSON basiert sind
• Meistens Mischung aus JSON und relational wodurch die PDB wider priorisiert wird.
• Sehr viele neue und gute JSON Funktionen sind mit den neuen Oracle Versionen implementiert worden.
• Elastic DB Service wurde implementiert und steht unter gewissen Auflagen (kein Primärer Datastore) als Docker Service zur Verfügung
• Es wird kein Backup des Service durchgeführt, bei Crash werden die Daten neu aus Oracle (Primärer Datastore geladen)
• Deployment und Lifecylce komplett automatisiert (Config as Code)
• Service wird komplett durch DBA verwaltet, Entwickler müssen sich um nichts kümmern (Lifecycle, Security)
• Service wird von Anfang an bei Applikationen mit Textsuche eingesetzt, jedoch zeigen sich auch hier Probleme mit dem Persistenz Layer im
Kubernetes, weshalb wir für Instanzen mit hoher Last den Service auch auf VM zur Verfügung stellen.