SlideShare ist ein Scribd-Unternehmen logo
1
Zuverlässige und flexible Build
Ressourcen mit Mesos Docker und
CoreOS
Georg Öttl, Infonova DevOpss
2
❑ Bericht über einen spannenden Technologiestack
❑ Use Case einer Super CI / CD Umgebung eines Softwareunternehmens
mittlerer Größe
❑ Alle Lösungen in der “Private Cloud” und Open Source (on-premise)On
Premise
Was erwartet euch?
3
❑ 350 Angestellte, 2 Standorte, ~250 Entwickler/Ops - Telekom
❑ 1 Operations-, 2 Entwicklungs-Abteilungen
❑ ~35 Projekte gleichzeitig
❑ Projekt 40 Personen -> 5 Personen
❑ ~2500 Build Jobs
Infonova Firmenstruktur
4
Infonova Software Entwicklung
❑ Continuous Integration
❑ On-Commit Build, Test, Deploy, Code Quality Analyse
❑ Continuous Delivery
❑ Nightly Deploy Staging System, Integration Test, UI Test, Reports an Entwickler/
Teams
5
DevOpss Team - mit Schreibfehler
❑ Georg Öttl
❑ Klaus Azesberger
❑ Reinhard
Kieswetter
❑ Stefan Eder
❑ Alexander Prattes
DevOps Antipattern
6
DevOpss Team - mit Schreibfehler
❑ Eigenentwicklungen von Tools (Innovationen)
❑ Unterstützen Entwicklungsprozess von Projektteams
❑ Bereitstellen geteilte Entwicklungsumgebungen / Services
❑ Jenkins, Jira, Confluence, Sonar, Opengrok, ...
DevOps Antipattern
7
❑ Was ist ein Build Environment?
❑ Warum Jenkins?
❑ Opensource Build Server
❑ Große Community
❑ Sehr flexibel
Geteilte Build Environments
8
Anforderungen an geteilte Build Environments
Flexibel
?
Zuverlässig
9
Zuverlässige Build Environments
Der katholische Entwickler
Entwickler sollen Fehler in Build Environment / Build Server zu 100% ausschließen können!
10
Flexible Build Ressourcen
Effizienz, Performance und
Kosten
11
Hatten wir das nicht immer schon? Eine kurze
Geschichte des Jenkins Build Server (1)
?
12
Hatten wir das nicht immer schon? Eine kurze
Geschichte des Jenkins Build Server (2)
❑ Jedes Projekt hatte eigenen Jenkins
❑ Overhead für kleine Projekte zu groß
❑ Globaler Jenkins Master für alle Projekte
❑ Instabil
❑ Globaler Jenkins Master mit slaves auf einer Maschine
❑ Instabil
13
Jenkins Default Build Cluster
❑ Globaler Jenkins Master mit slaves auf eigenständigen VMs
14
Flexibel? Ja, aber ...
15
❑ Bei geteilten Build Environments können Seiteneffekte zwischen Builds
auftreten
❑ Prozesse bleiben hängen, Festplatte wird voll, Build Artefakte bleiben
übrig, Threads bleiben hängen, ...
❑ Aufräum jobs
❑ Prozesse
❑ Files
❑ Reset VM's
❑ Reactivate Slave
❑ …Incident Tickets…
Zuverlässig (1)
16
❑ Jenkins ist keine Tool zum Cluster Management
Zuverlässig (2)
… note that the slaves are a kind of a cluster, and operating a
cluster is always a non-trivial task … Jenkins is not a
clustering middleware, and therefore it doesn't make this any
easier.
On-Demand Jenkins Slave
Provisionierung mit Mesos,
Docker und Coreos
18
Grobstruktur
Phase 1
Phase 2
19
On Demand Jenkins Slave Provisioning
20
Zuverlässig + Flexibel?
❑ Bei geteilten Build Infrastrukturen sorgt Mesos dafür, dass sich die
Container nicht in die Quere kommen (kernel Message “sacrifice child”)
❑ Flexibel: Scheduler (jenkins mesos plugin) sucht sich die besten Job Offers
heraus, auf denen seine Tasks gestartet werden können
❑ Slaves werden garantiert nur einmal Verwendet (Stefan Eder, Alexander
Prattes)
21
Video: Once Only Slaves (Immutable Slaves)
22
!Yes!
Infrastruktur und
Konfigurationsmanagement
24
Infrastruktur / Basis
Openstack
CoreOS + Docker
Mesos
25
❑ Rest API
❑ Command Line Clients (cinder, glance, nova …)
Openstack
26
❑ Schlankes Betriebssystem
❑ Docker vorinstalliert in aktuellster Version
❑ Auto Update (Deaktiviert)
CoreOS
27
❑ Verwaltet Ressourcen des CoreOS Clusters auf Nodes
❑ Bietet Scheduler Interface für Tasks (Jenkins Slaves)
Mesos
28
❑ DSL, die auf Taskebene lesbar ist
❑ Einfach zu lesen und zu verstehen
❑ Paralleles Ausführen von Konfigurations-Tasks auf Nodes
Konfigurationsmanagement mit Ansible
29
On Commit Delivery der Build Infrastruktur
Migration und Live Betrieb
31
Migration
32
Stats Migration erste zwei Wochen
❑
33
❑ User
❑ Es hat immer funktioniert, ich habe nichts geändert. Jetzt geht es
"reproduzierbar" nicht mehr (super)
❑ Wir haben immer genug Ressourcen gehabt, jetzt bricht der Build ab! (super)
❑ Ich muss wirklich fünf Sekunden warten, bis ein build startet? (ne, maximal 2)
❑ Ich musste 15 Minuten warten, bis der Build startet (keine Ressourcen?)
❑ Wow, ich kann jetzt 40 Slaves vom selben Typ parallel starten (super)
❑ Infrastruktur
❑ CoreOS hat sich upgedatet, sollte es aber nicht (nicht gut)
❑ Docker Interfaces haben intern einen anderen tx Buffer als extern (nicht gut)
❑ Docker Cache spinnt (nicht gut)
❑ CoreOS hat bei 50% RAM usage major kernel pagefaults (nicht gut)
❑ Team
❑ Wie kann ich mich mit SSH in einem Docker Container einloggen (geht nicht)
❑ Warum soll ich nicht systemd / ... / im Docker Container verwenden (don’t!)
❑ Etwas unter root user laufen zu lassen, dass mach ich nicht (...)
❑ Jenkins
❑ Überlastung Jenkins Master Netzwerkkomponente (Channels) / Verbindungen
bei 0,5 - 1% gekappt
❑ Überlastung Jenkins Master beim Schreiben der Slave Config
Erfahrungsberichte zur Migration
34
❑ Logging mit cadvisor, heapster, influxdb von kubernetes geborgt und
unseren Usern zu Verfügung gestellt
❑ Link mit Mesos UI in Internen Schulungen hergezeigt
❑ Chat mit Interessierten eingerichtet (Wichtig!)
Antwort: Transparenz
35
❑ Stabile Builds sind wichtig für eine gut funktionierende CI / CD
❑ Flexibel und dynamisch verwendete Ressourcen sparen Energie und Geld
❑ Habt keine scheu davor Mesos, Coreos und Docker in Produktion zu
verwenden.
❑ Wenn es euch etwas bringt
Take Away Message
36
Fragen?
Georg Öttl
georg.oettl@infonova.com
Team Lead DevOpss Infonova GmbH
Wir suchen MitarbeiterInnen!
https://www.infonova.
com/en/careers/vacancies/graz/junior-devops-engineer-
m-f-.html
Danke für die Aufmerksamkeit!
.) Zusammenfassung

