Agilität & Datenbank: Eine Ehe mit Höhen und Tiefen

Agilität & Datenbank:
Eine Ehe mit Höhen und Tiefen
DOAG 2015 Konferenz + Ausstellung - Nürnberg – 19. November 2015
Szenen einer Ehe: Heirat
Anwendung
> Einführung
2
Szenen einer Ehe: Einladung zum Essen
A
B
> Einführung
3
Szenen einer Ehe: Eigenheiten
> Einführung
4
Szenen einer Ehe: Familienmanagerin
> Einführung
5
Bevor es zu spät ist, lieber ...
Eheberatung
> Einführung
6
Wer bin ich?
Datenbank
> Datenbank & Agilität
Entwicklung
7
Agenda
>
Vorstellung
﹥ Vorstellung der esentri AG
﹥ Vorstellung des Referenten
>
Analyse
> Bestandsaufnahme
> Agilität & DevOps
> Architektur Sichtweise
>
Lösungsansatz
>
Werkzeuge
>
Fazit
> Agenda
8
"Mit unserer Begeisterung für führende Technologien
vernetzen wir Systeme, Prozesse und Menschen.“
EINFACH MEHR
> BEGEISTERUNG
Mitglied der
> Vorstellung der esentri AG
9
Unser Fokus liegt allein auf der Middleware
>
>
>
>
>
>
>
>
>
Oracle ADF & MAF
Oracle SOA Suite
Oracle Service Bus
Java Enterprise Edition
Oracle Weblogic
Oracle BPM Suite
Oracle IdM
Lösungen & esentri Middleware Toolbox
Mehr Themen
> Digitalisierung & Industrie 4.0
> Internet of Things
> Big Data & Fast Data
> Forms Evolution
10
Eine Allianz für volles Programm rund um den Red Stack
Ziel der scope alliance ist es, durch die Vernetzung von Experten den Zugang und Einsatz von
Oracle Produkten und Services für Kunden einfacher zu gestalten. In gemeinsamen Projekten
bündeln 200 Oracle Spezialisten ihre Expertise aus allen wichtigen Bereichen des Oracle
Portfolio, angefangen bei Hardware, über Datenbanken bis hin zu Middleware und
Anwendungsentwicklung.
11
Warum wird Software entwickelt?
Geschäftsziele
> Einführung
Anforderungen
System
12
Lebenszyklus Softwareentwicklung
Plan
Code
Build
Test
Release
Deploy
Operate
DevOps
Continuous Delivery
Continuous Integration
Agile Development
> Einführung
13
Organisation
> Einführung
14
Lebenszyklus von Daten & Anwendungen
> Einführung
15
Lebenszyklus von Daten und Anwendung
analysiert
gelöscht
verwendet
archiviert
> Einführung
16
Agile Softwarenentwicklung
> Individuen und Interaktionen wichtiger
als
Prozesse und Werkzeuge.
> Funktionierende Software wichtiger
als
umfassende Dokumentation.
> Zusammenarbeit mit dem Kunden
wichtiger
als
Vertragsverhandlung.
> Reagieren auf Veränderung wichtiger
als
das Befolgen eines Plans.
> Agilität & DevOps
17
Agiles Manifest: 12 Prinzipien
1. Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung
wertvoller Software zufrieden zu stellen.
2. Heiße Anforderungsänderungen selbst spät in der Entwicklung willkommen. Agile Prozesse
nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.
3. Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und
bevorzuge dabei die kürzere Zeitspanne.
4. Fachexperten und Entwickler müssen während des Projekts täglich zusammenarbeiten.
5. Errichte Projekte rund um motivierte Individuen. Gib ihnen das Umfeld und die
Unterstützung, die sie benötigen, und vertraue darauf, dass sie die Aufgabe erledigen.
6. Die effizienteste und effektivste Methode, Informationen an und innerhalb eines
Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.
http://agilemanifesto.org
> Agilität & DevOps
18
Agiles Manifest: 12 Prinzipien
7. Funktionierende Software ist das wichtigste Fortschrittsmaß.
8. Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer
sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
9. Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
10. Einfachheit - die Kunst, die Menge nicht getaner Arbeit zu maximieren - ist essenziell.
11. Die besten Architekturen,Anforderungen und Entwürfe entstehen durch selbstorganisierte
Teams.
12. In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann, und passt sein
Verhalten entsprechend an.
http://agilemanifesto.org
> Agilität & DevOps
19
Scrum
> Agilität & DevOps
20
Kanban
> Agilität & DevOps
21
Extreme Programming (XP)
Rollen
> Tester
> Interaction Designer
> Architekt
> Entwickler
> Agilität & DevOps
22
Feature Driven Development
Rollen
> (Chef) Architekt
> (Chef) Programmierer
> Entwickler
> verschiedene Rollen für
“Fachexperten”
> Agilität & DevOps
23
DevOps
Plan
Code
Build
Test
Release
Deploy
Operate
DevOps
Datenbank-Konfiguration
DataSoures
Queues
Datenbank-Objekte
Sourcecodeverwaltung
Filestores
JVM-Settings
Applikationen
Loadbalancer
Build-Server
24
Java EE Architektur
JPA
Data Access
JMS
JDBC
Entities
EJB
HTML
JSP
Browser
Mobile Client
Resource Tier
JCA
Android, iPhone,
Windows
Phone,…
Facade
GUI
Rich Client
Business
Servlet
.NET
Framework
Presentation
JSF
GUI
Eclipse RCP,
Java FX,…
Middle Tier
POJO
Client Tier
Web Client
> Architektur
25
Java EE Architektur + Prozess-Orchestrierung
Client Tier
JMS
JDBC
JPA
Data Access
JCA
Entities
POJO
EJB
Servlet
JSP
Browser
Mobile Client
HTML
Business
Facade
Android, iPhone,
Windows
Phone,…
Presentation
JSF
GUI
.NET
Framework
Resource Tier
Process
Eclipse RCP,
Java FX,…
Rich Client
GUI
Middle Tier
Web Client
> Architektur
26
Microservice
Frontend
Microservice
Microservice
Microservice
Microservice
Microservice
> Architektur
27
Datenbankänderungen im Vergleich
Änderung
Datenbank
Middleware / Applikation
Dateisystem
Tablespaces und Datenbank-Dateien
Domain-Verzeichnis
Memory
SGA
Java Heap
Cache-Technology
Ausfallsicherheit
RAC
Cluster / Loadbalancer
Connection- und
Threadmanagement
Datenbank-Listener
Java, Request Queue, Consumer
Threads (Queues)
Sicherheit
Benutzer, Rollen und Rechte,
Datenbank-Optionen
Benutzer, Rollen und Rechte,
LDAP-Anbindung, Security
Provider
Konfigurationseinstellungen
init.ora Parameter
JMS, JDBC, JTA, ... – Parameter
Objekte
Tabellen, Indexe, Sequences...
Queues, ...
Businesslogik
SQL, Trigger, PL/SQL-Packages
Java, Webservices, Prozesse
> Architektur
28
Lösungsansatz
29
Verantwortlichkeiten
>
>
>
>
Datenbank-Architektur
Datenbank-Parameter
Tablespace-Design
Benutzer- und Rollenkonzept
>
Aufbau der Schema-Objekte
> Tabellen
> Views
> Sequences
> …
Operations
DB-Spezialist
Development
> Lösungsansatz
30
Produktions Pipeline
Wiki
Feedback
Entwicklung
Nightly Build
Development
VirtualBox
Integration
Performance
Ops & Dev
Flyway
Puppet
Abnahme
Produktion
Operations
Build Server
Sicherheit!
git
> Lösungsansatz
31
Werkzeuge
Puppet
>
Systemkonfigurationswerkzeug
>
verfügbar seit 2005, Puppet Lab
>
Ruby-based
>
Open Source, Apache Licence 2.0
>
seit 2013 Partnerschaft mit Vmware
>
https://puppetlabs.com
> Puppet
33
Puppet Architektur
> Puppet
34
Lifecycle of a Puppet Run
1.
Facts
Aktueller Status wird an Puppet Master Server gesendet.
2.
Catalog
Puppet erstellt einen Catalog unter Berücksichtigung der
Facts. Der Catalog enthält den Soll-Zustand des Nodes.
3.
Report
Konfigurationsänderungen werden an den Puppet Master
zurückgemeldet.
4.
Report
Integration über API möglich.
> Puppet
35
Oracle Manifest (1)
>
>
Edwin Biemond: https://github.com/biemond/puppet
Bert Hajee: http://forge.puppetlabs.com/hajee/oracle
Listener starten
db_listener{ 'startlistener':
ensure
=> 'running', # running|start|abort|stop
oracle_base_dir => '/oracle',
oracle_home_dir => '/oracle/product/11.2/db',
os_user
=> 'oracle',
listener_name
=> 'listener' # which is the default and optional
}
Datenbank starten
oradb::dbactions{ 'start testDb':
oracle_home
=> '/oracle/product/11.2/db',
user
=> 'oracle',
group
=> 'dba',
action
=> 'start',
db_name
=> 'test',
require
=> Oradb::Dbactions['stop testDb'],
}
> Puppet
36
Oracle Manifest (2)
Tablespace anlegen
ora_tablespace {'JMS_TS@soarepos':
ensure
=> present,
datafile
=> 'jms_ts.dbf',
size
=> 100M,
logging
=> yes,
autoextend
=> on,
next
=> 100M,
max_size
=> 1G,
extent_management
=> local,
segment_space_management => auto,
}
Benutzer anlegen
ora_user{'JMS@soarepos':
ensure
temporary_tablespace
default_tablespace
password
require
=>
=>
=>
=>
=>
grants
TRIGGER','APPS'],
quotas
=> {
}
> Puppet
present,
temp,
'JMS_TS',
'jms',
[Ora_tablespace['JMS_TS@soarepos'],
Ora_role['APPS@soarepos']],
=> ['SELECT ANY TABLE', 'CONNECT', 'CREATE TABLE', 'CREATE
"JMS_TS"
},
=> 'unlimited'
37
Flyway
>
>
>
>
>
>
>
Datenbank Migrations Werkzeug
Java-based
Open Source, Apache Licence 2.0
Entwickelt von Boxfuse GmbH aus München
“Convention over Configuration”
Einfachheit
http://flywaydb.org
> Flyway
38
Integrations
> Flyway
39
Unterstützte Datenbanken
> Flyway
40
Funktionsweise
1. Datenbank-Version bestimmen
> Flyway
41
Funktionsweise
2. Datenbank aktualisieren (migrieren)
> Flyway
42
Funktionsweise
3. Datenbank erneut aktualisieren (migrieren)
> Flyway
43
Verzeichnisstruktur
> Flyway
44
Command Line
>
Download und Binaries in ein Verzeichnis entpacken
>
Konfigurationseinstellungen in der Datei /conf/flyway.conf vornehmen
> Datenbank-Treiber
> Schema
>
SQL-Skripte für Migration erstellen, und in Ordner /sql ablegen
>
Oracle JDBC Driver im Verzeichnis /drivers ablegen
>
Migration starten (Achtung: Schema/DB Benutzer muss vorher existieren!)
> Flyway
45
Konfiguration
> Flyway
46
Namenskonvention für Migrations
Hinweise
> Version muss immer eindeutig sein!
> Nächträgliches Einfügen einer Version nur mit Parameter OutOfOrder möglich.
> “Nested” Skripte funktionieren nicht.
> Flyway
47
Kommandos
Kommando
Beschreibung
migrate
Migrates the database
clean
Drops all objects in the configured database
info
Prints the information about applied, current and pending migrations
validate
Validates the applied migrations against the ones on the classpath
baseline
Baselines an existing database at the baselineVersion
repair
Repairs the metadata table
48
Commandline
#> ./flyway migrate
#> ./flyway validate
#> ./flyway baseline –baselineVersion=1
49
Maven Integration
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
....
</configuration>
</plugin>
>
Konfiguration:
> direkt im <configuration> Element des Plugins
> Maven Properties (pom.xml)
> Konfigurationsdatei (-Dflyway.configFile)
> System Properties
> Authentication über settings.xml
#> mvn flyway:migrate
> Flyway
50
Maven Integration
<build>
<plugins>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<url>jdbc:oracle:thin:@//soalohnix.de.oracle.com:1521/XE</url>
<user>SA</user>
<password>Manager10g</password>
<locations>
<location>filesystem:src/main/sql</location>
</locations>
</configuration>
</plugin>
</plugins>
</build>
>
JDBC-Driver unter Dependencies registrieren!
> Flyway
51
Migrations
> Applied vs. Available (Resolved)
Resolved
Applied
> Typen
> Flyway
52
Callbacks
> Flyway
53
Liquibase
>
>
>
>
>
Datenbank Migrations Werkzeug
Java-based
Open Source, Apache Licence 2.0
verfügbar seit 2006
http://www.liquibase.org
>
Changelog
> XML Format
> YAML Format
> JSON Format
> SQL Format
> Custom Format
>
Integrations
> Command Line
> ANT
> Maven
> …
Unterstützte Datenbank
> Oracle
> DB2
> …
>
> Liquibase
54
Orcas - Automatisches Deployment für die Datenbank
>
https://github.com/opitzconsulting/orcas
> Oracas
55
Herausforderungen
>
Datenmodell versionieren, z. B. mit Views.
>
Abstraktion durch PL/SQL Zugriffsschicht.
>
Redundante Speicherung von Daten, z. B. Umbenennung von Spalten
>
Zusammenspiel: Feature-Branches, Sourcecodeverwaltung, flyway
56
Das ideale Team!
Programmierer
Architekt
Datenbank
Frontend
BPEL/BPMN
Security
Konfiguration
Apps
> Agilität & DevOps
57
Fazit
> Fazit
58
Ihre Ansprechpartner
Markus Lohn
Head of Technology Consulting
[email protected]
Treffen Sie mich am
scope-Stand auf Ebene 1!
Vernetzen mit esentri
59
Vielen Dank für Ihre Aufmerksamkeit!
60
Markus Lohn
Head of Technology Consulting
>
>
>
>
Consultant, Trainer und Experte für SOA und Java EE-Technologien
(Oracle 8i – FMW 12c)
Seit 1. Februar 2013 bei der esentri AG angestellt
Zuvor 13 Jahre als Consultant in den Bereichen Content Management
und SOA bei Oracle tätig
Umfangreiche Erfahrung bei der Umsetzung von komplexen Projekten
mit Oracle-Technologien seit 1999 in den Branchen:
> Öffentliche Verwaltung
> Banken und Versicherungen
> Automotive
> Industrie
> Baubranche
Kontakt:
Email: [email protected]
Blog: http://blog.esentri.com
Twitter: https://twitter.com/MarkusLohn
> DOAG 2014 Konferenz + Ausstellung
61