boost your apex deployment and provisioning with docker · windows 10 und azure. benefits ......

27
Boost your APEX Deployment and Provisioning with Docker Steven Grzbielok: 17.11.2016 | DOAG 2016

Upload: vonguyet

Post on 28-Jul-2018

245 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Boost your APEX

Deployment and

Provisioning with

Docker

Steven Grzbielok:

17.11.2016 | DOAG 2016

Page 2: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Im Überblick

Technologie-orientiert

Branchen-unabhängig

Hauptsitz

Ratingen240

Beschäftigte

Gründungsjahr

1994

Niederlassung

Frankfurt am MainAusbildungs-

betrieb

Inhabergeführte

Aktiengesellschaft

Zertifizierter

Partner von

Oracle,

Microsoft

und SAP

Page 3: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

3

About me

Steven Grzbielok• 1994 geboren, lebt in Frankfurt am Main

• B. Sc. in Wirtschaftsinformatik

• APEX Berater bei der MT AG seit 2014

• Beschäftigt sich hauptsächlich mit UI-Design und Webentwicklung, aber auch

Grundlagen der Datenbankadministration

Page 4: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

4

Agenda

1. Grundlagen

2. Pull & Run

3. Build

4. Compose

5. Erweiterte Docker Compose Szenarien

6. Docker Swarm

Page 5: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

5

Einige Inhalte dieser Präsentation werden aktuell von Oracle

ausdrücklich nicht für Produktivumgebungen empfohlen und

erhalten daher keinen Oracle-Support.

Jedoch kann Docker eine Bereicherung für Entwicklungs- und

Testumgebungen sein und möglicherweise in Zukunft Oracle-

Support erhalten.

Page 6: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

6

Was ist Virtualisierung?

Server

VM VM VM VM VM VM

Page 7: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

7

Der Unterschied: Ein Kernel für mehrere virtuelle Systeme

Container

Virtuelle Maschinen Container

Hardware

(Host OS)

Virtualization Layer/Hypervisor

Gast

1

Gast

3

Gast

2

Hardware

Host OS

Container engine

Guest OS‘s bins/libs

Cont

Cont

Cont

Cont

Cont Container

Applications

Dependencies

Page 8: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

8

Virtual Machines vs. Containers

Avi Miller – CON7461 Oracle Linux, Docker and Oracle Container Registry

VMs Containers

Updates • Configuration Managment

• Update der einzelnen Gold Images

nötig

• Veränderungen können schneller und oft in

Container eingebunden werden

• Rebuilt und deployment sind schneller

umsetzbar

Performance • Heavy-weight: Oft verlangsamt durch

mehrere Abstraktionsschichten

• Lightweight: Container ist lediglich ein

Prozess des OS

• 100% nativer Zugriff auf die physische

Hardware

Hardwarenutzung • Geringere Abstraktion schwer möglich • 100% der physischen Hardware

konsumierbar

• Bei Überbelastung des Hosts kann der

Container leicht verschoben werden

Image Erstellung • Automatisierung mit Tools wie Puppet

• Hohe Dateigröße

• Wie VM, jedoch auch deklarativ durch die

Nutzung von Dockerfiles möglich

Page 9: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

9

Was ist Docker?

• Virtualisierungsplattform für Linux Container

• Host OS = Guest OS

• Kombiniert Namespaces und cgroups für mehr Sicherheit und

Skalierbarkeit

• Copy-on-write and union filesystems

• Anfangs nur Linux unterstützt, bald auch Windows Server 2016,

Windows 10 und Azure

Page 10: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Benefits

Isolierung von Anwendungen und Abhängigkeiten

Filesystem Layers verbessern die Wiederverwendbarkeit zwischen Containern

Kosteneinsparungen im Gegensatz zu konventioneller Virtualisierung

Bessere Hardwarenutzung

10

Benefits/Use Cases

Use Cases

Anwendungsdeployment mit weniger Abhängigkeiten

Entwicklungs- und Testumgebung

Portabilität

Page 11: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

11

Tausende offizielle Repositories und Community Repositories

Docker Hub

Page 12: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Test/Entwicklungsumgebung Up & Running in wenigen Minuten

Persönliche Test und Entwicklungsumgebungen komfortabel verteilen

Builds Teamweit verbreiten

Optimierte Architektur für sicheres Deployment

12

Oracle und Docker – Wie passt das?

Page 13: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Docker Pull

• Download eines fertigen Images

• Private oder öffentliche Repositories

• Single Container

Docker Build

• Umfangreichere Konfiguration mittels Dockerfile

• Einbezug lokaler Binärdaten möglich