Weitere ähnliche Inhalte

Was ist angesagt?

Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
QAware GmbH
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
B1 Systems GmbH
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
B1 Systems GmbH
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
inovex GmbH
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
inovex GmbH
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Tobias Schneck
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
Ulrich Gerkmann-Bartels
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Nicholas Dille
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
remigius-stalder
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
Patrick Paechnatz
 
Jenkins und Perl-Projekte
Jenkins und Perl-ProjekteJenkins und Perl-Projekte
Jenkins und Perl-Projekte
Renee Baecker
 
Java EE hochverfügbar
Java EE hochverfügbarJava EE hochverfügbar
Java EE hochverfügbar
gedoplan
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Gregor Biswanger
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen Hacker
Gregor Biswanger
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
gedoplan
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
Jan Gehring
 
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeGerman Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
Jan Gehring
 
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, PuppetEntwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, Puppet
inovex GmbH
 

Was ist angesagt? (20)

Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in java
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Jenkins und Perl-Projekte
Jenkins und Perl-ProjekteJenkins und Perl-Projekte
Jenkins und Perl-Projekte
 
Java EE hochverfügbar
Java EE hochverfügbarJava EE hochverfügbar
Java EE hochverfügbar
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen Hacker
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
Java Servlets und AJAX
Java Servlets und AJAX Java Servlets und AJAX
Java Servlets und AJAX
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeGerman Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
 
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, PuppetEntwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, Puppet
 

Ähnlich wie Infonova Devopscon München 2015

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Bild GmbH & Co. KG
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Gregor Biswanger
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
QAware GmbH
 
Archivistavm OpenTuesday Digicomp
Archivistavm OpenTuesday DigicompArchivistavm OpenTuesday Digicomp
Archivistavm OpenTuesday Digicomp
Digicomp Academy AG
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
inovex GmbH
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
NETWAYS
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
Florian Holzhauer
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
Christian Mücke
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
Patrick Baumgartner
 
