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