Continuous everything

40
Continuous Everything Development, Integration, Deployment, DevOps Peter Hormanns cusy GmbH, Berlin Vortrag | Linuxday Dornbirn | 26. November 2016 de.slideshare.net/cusyio/continuous-everything

Transcript of Continuous everything

Page 1: Continuous everything

Continuous EverythingDevelopment, Integration, Deployment, DevOps

Peter Hormanns cusy GmbH, Berlin Vortrag | Linuxday Dornbirn | 26. November 2016 de.slideshare.net/cusyio/continuous-everything

Page 2: Continuous everything

Kapitelyou + me + cusy

Herzlich Willkommen

Page 3: Continuous everything

Peter Hormanns• Java Developer

• DevOps

• Free Software Consultant

you + me + cusy

Page 4: Continuous everything

you + me + cusy

cusy.io– SaaS – Software as a Service – Spezialisierung auf Entwickler-Werkzeuge – Datenschutz nach deutschem / europäischem Recht

Page 5: Continuous everything

Agenda

– Vorstellung und Agenda – Die Idee Continuous Delivery und Continuous

Deployment – Werkzeuge für Continuous Delivery und

Continuous Deployment – Die Werkzeuge im Beispielprojekt – Diskussion

Page 6: Continuous everything

Motivation

Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufriedenzustellen.

Erstes Prinzip des agilen Manifests (2001)

» «

Continuous Everything

Page 7: Continuous everything

Herausforderungen

Development Operations kontinuierliche Änderung Stabilität Iterationen (2 pro Monat) Releases (2 pro Jahr) Infrastrukturtests Funktionalitätstests !

Continuous Everything

Page 8: Continuous everything

DevOps: Continuous Everything

Continuous Everything

Page 9: Continuous everything

DevOps: Continuous Everything

Continuous Everything

Page 10: Continuous everything

DevOps: Continuous Everything

Continuous Everything

Page 11: Continuous everything

DevOps: Continuous Everything

Continuous Everything

Page 12: Continuous everything

DevOps: Continuous Everything

Continuous Everything

Page 13: Continuous everything

Worum geht es?

In einem Continuous Integration Projekt mergen und commiten alle Entwickler kontinulierlich ihren Arbeitsfortschritt in einen gemeinsamen Branch.

CI-Werkzeuge stellen sicher, dass alle Änderungen valide und releasefähig sind.

Continuous Everything

Page 14: Continuous everything

Continuous Integration Regeln

– jeder Entwickler integriert seine Änderungen mindestens täglich

Continuous Everything

Page 15: Continuous everything

Continuous Integration Regeln

– jeder Entwickler integriert seine Änderungen mindestens täglich

– jeder Push wird durch Build und Tests verifiziert

Continuous Everything

Page 16: Continuous everything

Continuous Integration Regeln

– jeder Entwickler integriert seine Änderungen mindestens täglich

– jeder Push wird durch Build und Tests verifiziert – unfertiger Code bleibt aussen vor (Developer- oder

Feature-Branch)

Continuous Everything

Page 17: Continuous everything

Continuous Integration Regeln

– jeder Entwickler integriert seine Änderungen mindestens täglich

– jeder Push wird durch Build und Tests verifiziert – unfertiger Code bleibt aussen vor (Developer- oder

Feature-Branch) – fehlerhafte Builds werden sofort repariert oder

die Änderung wird verworfen

Continuous Everything

Page 18: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

Continuous Everything Toolchain

– Projektmanagement, Backlog – Dokumentation, Wiki

Page 19: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

– Entwicklung und Code-Review – Versionskontrolle

Continuous Everything Toolchain

Page 20: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

– Continuous Integration, Build-Werkzeuge – Developer-Test-Automatisierung

Continuous Everything Toolchain

Page 21: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

– Continuous-Integration, Testautomatisierung – Integrationstests – Akzeptanztests

Continuous Everything Toolchain

Page 22: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

– Paketierung – Pre-Deployment-Staging – Release-Automatisierung

Continuous Everything Toolchain

Page 23: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

– Konfiguration – Production-Staging – Infrastruktur als Code

Continuous Everything Toolchain

Page 24: Continuous everything

plan code build test release deploy operate

DevOps Toolchain

– Logging – Exception-Handling – Performance-Monitoring – Service-Desk

Continuous Everything Toolchain

Page 25: Continuous everything

plan code build test release deploy operate

Dokumenten-

management

&RQὮXHQFH

Projekt-

management

-LUD�6RIWZDUH

Code Review