Virtualisierung 2008/2009 - eine Standorbestimmung
Virtualisierung 2008/2009 - eine StandorbestimmungVirtualisierung 2008/2009 - eine Standorbestimmung
Virtualisierung 2008/2009 - eine Standorbestimmung
Henning Sprang
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
Oliver Zeigermann
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
André Goliath
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
inovex GmbH
 
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
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
Werner Keil
 
Microservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSMicroservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OS
Ralf Ernst
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
Josef Adersberger
 
200 verteilte Oracle- Server mit Ansible ausrollen
200 verteilte Oracle- Server mit Ansible ausrollen200 verteilte Oracle- Server mit Ansible ausrollen
200 verteilte Oracle- Server mit Ansible ausrollen
Uwe Küchler
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
OPEN KNOWLEDGE GmbH
 

Ähnlich wie Infonova Devopscon München 2015 (20)

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Archivistavm OpenTuesday Digicomp
Archivistavm OpenTuesday DigicompArchivistavm OpenTuesday Digicomp
Archivistavm OpenTuesday Digicomp
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Virtualisierung 2008/2009 - eine Standorbestimmung
Virtualisierung 2008/2009 - eine StandorbestimmungVirtualisierung 2008/2009 - eine Standorbestimmung
Virtualisierung 2008/2009 - eine Standorbestimmung
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
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?
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Microservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSMicroservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OS
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
200 verteilte Oracle- Server mit Ansible ausrollen
200 verteilte Oracle- Server mit Ansible ausrollen200 verteilte Oracle- Server mit Ansible ausrollen
200 verteilte Oracle- Server mit Ansible ausrollen
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 

