Continuous Delivery in der Praxis

Ähnliche Dokumente
Continuous Delivery in der Praxis

Continuous Delivery mit Docker

Docker revisited - Leichtgewichtige Orchestrierung. Dr. Halil-Cem adesso AG - Dortmund

The linux container engine. Peter Daum

Build-Pipeline mit Jenkins

Platform as a Service (PaaS) & Containerization

Continuous Delivery in der Realität eines Großunternehmens

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Anwendungsvirtualisierung in Containern mit Docker

CentOS 7 Secure And Portable Containers Made Easy Jürgen Brunk Köln,

Docker für Java Entwickler

DEPLOYMENTS MIT DOCKER. Created by Wojciech Pietrzak

Containisierung von Java Apps mit Docker

Planung für Organisation und Technik

Dr. Roland Huß, ConSol* Docker für Java-Entwickler

Daniel Tschan Technischer Leiter. Continuous Delivery mit OpenShift

Erfolgreicher Ums9eg auf Git

Continuous Delivery mit OpenShift, 2nd Edition

Docker für Entwickler

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Dr. Roland Huß ConSol* Docker für Java Entwickler

Continuous Database Integration mit Flyway

Container Hype. TODO : Vollflächiges Container Bild. Håkan Dahlström Source:

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

DevOps in der Praxis. Alexander Pacnik

Citrix Dazzle. Die Zukunft der XenApp Bereitstellung? Thomas Kötzing - Freiberufler, Analyst Microsoft MVP, Citrix CTP / ThomasKoetzing.

Use AMW to deploy to OpenShift

Tanuki Service Wrapper 101. JVM Verwaltung mit der Community Edition. Alexander Pacnik Karlsruhe,


OpenShift als Motor des kontinuierlichen Test- und Deployment Zyklus Referent: Jürgen Hoffmann, Red Hat

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat

docker.io Secure And Portable Containers Made Easy Jürgen Brunk München,

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

RESTful Web. Representational State Transfer

Windows Server 2012 R2 Essentials & Hyper-V

Uwe Baumann artiso Solutions

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

Docker. Lass mal containern Julian mino GPN

Continuous Everything

Installationsanleitung Laurus Projekte System (Aufgaben / Projekte mit Gantt Chart)

GIS Docker und Azure-Cloud. Neues aus der Entwicklung

JEAF Cloud Plattform Der Workspace aus der Cloud

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

mysoftfolio360 Handbuch

Einreichung zum Call for Papers

Automatisierte Einbindung von Windows Systemen in Bacula mit Hilfe von OPSI

Systemvoraussetzungen

Ablösung von Control-M durch JobScheduler

Python SVN-Revision 12

CLR-Integration im SQL-Server. Alexander Karl

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Frage und Antworten zum Webcast: Virtual Server 2005 :

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

DevOps und Continuous Delivery. Von Release Automation bis zur Feedbackschleife. Matthias Zieger codecentric AG

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

End-to-End Automatisierung Mehr als Continuous Integration & Continuous Delivery

SAP NetWeaver Gateway. 2013

HighQSoft GmbH AVALON Distributor. Skalierbarkeit und Ausfallsicherheit. Dieter Müller

Weblogic Server: Administration für Umsteiger

Powershell DSC Oliver Ryf

Dynamic Ressource Management

Continuous Delivery mit OpenShift

KONFIGURATIONSMANAGEMENT MIT PUPPET TIM SCHMELING. 4b:65:72:73:74:69:6e:2c:20:69:63:68:20:6c:69:65:62:65:20:64:69:63:68:21

Zwei Wege zur automatisierten SW Verteilung Am Beispiel der Lösungen von Jungheinrich. Matthias Nischwitz,

Docker & DevOps.

Git in großen Projekten

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

Zend PHP Cloud Application Platform

Virtual Unified Environments Infrastructure Service Installation und Lifecycle im Oracle Produktumfeld

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Lokale Installation von DotNetNuke 4 ohne IIS

