SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Docker	in	der	Anwendungsentwicklung	-
mehr	als	nur	Microservices!
Torsten	Fink	
torsten.fink@akquinet.de
Zu	meiner	Person
2003:	Promotion	an	der	FU	zum	Thema
SW-Architekturen	und	Verteilte	Systeme
Ab	2004:			Berater	bei	der	akquinet
¡ technischer	Architekt	in	J2EE-Projekten
¡ Projektleitung
¡ Betriebsführung,	Wartung	
¡ klassische	Beratung	und	Schulungen
2006-2010:
Leiter	des	JBoss-Competence-Centers	bei	der	akquinet
Ab	2011:
Geschäftsführer	der	akquinet	tech@spree
Meine	Firma
Motivation
Virtualisierung	ist	ein	spannendes	Thema
¡ Umstellung	unser	lokalen	Server-Infrastruktur	(a.k.a Küche)	vor	etwa	6 Jahren
¡ Ebenfalls	schon	länger	lokal	bei	Entwicklern	im	Einsatz
¡ Windows	für	die	MacBooks	:-)
¡ Isolierte	RDBMS	(Oracle,	DB2),	oder	AppServer (WebSphere)
¡ Isolierte	Test-Systeme
=> gute	Erfahrungen,
aber	etwas	schwerfällig
Docker	war	sofort	spannend
¡ Leichtgewichtig,	lebendige	Ökostruktur
¡ Anfangs	noch	buggy
¡ Anscheinend	jetzt	Konsolidierungsphase
Thoughtworks – Technology Radar
Erstes	Brainstorming:	Einsatzmöglichkeiten
Vorgehen
Aufsetzen	einer	Masterarbeit
¡ Untersuchung	der	Einsatzmöglichkeiten	an	einem	internen	
Produkt
Integration	mit	laufenden	Projekten	und	Administration
¡ Regelmäßige	Vorstellung	der	Ergebnisse	intern
¡ Aktives	Suchen	nach	Integrationsmöglichkeiten
Nach	Abschluss	der	Arbeit	
¡ kontinuierliche	Integration	in	Projekte
Hier	jetzt	die	
Management-Sicht	der	Ergebnisse	:-)
Master-
arbeit
Projekte
Was	sind	denn	nun	Microservices?
Der	Versuch	einer	Definition...
Unser	Blick	auf	Microservices
Ein	paar	Anmerkungen...
Microservice (MS)	:=
¡ Vertikal	geschnittene	Komponente	mit	starker	fachlicher	Kohäsion
¡ Einzeln	betreibbar
Ein	getrennter	Betrieb	der	SW-Komponenten
¡ Ermöglicht	Aktualisierung	von	Einzelkomponenten	ohne	Abschalten	des	Gesamtsystems
¡ Isoliert	Einzelfehler	und	ermöglicht	Fehlerbehebung	ebenfalls	ohne	Gesamtabschaltung
¡ Ermöglicht	häufigere	und	risikoärmere	Releases
Wichtig	dafür	ist
¡ Klare	lose	Kopplung	(insb.:	MS	bleiben	funktional,	wenn	andere	nicht	verfügbar	sind)
¡ Entflechtung	der	Daten	in	der	DB
Dennoch
¡ Transformation:	lokales	System	=>	verteiltes	System	(mit	allen	Herausforderungen)
Was	ist	denn	nun	Docker?
Ein	Versuch	einer	Beschreibung...
Die	IMHO	3	wichtigsten	Aspekte
Der	erste	Schritt	der	Masterarbeit:
Auftrennen	von	Microservices
Los	geht’s	mit	der	Architektur	...
Vorher...
Internes	Produkt
(noch	nicht	öffentlich)
¡ Automatische	regelmäßige	
Sammlung	von	Informationen	im	
Web
¡ Verwaltungsanwendung	für	
Veranstaltungen
¡ Informationsportal
¡ Keycloak für	die	
Benutzerverwaltung,	
Authentisierung	und	Autorisierung
...	Nachher
Rausziehen als
MS nur
angedacht
Verteilen von
Anfragen auf die
einzelnen
Webanwendungen
1 MS
=
2 Docker Container
1 Anwendung
=
7 Container + 1 VM
Projekterfahrungen	– Projekt	I
Kunde	mit	VM-basierten	Microservices
¡ Microservice :=	VM	mit	REST-Schnittstelle	(Implementierung	beliebig)
¡ Anfänglich	hohe	Entwicklungsgeschwindigkeit
¡ Dann	(nach	etwa	3	Jahren)
¡ Wartungsprobleme
(nichtfunktionale	Builds,	verlorenes	Entwicklerwissen,	unklare	Verantwortungen)
¡ Nichtfunktionale	Probleme	durch	zu	enge	Kopplung
(Performance,	Verfügbarkeit)
¡ Aktuell
¡ Aufwändiger	Betrieb	und	Wartung
Projekterfahrungen	– Projekt	II
Kunde	mit	Spring-Boot-/Kotlin-basierten	Microservices
¡ Anfänglich	hohe	Entwicklungsgeschwindigkeit
(Allerdings	nur	Lese-Zugriffe)
¡ Dann	Performanceprobleme	durch	zu	enge	Kopplung	mit	DB
¡ Lösung	über	lokale	optimierte	Daten	pro	MS
(Experimente	mit	Time-Series-DB	für	Bewegungsdaten)
¡ Weitere	Performanceprobleme	durch	Aufrufketten
¡ Beschwerden	liefen	bei	uns	auf als	letztes	Glied	in	der	Kette
¡ Analyse	war	schwierig
=>	Einführung	einer	fachlichen	Transaktion-ID
....	Zurück	zu	verteilten	Transaktionen	:-)
Projekterfahrungen	– Projekt	II
Wie	bei	SOA
¡ Herausforderungen	durch	verteilte	Verantwortungsbereiche
Positive	Erfahrungen	mit
¡ Swagger-Specs als	Auftragsbestandteil
(Fachlichkeit	ist	damit	aber	immer	noch	offen)
Konfigurationsmanagement
Beherrschen	der	Vielfalt	...
Bestandteile	des	Konfigurationsmanagements
Varianten
¡ Entwicklung - JRebel,	Batchsize=1,	Logging,	Standard-DB-User,	Testdaten,	
DB	im	Container
¡ Testsystem - Batchsize>1,	Logging,	Extern	verwaltete	DB-User
DB	außerhalb	des	Containers
¡ CI-Tests - wie	Testsystem,	aber	mit	Testdaten
¡ Produktivsystem - wie	Testsystem,	aber	mit	Produktivdaten
Konfigurationsartefakte
¡ Java	EE	– Komponenten	(WARs,	EARs,	EJB-Jars)
¡ Applicationserver
¡ Docker	Container mit	ihrer	Verdrahtung
Umsetzung
Maven als	führendes	System
¡ Image	:=	1	Maven-Komponente
¡ Vererbungshierarchie	auf	Container	um	Gemeinsamkeiten	der	Staging-Varianten	zu	
konzentrieren
¡ Einsatz	eines	docker-maven-plugin
¡ Verwaltung	von	Container-Geflechten	mit	Docker-Compose
Bewertung
¡ Nicht	komplexer	als	bisherige	Alternativen
¡ Schnell	genug	bei	der	Entwicklung
Zwei	alternativen	Konfigurationsansätze
Bewertung
¡ Trennung	von	Images	und	Konfiguration	ist	aktuell	State-of-the-Art
¡ Konfigurierte	Images	versprechen	einfacheres	Handling	im	Betrieb
Aufsetzen	der	Entwicklungsumgebung
Weniger	ist	mehr
Vorher	....
Typischerweise	in	Projekten:
¡ 1	Seite	im	Confluence „Aufsetzen	der	Entwicklungsumgebung“
Beinhaltet
¡ Installation	+	Konfiguration	des	RDBMS	(inkl.	Testdaten)
¡ Installation	der	Build-Werkzeuge	(Java,	Maven,	Node,	Gulp ...)
¡ Installation	des	Quellcodeverwaltungssystems	(z.B.	Git)
¡ Auschecken	des	Quellcode
¡ Installation	und	Konfiguration	des	Appservers
Dauer:	0,5	bis	1	PT
Probleme:
¡ „Verstöße“	gegen	die	Vorgaben	(z.B.	die	neueste	DB...)
¡ Interaktion	mit	anderen	Produktversionen	aus	anderen	Projekten
....	Nachher
Aufsetzen	beinhaltet
¡ Installation	von	Java,	Maven, Docker,	Quellcodeverwaltung
¡ Auschecken	des	Quellcodes
¡ Per	Maven:	
¡ Konfiguration	von	Docker-Images	für	DB	und	AppServer
¡ Start	der	kompletten	Entwicklungsumgebung
Dauer:	1Ph
¡ mit	geringer	Fehlerwahrscheinlichkeit
Kommentar:
¡ Zusätzliche	Docker-Schicht	erhöht	die	Komplexität
=>	wenn	etwas	nicht	funktioniert,	wird	die	Analyse	noch	schwieriger
More	to come ...
Vision:
¡ nur	noch	Docker	für	die	lokale	Softwareinstallation
kein	Maven,	Java,	Git,	Node.js etc.
Erste	praktischen	Erfahrungen
¡ Kapseln	von	„exotischeren“	Werkzeugen	im	Build
durch	Docker	(z.B.	ASCIIDoc =>	Confluence)
¡ Docker	for Windows	!=	Docker
¡ BTW,	Docker	for Mac	hat	Performance-Probleme	bei
Dateizugriffen
¡ STMP-Server	als	Docker-Container
Projekterfahrungen
Übernommen	wurde	bis	jetzt
¡ Verwalten	der	DB	und	ihrer	Konfiguration	als	Docker	Image
¡ Verwalten	des	App-Servers
=>	Handling	ist	einfach,	Systeme	sind	gut	isoliert
Was	wir	gerne	noch	lösen	würden
¡ Isolation	von	Node.js,	npm,	Gulp
(dafür	müssen	diese	noch	aus	Maven heraus	gelöst	werden)
Außerdem
¡ Hilfreich,	um	beim	Kunden	Teststellungen	aufzusetzen
Aufsetzen	der	CI-Umgebung
Ein	neuer	Blick
Zwei	Alternativen
Aber
¡ Noch	keine	Erfahrungen	aus	Projekt	oder	Betrieb
Docker	und	Systemtests
Refactoring eines	gewachsenen	Systems...
Aufgabe,	Idee,	Realität
Aufgabe:
¡ Fixieren	eines	großen	Systems	durch	Tests	als	Grundlage	für	Refactorings
Idee
¡ Einsatz	von	Docker-Images	für	schnelles	Zurücksetzen
Realität
¡ Produktivdaten	(5GB)	waren	zu	groß	für	Docker
¡ Lösung:	Snapshots	mit	BtrfFS
Test
Zurücksetzen
Was	noch	offen	ist...
...	Wir	sind	noch	nicht	am	Ziel	...
Zentrales	Docker-Repo
¡ Installation	und	erste	Tests	waren	erfolgreich
¡ Offen	ist	fundiertes	Konzept	für	die	Integration	in	SW-Entwicklungsprozess	
ähnlich	zum	Maven Repo
Docker-basierte	Produktivumgebung
¡ Aktuell	laufen	alle	Projekte	klassisch	auf	dedizierten	VMs	oder	in	Azure.
¡ Zentrales	Docker-Repo ist	Grundlage	für	Produktivbetrieb
¡ Sicherheit	ist	noch	ein	offenes	Thema
Verwaltung/Betrieb	von	Anwendungen	bestehend	aus	vielen	MS	mit	Docker
¡ Bis	wann	reicht	Docker/Docker-Compose,	
ab	wann	brauch	man	Kubernetes o.ä.
¡ Wann	lohnt	sich	MS-Architektur	für	den	Kunden?
Resümee
Die	Welt	hat	sich	wieder	verbessert....
Docker
¡ Ist	stabil,	schnell	und	macht	Spass.
¡ Erleichtert	den	Entwicklungsprozess	durch
¡ Isolation	von	SW-Produkten
¡ Schnelles	Aufsetzen	von	vernetzten	Systemen
¡ Müssen	wir	uns	noch	für	den	Produktivbetrieb	genauer
ansehen
Microservices
¡ Sind	IMHO	eine	konsequente	und	gute	Weiterentwicklung	von	SOA
¡ Haben	Chancen	und	Risiken	:-)