*HUULW

Versions-

verwaltung

Gitblit

Build Continuous

Integration

Release

&RQὭJXUDWLRQ

$QVLEOH

Helpdesk

-LUD�6HUYLFH�'HVN

Deploy

Webanalyse

3LZLN

Log-Management

& Analyse

6HQWU\

-HQNLQV

cusy Lifecycle Werkzeuge

Continuous Everything Toolchain

Page 26: Continuous everything

Unsere Situation

– Am Projekt arbeitet ein kleines verteiltes Team (zwei bis drei Entwickler)

– mehrere kleine Software-Komponenten – wir bieten eine DevOps Plattform an

→ eat your own dog food !

Continuous Everything Toolchain

Page 27: Continuous everything

Anforderungen an Continuous Integration

!

!

– Alle Änderungen nachvollziehbar – Einfacher Git-Workflow – Automatische Tests

– Entwickler- (=Unit-)Tests – Integrations-/Akzeptanztest !

Continuous Everything Toolchain

Page 28: Continuous everything

Anforderungen an Continuous Delivery

!

!

– Release-Tagging im Git – automatisiertes Packaging – automatisierte Konfiguration – automatisiertes Deployment

Continuous Everything Toolchain

Page 29: Continuous everything

Lösungen

– Git Self-Hosting Gitblit mit grafischer Oberfläche – Maven Projekt- und Build-Tool mit Plugins – Jenkins Contiuous Integration Server – Ansible als Deployment-Automatisierung für DevOps

Continuous Everything Toolchain

Page 30: Continuous everything

Lösungen – Gitblit

Freie Alternative („self-hosted“) zu Github – 2005 Linux Kernel Entwickler entwickeln Git als

Alternative zu BitKeeper – 2008 Github wird gegründet – 2009 JGit - Git Implementierung in reinem Java – seit 2011 kontinulierliche Entwicklung von Gitblit

durch James Moger – Alternativen Gitolite, Gitlab, Gogs

Continuous Everything Toolchain

Page 31: Continuous everything

Lösungen – Maven

Java Build Automation – 2000 Apache Ant, eine Art „make für Java-Projekte“ – 2004 erstes Maven Release

– vorgegebene Projektstruktur – Verwaltung von Abhängigkeiten – Repositories für Build-Artefakte – Plugin-Architektur

Continuous Everything Toolchain

Page 32: Continuous everything

Lösungen – Jenkins CI

Continuous Integration – 2001 Agiles Manifest: Continuous Integration – 2005 Hudson 1.0 – 2010 im Januar übernimmt Oracle Sun Microsystems – 2010/2011 Jenkins forks – 2016 Jenkins 2.0 – Alternativen: Gitlab CI, Travis CI (Webservice), Bamboo

(proprietär)

Continuous Everything Toolchain

Page 33: Continuous everything

Lösungen – Ansible

Configurationmanagement, Infrastructure as Code – 1993 CFEngine – 2005 Puppet – 2012 Ansible: „DevOps“ ohne root-Rechte !

Continuous Configuration Automation

Continuous Everything Toolchain

Page 34: Continuous everything

Continuous Configuration Automation!

!

Die Werkzeuge in der Praxis (Beispielprojekt)

Continuous Everything Tools Demo

Page 35: Continuous everything

Development/Testing

Production Development/Testing Production

Infrastructure

Applications

Infrastructure

Applications

Developers Operators

Infrastructure

ApplicationsDevelopers

Operators

DevOps-Schnittstelle

DevOps-Schnittstelle

Page 36: Continuous everything

Development/Testing

Production Development/Testing Production

Infrastructure

Applications

Infrastructure

Applications

Developers Operators

Infrastructure

ApplicationsDevelopers

Operators

DevOps-Schnittstelle

DevOps-Schnittstelle

Page 37: Continuous everything

Development/Testing

Production Development/Testing Production

Infrastructure

Applications

Infrastructure

Applications

Developers Operators

Infrastructure

ApplicationsDevelopers

Operators

DevOps-Schnittstelle

DevOps-Schnittstelle

Page 38: Continuous everything

Fragen und Diskussion

Ich freue mich auf Eure Fragen, Ideen und Diskussionsbeiträge.

Page 40: Continuous everything

Bildnachweise– droidcon Berlin 2015 – Hackathon; cc BY-SA 2.0: droidcon Global – Peter Hormanns – Cusy-Messestand; Veit Schiele – Michael Gernhardt in space during STS-69 in 1995; PUBLIC DOMAIN: NASA