Continuous Delivery Kontinuierlich an die Pipeline andocken

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

I N S T A L L A T I O N S A N L E I T U N G

Powermanager Server- Client- Installation

Anleitung zur Webservice Entwicklung unter Eclipse

Deploy von PHP-Applikationen

Continuous Integration mit Jenkins

Einführung in Maven und GWT

DOCKER IN PRACTICE. Matthias Zober EXXETA GmbH Leipzig

Brownbag Session Grundlagen Virtualisierung Von VM s und Containern

Unternehmen-IT sicher in der Public Cloud

IT Engineering Continuous Delivery. Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet. Alexander Pacnik Karlsruhe,

Spontan testen! Das eigene Test Lab, für jeden in der Cloud! Peter Kirchner. Microsoft Deutschland GmbH

Backup der Progress Datenbank

From Agile Project Management to Continuous Integration Thomas Bergmüller

Transkript:

Dr. Halil-Cem Gürsoy @hgutwit adesso AG Continuous Delivery in der Praxis

Über mich Principal Architect @ adesso AG seit 15 Jahre Software-Entwicklung > davor in wissenschaftlichem Umfeld Verteilte Enterprise-Systeme Persistenz / Build & Deployment 2

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Agile Manifesto Principles

Continuous Integration Integration von Modulen Vielleicht auch Integrationstests Fokus ist Entwicklung, nicht Delivery Keine Infrastruktur, Life-Tests Viele manuelle Schritte 5

https://www.flickr.com/photos/striatic/2191404675/

Continuous Delivery Kontinuierliche Builds Artefakte werden vollständig durchgetestet > Incl. automatisierte UAT, CAPT usw. > Incl. Server-Setup und Infrastruktur > Incl. Deployments Keine manuellen Eingriffe Jeder Build wird potentiell produktiv gesetzt 7

https://www.flickr.com/photos/jpmartineau/501718334/

Warum Docker? Self containing Container > Alles drin was der Prozess benötigt > Kein WAR & EAR-Delivery > Kein Application Server Setup beim Kunden > Run & forget Erleichtert das Leben zw. Dev und Ops 11

Was ist Docker? Implementiert in Go Nutzt viele Linux Kernel Features: > namespaces für alle Ressourcen > Control groups (cgroups) > Union File Systeme (AUFS, btrfs, vfs ) > LXC, libcontainer 12

VM vs. Container cgroups & namespaces & libcontainer > Isolierte Prozesse > sieht nur alles innerhalb seines namespace > innerhalb des Containers wie in einer VM Kernel Sharing > es muss kein vollständiges OS gebootet werden 13

VM vs.container Quelle: http://docs.docker.com 14

VM - schnell 15 https://www.flickr.com/photos/ashleyswilkes/3863767875

File System Unified Filesystem - AUFS > Änderungen werden geschichtet > Analog einem Versionierungssystem http://docs.docker.com/terms/layer/ 16

AUFS 3588c05c7d24 Virtual Size: 510.5 MB Tags: cdwrkshp/java7-tc7:latest 7cd0471cb71e Virtual Size: 510.5 MB 54dc3c2d593c Virtual Size: 517 MB 094cc7c59c79 Virtual Size: 523.1 MB 688a08b73f44 Virtual Size: 523.1 MB 52e46ca36cf0 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-42 7cc63bc98af7 Virtual Size: 517 MB 8bf219561a14 Virtual Size: 523.1 MB ebe7ec7d34bb Virtual Size: 523.1 MB 23205cc10892 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-41 d420a23f980b Virtual Size: 517 MB 4afb0caceae6 Virtual Size: 523.1 MB aed914cc5e2c Virtual Size: 523.1 MB d17e5a80a367 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-40 17