Infonova Devopscon München 2015

  • 1. 1 Zuverlässige und flexible Build Ressourcen mit Mesos Docker und CoreOS Georg Öttl, Infonova DevOpss
  • 2. 2 ❑ Bericht über einen spannenden Technologiestack ❑ Use Case einer Super CI / CD Umgebung eines Softwareunternehmens mittlerer Größe ❑ Alle Lösungen in der “Private Cloud” und Open Source (on-premise)On Premise Was erwartet euch?
  • 3. 3 ❑ 350 Angestellte, 2 Standorte, ~250 Entwickler/Ops - Telekom ❑ 1 Operations-, 2 Entwicklungs-Abteilungen ❑ ~35 Projekte gleichzeitig ❑ Projekt 40 Personen -> 5 Personen ❑ ~2500 Build Jobs Infonova Firmenstruktur
  • 4. 4 Infonova Software Entwicklung ❑ Continuous Integration ❑ On-Commit Build, Test, Deploy, Code Quality Analyse ❑ Continuous Delivery ❑ Nightly Deploy Staging System, Integration Test, UI Test, Reports an Entwickler/ Teams
  • 5. 5 DevOpss Team - mit Schreibfehler ❑ Georg Öttl ❑ Klaus Azesberger ❑ Reinhard Kieswetter ❑ Stefan Eder ❑ Alexander Prattes DevOps Antipattern
  • 6. 6 DevOpss Team - mit Schreibfehler ❑ Eigenentwicklungen von Tools (Innovationen) ❑ Unterstützen Entwicklungsprozess von Projektteams ❑ Bereitstellen geteilte Entwicklungsumgebungen / Services ❑ Jenkins, Jira, Confluence, Sonar, Opengrok, ... DevOps Antipattern
  • 7. 7 ❑ Was ist ein Build Environment? ❑ Warum Jenkins? ❑ Opensource Build Server ❑ Große Community ❑ Sehr flexibel Geteilte Build Environments
  • 8. 8 Anforderungen an geteilte Build Environments Flexibel ? Zuverlässig
  • 9. 9 Zuverlässige Build Environments Der katholische Entwickler Entwickler sollen Fehler in Build Environment / Build Server zu 100% ausschließen können!
  • 10. 10 Flexible Build Ressourcen Effizienz, Performance und Kosten
  • 11. 11 Hatten wir das nicht immer schon? Eine kurze Geschichte des Jenkins Build Server (1) ?
  • 12. 12 Hatten wir das nicht immer schon? Eine kurze Geschichte des Jenkins Build Server (2) ❑ Jedes Projekt hatte eigenen Jenkins ❑ Overhead für kleine Projekte zu groß ❑ Globaler Jenkins Master für alle Projekte ❑ Instabil ❑ Globaler Jenkins Master mit slaves auf einer Maschine ❑ Instabil
  • 13. 13 Jenkins Default Build Cluster ❑ Globaler Jenkins Master mit slaves auf eigenständigen VMs
  • 15. 15 ❑ Bei geteilten Build Environments können Seiteneffekte zwischen Builds auftreten ❑ Prozesse bleiben hängen, Festplatte wird voll, Build Artefakte bleiben übrig, Threads bleiben hängen, ... ❑ Aufräum jobs ❑ Prozesse ❑ Files ❑ Reset VM's ❑ Reactivate Slave ❑ …Incident Tickets… Zuverlässig (1)
  • 16. 16 ❑ Jenkins ist keine Tool zum Cluster Management Zuverlässig (2) … note that the slaves are a kind of a cluster, and operating a cluster is always a non-trivial task … Jenkins is not a clustering middleware, and therefore it doesn't make this any easier.
  • 17. On-Demand Jenkins Slave Provisionierung mit Mesos, Docker und Coreos
  • 19. 19 On Demand Jenkins Slave Provisioning
  • 20. 20 Zuverlässig + Flexibel? ❑ Bei geteilten Build Infrastrukturen sorgt Mesos dafür, dass sich die Container nicht in die Quere kommen (kernel Message “sacrifice child”) ❑ Flexibel: Scheduler (jenkins mesos plugin) sucht sich die besten Job Offers heraus, auf denen seine Tasks gestartet werden können ❑ Slaves werden garantiert nur einmal Verwendet (Stefan Eder, Alexander Prattes)
  • 21. 21 Video: Once Only Slaves (Immutable Slaves)
  • 25. 25 ❑ Rest API ❑ Command Line Clients (cinder, glance, nova …) Openstack
  • 26. 26 ❑ Schlankes Betriebssystem ❑ Docker vorinstalliert in aktuellster Version ❑ Auto Update (Deaktiviert) CoreOS
  • 27. 27 ❑ Verwaltet Ressourcen des CoreOS Clusters auf Nodes ❑ Bietet Scheduler Interface für Tasks (Jenkins Slaves) Mesos
  • 28. 28 ❑ DSL, die auf Taskebene lesbar ist ❑ Einfach zu lesen und zu verstehen ❑ Paralleles Ausführen von Konfigurations-Tasks auf Nodes Konfigurationsmanagement mit Ansible
  • 29. 29 On Commit Delivery der Build Infrastruktur
  • 32. 32 Stats Migration erste zwei Wochen ❑
  • 33. 33 ❑ User ❑ Es hat immer funktioniert, ich habe nichts geändert. Jetzt geht es "reproduzierbar" nicht mehr (super) ❑ Wir haben immer genug Ressourcen gehabt, jetzt bricht der Build ab! (super) ❑ Ich muss wirklich fünf Sekunden warten, bis ein build startet? (ne, maximal 2) ❑ Ich musste 15 Minuten warten, bis der Build startet (keine Ressourcen?) ❑ Wow, ich kann jetzt 40 Slaves vom selben Typ parallel starten (super) ❑ Infrastruktur ❑ CoreOS hat sich upgedatet, sollte es aber nicht (nicht gut) ❑ Docker Interfaces haben intern einen anderen tx Buffer als extern (nicht gut) ❑ Docker Cache spinnt (nicht gut) ❑ CoreOS hat bei 50% RAM usage major kernel pagefaults (nicht gut) ❑ Team ❑ Wie kann ich mich mit SSH in einem Docker Container einloggen (geht nicht) ❑ Warum soll ich nicht systemd / ... / im Docker Container verwenden (don’t!) ❑ Etwas unter root user laufen zu lassen, dass mach ich nicht (...) ❑ Jenkins ❑ Überlastung Jenkins Master Netzwerkkomponente (Channels) / Verbindungen bei 0,5 - 1% gekappt ❑ Überlastung Jenkins Master beim Schreiben der Slave Config Erfahrungsberichte zur Migration
  • 34. 34 ❑ Logging mit cadvisor, heapster, influxdb von kubernetes geborgt und unseren Usern zu Verfügung gestellt ❑ Link mit Mesos UI in Internen Schulungen hergezeigt ❑ Chat mit Interessierten eingerichtet (Wichtig!) Antwort: Transparenz
  • 35. 35 ❑ Stabile Builds sind wichtig für eine gut funktionierende CI / CD ❑ Flexibel und dynamisch verwendete Ressourcen sparen Energie und Geld ❑ Habt keine scheu davor Mesos, Coreos und Docker in Produktion zu verwenden. ❑ Wenn es euch etwas bringt Take Away Message
  • 36. 36 Fragen? Georg Öttl georg.oettl@infonova.com Team Lead DevOpss Infonova GmbH Wir suchen MitarbeiterInnen! https://www.infonova. com/en/careers/vacancies/graz/junior-devops-engineer- m-f-.html Danke für die Aufmerksamkeit!