Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DevOps der Triple-E Klasse - Eclipse DemoCamp

979 views

Published on

Maersk Line lässt nicht nur die weltweit größten Schiffe der 'Triple-E' Klasse bauen. Continuous Integration und Delivery in einer ähnlichen Größenordnung mit Hudson, Maven und Tools wie Kokki (ähnlich Puppet oder Chef ) werden dort ebenso praktiziert.
Diese Session gewährt eine kurze Übersicht über Multi-Configuration (Matrix) Job-Typen wie sie in den meisten dieser Projekte genutzt werden. Highlights in einer heterogenen Umgebung, wie man sie in Vielfalt und Umfang sonst fast nur bei großen Anbietern von Public Cloud Lösungen findet.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

DevOps der Triple-E Klasse - Eclipse DemoCamp

  1. 1. DevOps der Triple-E Klasse mit Hudson, Maven, Kokki Multiconf & PyDev Werner Keil Eclipse DemoCamp 2013 Karlsruhe 20. November 2013
  2. 2. 2 © 2012-2013 Creative Arts & Technologies Bilder © Maersk Line und Andere
  3. 3. Fahrplan • Einleitung • Hudson • Automatisierung • Maven • Build • Kokki • Konfiguration • Multiconf • PyDev • Entwicklung • Demo • Q&A 3 © 2012-2013 Creative Arts & Technologies
  4. 4. Stapellauf 4 © 2013 Creative Arts & Technologies Bilder © Maersk Line
  5. 5. Jungfernfahrt 5 © 2013 Creative Arts & Technologies
  6. 6. Was bin Ich? Werner Keil Twitter @wernerkeil • Consultant – Coach • Creative Cosmopolitan • Open Source Evangelist • Software Architect • Java Godfather • UOMo Project Lead • ETCS Guy … Email werner@catmedia.us 6 © 2012-2013 Creative Arts & Technologies
  7. 7. Hudson • Hudson is a powerful and widely used open source continuous integration server providing development teams with a reliable way to monitor changes in source control and trigger a variety of builds. (The Hudson Book) 7 © 2012 Creative Arts & Technologies
  8. 8. Hudson | Downloads 8 © 2012 Creative Arts & Technologies
  9. 9. Hudson | Commits 9 © 2012 Creative Arts & Technologies
  10. 10. Hudson | Job Koordination 10 © 2012-2013 Creative Arts & Technologies
  11. 11. Hudson | Job Koordination im Triple-E Stil 11 © 2012-2013 Creative Arts & Technologies
  12. 12. Hudson | Promovierte Builds 12 © 2012-2013 Creative Arts & Technologies
  13. 13. Hudson DEMO
  14. 14. Maven Evolution der Build Systeme 14 © 2012-2013 Creative Arts & Technologies
  15. 15. Maven “Lean” Anwendung • Nutzen Maven nur für Was es am Besten kann • Dependency Management • Nexus • Managed Environment • Generiert / Gestartet durch Kokki • Konfiguriert via Multiconf • Hudson Plugins • Zabbix Monitoring • Kibana Log Analyse 15 © 2012-2013 Creative Arts & Technologies
  16. 16. Missing Link Erstellen der (Virtuellen) Maschinen 16 © 2012-2013 Creative Arts & Technologies
  17. 17. Viele Virtuelle Maschinen 17 © 2013 Creative Arts & Technologies Bilder © Maersk Line
  18. 18. Virtual Machine Provisionierung Vagrant und Oracle VirtualBox (oder vmware) • Vagrant • Management virtueller Betriebssysteme • Virtual Machine • Oracle VirtualBox • Häufiger • Vmware • Gelegentlich • Linux Container • Weitere Option 18 © 2013 Creative Arts & Technologies
  19. 19. Kokki • Infrastruktur Automation → Configuration Management • Teil des Provisionierungsvorgangs • Bibliothek und einfaches Kommandozeilentool • Bislang keine Client/Server Komponente • Könnte GitHub an Stelle einer Client/Server Komponente nutzen • Alternative zu Puppet/Chef/Cfengine • Implementiert in Python 19 © 2012-2013 Creative Arts & Technologies
  20. 20. Kokki | Begriffe • Kokki ist ein Configuration Management Framework. • Es kann eigenständig oder als Teil eines komplexeren Systems genutzt werden. • Es bedeutet “Koch” in Finnischer Sprache • Environment: Ausführungsumgebung • Resource: Beschreibt eine Datei, Service, Paket, etc.. • Provider: Weiß um das Ausführen von Ressourcen • Kitchen: Container (“Regal”) für Kochbücher • Cookbook: Container für Rezepte und Bibliotheken • Recipe: Gruppe von Resourcedefinitionen • Library: Utility Methoden, Ressourcen und Provider 20 © 2012-2013 Creative Arts & Technologies
  21. 21. Kokki | Beispiel from kokki import * with Environment() as env: Package("vim", action="upgrade") File("/etc/hosts", owner = "root", group = "root", content = "127.0.0.1 localhostn" "255.255.255.255 broadcasthostn" "::1 localhostn" "fe80::1%lo0 localhostn") env.run() 21 © 2012-2013 Creative Arts & Technologies
  22. 22. Kokki++ | Multiconf • Multiconf ist ein Framework zur Beschreibung komplexer Umgebungen mithilfe von Python. • Warum • Es entstand aus dem schlichten Bedarf teils sehr heterogene Java EE Projekte kontinuierlich zu bauen und auszuliefern. • Mittels einer Handvoll Python Scripts und einer Handvoll textueller Property Dateien. • Mit steigender Anzahl Property Dateien stieg naturgemäß auch die Anzahl der notwendigen Scripts… • Aus diesem Dilemma heraus wurde Multiconf geboren. Leider nur 4 Whys 22 © 2012-2013 Creative Arts & Technologies
  23. 23. Multiconf • Wie • Man stelle sich ein Projekt vor, in dem eine stark heterogene Umgebung unterschiedliche Server wie Tomcat, Jetty, JBoss, Websphere, Glassfish oder Weblogic erfordert. • Sie benötigen unterschiedliche Datenbankverbindungen und (mind.) 4 Umgebungen: • Local (eigenes Entwicklergerät) • Dev • Test • Prod • Projekt Konfiguration ist ähnlich auf einigen Umgebungen, aber Irgendwas ist fast immer unterschiedlich. (DB, Ports, Proxies, Log-Dateien, u.dgl.) 23 © 2012 -2013 Creative Arts & Technologies
  24. 24. Multiconf (2) • Was Multiconf nicht ist • Multiconf weiß nicht, von selbst, wie man Umgebungen erstellt • Multiconf weiß nicht, wie es die Bestandteile einer Umgebung erstellen soll • Multiconf hat keinen Exekutor • Perfektes Paar mit Systeme wie Kokki • Selbe Sprache • Erweiterbare Rezepte und Bibliotheken machen Kokki offen für solche Erweiterungen • Was Multiconf ist • Multiconf erlaubt es einen Software “stack” zu definieren und warnt früh genug, wen etwas an dessen Definition fehlerhaft oder unvollständig ist. Andere Tools nutze YAML oder JSON um die Komponenten zu definieren, doch benötigt man dort wieder eine Möglichkeit, diese Einstellungen zu validieren. Multiconf ist Beides - Definition und Validierung. 24 © 2012-2013 Creative Arts & Technologies
  25. 25. Multiconf | JSF Beispiel from javax_faces import ProjectStage from valid_envs import local, dev, test, uat, prod def jsf_stages(): with ProjectStage() as ps: ps.name(local=”Development”, dev=”Development”, test=”UnitTest”, uat=”SystemTest”, prod=”Production”) 25 © 2012 -2013 Creative Arts & Technologies
  26. 26. Multiconf | Autor • Multiconf Autor • Lars Hupfeldt Nielsen • Alles Gute zum Geburtstag, Selma Lagerlöf wünscht „Nils Hupfeldtsson“ 26 © 2013 Creative Arts & Technologies
  27. 27. Multiconf | Eine Inspiration für Java Configuration API • Initiiert von • Oracle • Crédit Suisse • Mit etwas Hilfe u.a. durch den „Java Godfather“ • Entwurf für • Einen Java Specification Request (JSR) bei JCP.org • Siehe: http://java-config.java.net 27 © 2013 Creative Arts & Technologies
  28. 28. PyDev • PyDev ist ein Produkt von Appcelerator, einer Softwarefirma, die Webentwicklern bei der Erstellung plattform-unabhängiger Lösungen für Handy, Tablet oder Desktop unterstützt Gewinner des 2011 Eclipse Award für Best Developer Tool Appcelerator stellt auch Aptana Studio (enthält PyDev) oder Titanium Studio her, beides Eclipsebasierende IDEs für Web and Mobile Plattformen 28 © 2012-2013 Creative Arts & Technologies
  29. 29. PyDev | Code Completion 29 © 2012 Creative Arts & Technologies
  30. 30. PyDev | Code Navigation 30 © 2012 Creative Arts & Technologies
  31. 31. PyDev | Code Coverage 31 © 2012 Creative Arts & Technologies
  32. 32. PyDev | Debugging 32 © 2012 Creative Arts & Technologies
  33. 33. PyDev | Unit Tests 33 © 2012 Creative Arts & Technologies
  34. 34. PyDev DEMO
  35. 35. Zeit zum Plaudern Q&A
  36. 36. Links Kokki https://github.com/samuel/kokki Multiconf https://github.com/lhupfeldt/multiconf PyDev http://www.pydev.org
  37. 37. Links (2) Eclipse – Hudson http://www.eclipse.org/hudson/ Apache Maven http://www.apache.org/maven/ Java Config API http://java-config.java.net
  38. 38. Vielen Dank 38 © 2012-2013 Creative Arts & Technologies Email werner@catmedia.us Twitter @wernerkeil Bilder © Maersk Line

×