Docker Compose

• Multicontainer Umgebungen

• Konfiguration mittels Composefile

13

Welche Möglichkeiten bietet Docker?

Single-Container Umgebung Multi-Container Umgebung

Page 14: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

docker pull araczkowski/oracle-apex-ords

14

Docker Pull: ORDS 3.0.4, APEX 5.0.3 and Oracle XE 11g R2 8 Minuten

Getting started

https://hub.docker.com/r/araczkowski/oracle-apex-ords/

Page 15: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

docker run -d --name ora -p 49160:22 -p 8080:8080 -p 1521:1521 araczkowski/oracle-apex-ords

15

Docker Run 2 Minuten

Getting started

Page 16: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Über GitHub und nicht Docker Hub

Auch kein Oracle Support…

.., aber offizielle Software.

Später über die Oracle Container Registry

16

Docker Build: Vorkonfiguriert und bereitgestellt von Oracle (Build Time ~ 23Minuten)

Offizielle Images von Oracle

https://blogs.oracle.com/developer/entry/creating_and_oracle_database_docker

Page 17: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

17

Modulare Architektur

DBAPEX

DB

Tomcat &

ORDS

Host OS‘s bins/libs

Container engine

Host OS

Hardware

Page 18: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

18

Docker Compose

Multi-Container Umgebung selber bauen

version: '2'

services:

businessdb:

image: sath89/oracle-xe-11g

ports:

- "8081:8080"

- "1522:1521"

apexdb:

image: sath89/oracle-xe-11g

ports:

- "8082:8080"

- "1523:1521"

websrv:

image: tomcat

ports:

- "8888:8080"

Page 19: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Jenkins Master

Jenkins in Docker Container

Commercially SupportedDocker Engine

Jenkins Slave

SSHD

Java Runtime

Commercially SupportedDocker Engine

Docker TrustedRegistry

Docker Trusted Registry Compnents

Commercially SupportedDocker Engine

19

CI/CD

https://www.docker.com/sites/default/files/RA_CI%20with%20Docker_08.25.2015.pdf

Page 20: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

20

CI/CD

https://www.docker.com/sites/default/files/RA_CI%20with%20Docker_08.25.2015.pdf

• Erweiterung mit GitHub

• Commit Automatischer Start eines Jenkins

Jobs

Page 21: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Spezieller Clustering-Modus der Docker Engine

Orchestrisierungs-Umgebung

Integriertes Load-Balancing und Service Discovery

Dynamische Skalierung möglich

“swap, plug, and play”

Kompatibel mit Jenkins, Docker Compose…

21

Was ist Docker Swarm?

Cattle, not pets!

Page 22: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Denkbar …

…jedoch noch nicht implementiert.

Load Balancing auf Server-Ebene durch Docker Swarm

Automatische Skalierung durch Docker Swarm

Skript zum Hinzufügen von Nodes in den Real Application Cluster

22

Clustering mit Docker Swarm und RAC

Docker Swarm + RAC

Page 23: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Schnell verfügbare Entwicklungsumgebung bereitstellen

Keine Konflikte bei Abhängigkeiten oder fehlenden Packages

Saubere und portable Entwicklungsumgebung

„Leichtgewichtiger als VMs“

Besonders für die Zusammenarbeit von APEX mit anderen Technologien und Anwendungen geeignet

Besonders geeignet für CI/CD Szenarien

„Configure once, run many times“

Isolation der kleinen Container

Ergänzende Clusterarchitektur für das RAC

Kostenreduktion und Performanceverbesserung möglich

23

Was kann Docker für APEX tun?

Page 24: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Bei kleinen APEX Anwendungen

Wenn Anwendungen keinerlei Abhängigkeiten besitzen und lediglich mit einem Anwendungsexport deployt werden können

Wenn alles lediglich in der Datenbank liegt

Wenn die Vorteile von Pluggable Databases genutzt werden sollen

24

Wann wird Docker für APEX uninteressant?

Page 25: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Weitere Vorträge am 17.11.

Page 26: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

Steven Grzbielok

Telefon: +49 2102 30961 – 0

[email protected]

ROADSHOW

„VON FORMS NACH APEX“

24.01.2017 Hamburg

25.01.2017 Düsseldorf

26.01.2017 Frankfurt

27.01.2017 München

Page 27: Boost your APEX Deployment and Provisioning with Docker · Windows 10 und Azure. Benefits ... Jenkins Master Jenkins in Docker Container Commercially Supported Docker Engine Jenkins

@sgrzbielok

www.xing.com/profile/Steven_Grzbielok

www.linkedin.com/in/sgrzbielok