Build & Deployment
von Microservices
mit GitLab CI
Christine Koppelt
[email protected]
Philipp Haußleiter
[email protected]
Code Days München, 08.02.2018
Slide 2
Slide 2 text
Continuous
Integration (CI) &
Microservices
Slide 3
Slide 3 text
Continuous Integration (CI)
Source
Repository
CI Server
Server mit
Anwendung
Entwicklungsteam
Sourcecode Deploybare
Anwendung
Feedback
Slide 4
Slide 4 text
Microservices
● Mehrere eigenständige Services bilden ein Gesamtsystem
○ Unterteilt nach Bounded Contexts (Domain Driven Design)
○ Eigenständige Anwendungen (Frontend, Backend, Datenhaltung)
○ Eigenständig deploybare Einheiten
● Eigenständige Entwicklungsteams
○ Komplette Verantwortung für einen Service
○ Extremfall: “You build it you run it”
○ Freiheiten bei technischen und organisatorischen Entscheidungen
Slide 5
Slide 5 text
Microservices & CI
Branches
Datenbanken
Messaging
Testinfrastruktur
Mehrere
Services
Unterschiedliche
Buildtools
Mehrere
Plattformen
Mehrere
Versionen
Deployment-
reihenfolge
Docker-basierte
Deployments
A/B Testing
Unterschiedliche
Entwicklungs-
prozesse
Microservices
Slide 6
Slide 6 text
Microservices & Infrastruktur
DO
Entkopplung Infra-Team und Entwicklung
Eigenständige Konfiguration von Build, Test und Deployment
Kapselung der Buildumgebung
Eigenständige Konfiguration der Projektmanagement-Tools
Eigenständige Konfiguration von Staging Umgebungen
Slide 7
Slide 7 text
DON’T
Modifikation der Konfiguration des CI Servers für einzelne Projekte
Adminrechte für Entwickler
Langwierige Abstimmungen zwischen Infra-Team und Entwicklung
Globale Workflow-Definitionen im Issue Tracker
Microservices & Infrastruktur
Slide 8
Slide 8 text
Self
Service
Slide 9
Slide 9 text
Jenkins
Slide 10
Slide 10 text
Jenkins
● Verschiedene Wege Jobs zu erstellen:
GUI, Job DSL, Pipeline
● Viele Plugins
● Groovy
● Bauen von Merge Requests und Branches?
● Bauen mit Docker?
=> möglich, aber manuelle Anpassung notwendig
● Issue Tracker?
Slide 11
Slide 11 text
GitLab
Slide 12
Slide 12 text
GitLab Features
● Issue Tracker integriert
● Bauen von Merge Requests und Branches integriert
● Anlegen von Jobs über eine deklarative Konfiguration mittels Yaml
● Builds innerhalb Docker
=> Sinnvolle Konventionen, modularer Ansatz
Slide 13
Slide 13 text
GitLab Übersicht
● Gestartet als webbasierter Git Repository Manager
● CI Pipelines seit 2016
● Mittlerweile: Umfangreiche Softwareentwicklungssuite
○ Epics bis Deployment
● On Premise Edition
○ Libre (ehemals Community Edition CE)
○ Starter
○ Premium (ehemals Enterprise Edition EE)
○ Ultimate
● Cloud Version: gitlab.com