Dockerfiles FROM ubuntu:precise MAINTAINER Halil-Cem Guersoy hcguersoy@gmail.com RUN apt-get install -y wget curl RUN apt-get install -y openjdk-7-jdk RUN apt-get install -y tomcat7 COPY./server.yaml /etc/tomcat7/server.yaml EXPOSE 8080 $ docker build t myrepo:5000/mytc:0.1. $ docker inspect myrepo:5000/mytc:0.1 $ docker push myrepo:5000/mytc:0.1 $ docker run i t myrepo:5000/mytc:0.1 /bin/bash $ docker ps -a 18

Application Images Java Tomcat Web App Dockerfile Puppet, Chef 19

Application Container https://www.flickr.com/photos/matijagrguric/4437187539 20

Layering im Filesystem Basis Images Vererbung / Layering File System http://docs.docker.com/terms/layer/ App Image enthält zusätzlich nur Änderungen > Konfiguration & Applikation Jede Version wird nur 1x gebaut! 21

Container verbinden Mehrere Container benötigt > Datenbank, AppServer, WebServer, LB Container mit Links verbinden Oder Registry -Systeme > etcd, Consul usw. Scheduler > Docker Swarm, CoreOS 22

Container Links docker run d P --name db42 docker run d P --name app42 --link db42:db --link [name]:[alias] 23

Container ansprechen Port Mapping auf Host Default Mapping oder vorgeben Expose im Dockerfile Isolierte Ports 10080:80 19990:9990 24

Auswirkungen auf Architektur? Weg von großen Monolithen Hin zu kleineren Einheiten Microservices Herausforderungen > Orchestrierung > Resilience 26

Infrastructure as Code Server für Container muss bereit gestellt werden CI-Systeme, Docker, müssen installiert werden Puppet, Chef, Ansible service { $servicename : name => $servicename, ensure => running, enable => true, require => [File["/etc/init/$servicename.conf"]], subscribe => File[$config_file], } 27

CD + Docker Workflow - supertrivial mvn Repo Server Docker Registry Pull Image v 1.0.0 Docker Host Deploy Java App v 1.0.0 Get Artifact v 1.0.0 Push Image v 1.0.0 Build Java Project Build Docker Image Create & Start Docker Container Stop / Kill Container 28

Snapshots are Evil! https://www.flickr.com/photos/jdhancock/4071590385/

Build once - deploy many! https://www.flickr.com/photos/jstar/2338025074

Promote! Deploy Dev Deploy Test Deploy UAT Deploy PP Deploy Prod 31

Jenkins nur ein C. Integration-Server CD Funktionalität über Plugins Plugins harmonieren nicht immer :-( 33

Docker mit Jenkins TODOs: > Images bauen, pullen, pushen > Container anlegen und starten > Container stoppen / löschen etc. Docker build step plugin > leider nicht ganz ausgereift 34

REST to the Rescue Docker bietet REST API Alle notwendigen Aktionen aufrufbar Integration in Jenkins via Shell / Scripting Client APIs für fast alle wichtigen Sprachen: http://docs.docker.com/reference/api/ remote_api_client_libraries/ 35

docker-py Kommt von Docker Python Standard auf Linux Einfache Client API Über Shell Exekution in Jenkins aufrufbar 36

docker-py def create_start_container(repository, image, tag, name, links): pull_container(repository, image, tag) cont_info = c.create_container(repository+"/"+image+":" + tag, name=name) print 'The ID is :', cont_info["id"] if args.verbose > 1: print "Container Informationen:", cont_info started = c.start(cont_info, publish_all_ports=true, links=links) print "Container gestartet ", cont_info["id"] return cont_info; 37

Noch mehr Plugins Parametrizied Trigger Plugin Build Pipeline Plugin Rebuild Plugin Artifact Resolver Plugin Artifact Promotion Plugin Jenkins Workflow Plugin 38

Jenkins Skalierung Docker zum Skalieren von Jenkins Jenkins Docker Plugin Slave Container on demand Spezialisierte Build-Container > DinD für Image Builds 40

http://www.flickr.com/photos/an_untrained_eye/6630719431

halil-cem.guersoy@adesso.de https://twitter.com/hgutwit http://www.flickr.com/photos/tcmorgan/7372944070