Contenu connexe

Similaire à Docker in der Anwendungsentwicklung

Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Erfolgsfaktoren der Wikieinführung in KMU
Erfolgsfaktoren der Wikieinführung in KMUErfolgsfaktoren der Wikieinführung in KMU
Erfolgsfaktoren der Wikieinführung in KMUMartin Koser
 
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Torsten Fink
 
skilllocation Foliensatz zu Microsoft Azure
skilllocation Foliensatz zu Microsoft Azureskilllocation Foliensatz zu Microsoft Azure
skilllocation Foliensatz zu Microsoft AzureCarola Pantenburg
 
MySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtMySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtKaj Arnö
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015AboutYouGmbH
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittSDL Language Technologies
 
DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011Ulrich Krause
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
Modernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenModernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenenpit GmbH & Co. KG
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDevDay Dresden
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen....NET User Group Rhein-Neckar
 
Iak10 ikea family community
Iak10 ikea family communityIak10 ikea family community
Iak10 ikea family communityWebster59
 

Similaire à Docker in der Anwendungsentwicklung (20)

Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Erfolgsfaktoren der Wikieinführung in KMU
Erfolgsfaktoren der Wikieinführung in KMUErfolgsfaktoren der Wikieinführung in KMU
Erfolgsfaktoren der Wikieinführung in KMU
 
Ec2009 Templates
Ec2009 TemplatesEc2009 Templates
Ec2009 Templates
 
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
 
skilllocation Foliensatz zu Microsoft Azure
skilllocation Foliensatz zu Microsoft Azureskilllocation Foliensatz zu Microsoft Azure
skilllocation Foliensatz zu Microsoft Azure
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
DevOps & IoT
DevOps & IoTDevOps & IoT
DevOps & IoT
 
MySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni FrankfurtMySQL: Gastvortrag an der Uni Frankfurt
MySQL: Gastvortrag an der Uni Frankfurt
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste Schritt
 
DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Modernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesenModernisierung in Zeiten wie diesen
Modernisierung in Zeiten wie diesen
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - AnwendungsmodernisierungDev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
Dev Day 2021 - Stephan Pirnbaum - Anwendungsmodernisierung
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
 
Iak10 ikea family community
Iak10 ikea family communityIak10 ikea family community
Iak10 ikea family community
 

Plus de Torsten Fink

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
 
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Torsten Fink
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenTorsten Fink
 
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItJSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItTorsten Fink
 
Haskell aus einer Java EE Perspektive
Haskell aus einer Java EE PerspektiveHaskell aus einer Java EE Perspektive
Haskell aus einer Java EE PerspektiveTorsten Fink
 

Plus de Torsten Fink (6)

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten Schulstandorten
 
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItJSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptIt
 
Haskell aus einer Java EE Perspektive
Haskell aus einer Java EE PerspektiveHaskell aus einer Java EE Perspektive
Haskell aus einer Java EE Perspektive
 

Docker in der Anwendungsentwicklung