continuous deployment in leanix @ bonn agile
Post on 07-Jan-2017
3.497 Views
Preview:
TRANSCRIPT
Green-BlueDeploymentmitDocker,Ansible &Jenkins
AndréChrist,BonnAgileMeetup
Agenda
2
Warum ContinuousDeployment?
Wasmacht unsere Dev-OpsArchitektur aus?
Wie geht es inderPraxis?
Start-upMentality:BuildMinimalViableProducts(“MVP”)
3
VomMVPzum reifen Produkt
4Quelle:InAnlehnung an:@benorama
Elastic
Alle neu entwickelten Funktionen folgenunsererMicroservices Architektur
5
View
Controller
Model
DB
SinglePage App
REST-API
DB
REST-API
FrontendService
BackendMicroservices
InfrastrukturServices
Elastic
Green-BlueDeploymentist zentralerErfolgfaktor unserer Architektur
6
SinglePage App
REST-API
DB
REST-API
1
32 2
1
2
4
32
3
5
Komfortable Anmeldung anallen ServicesviaUnternehmensverzeichnis (AD,LDAP,etc.)
Sichere Kommunikationmit APIs–vonBrowserundzwischen Services.
Einfache Nutzung derAPIsdurch interaktiveDokumentation undgenerierte SDKs.
OAuth2/JWT
SSO(SAML)
Swagger
Docker
Green-BlueDeployment
Konsistente Paketierung undPlattform-unabhängige Auslieferung aller Services.
Kontinuierliches DeploymentundMinimierung vonMaintenance-Zeiten.
Alle: 4 5
x Detailsfolgen
Agenda
7
Warum ContinuousDeployment?
Wasmacht unsere Dev-OpsArchitektur aus?
Wie geht es inderPraxis?
Kontinuierliches DeploymentundMinimierung vonMaintenance-Zeiten
8
5
Load-Balancer(default=blue)
eam1.18
mtm1.0
Export0.8
DB,Index,Queue DB,Elastic
VorteileGreen-Blue
• „Unterbrechungsfreies“Deployment
• TestneuerVersioneninProduktionsumgebung
• SchrittweiserRollout• SchnellesRollbackzualterVersion
Herausforderungen
• MigrationvonDaten-Containern(DB)
• Session-Handling(Re-Loginnotwendig)
Kontinuierliches DeploymentundMinimierung vonMaintenance-Zeiten
9
5
Load-Balancer(default=blue)
eam1.18
eam1.19
mtm1.0
mtm1.1
Export0.8
export0.9
DB,Index,Queue DB,Elastic
Test
VorteileGreen-Blue
• „Unterbrechungsfreies“Deployment
• TestneuerVersioneninProduktionsumgebung
• SchrittweiserRollout• SchnellesRollbackzualterVersion
Herausforderungen
• MigrationvonDaten-Containern(DB)
• Session-Handling(Re-Loginnotwendig)
Kontinuierliches DeploymentundMinimierung vonMaintenance-Zeiten
10
5
Load-Balancer(default=blue)
eam1.18
eam1.19
mtm1.0
mtm1.1
Export0.8
export0.9
DB,Index,Queue DB,Elastic
VorteileGreen-Blue
• „Unterbrechungsfreies“Deployment
• TestneuerVersioneninProduktionsumgebung
• SchrittweiserRollout• SchnellesRollbackzualterVersion
Herausforderungen
• MigrationvonDaten-Containern(DB)
• Session-Handling(Re-Loginnotwendig)
Umsetzung mit drei zentralen Tools
11
“Build,ship,andrundistributedapplications”
“Building/testingsoftwareprojectscontinuously”
“ITautomationenginethatautomatesapplication
deployment,configurationmanagement,….”
ProductionServersUSProductionServersUS
Develop,Build,Test,Deploy-Toolchain
12
Develop Build Test Deploy
StagingServer
ProductionServers Europe
DeveloperMachines
Docker Hub
GitHub Jenkins Ansible
Agenda
13
Warum ContinuousDeployment?
Wasmacht unsere Dev-OpsArchitektur aus?
Wie geht es inderPraxis?
Beispiel:LeanIXWebsite
14
leanix-website leanix-website
postfix redis
nginx
etcdconfdLoad-Balancer
Container
Ressources
Key-ValueStore
UserRequest
Laufende Container
15
$docker ps
16
LIVEDEMO
Somenumbers
17
20 days
3 hours<30min
Effort for setup,learning and trouble shooting forAnsible &Jenkins
Ramp-Up of anew employee until first commit
Timeuntil afresh Serveris setup with allrequiredservices
14 days For changing our Vagrant based environment to docker&docker-compose
Issues
18
• Don’tunderestimateorchestrationeffort(“NewMonolith”)• Green/BlueMarkerinderivedcontainers• Docker Hub(Registry)oftenveryslowintheafternoon• Docker VersionUpdatescanbeveryrisky(KernelIssuewith1.9.1withAUFSFilesystem,requiredtodowngradekernel)
• Manualcleanupneededforunusedcontainersandimages• Largeimagesrequirebandwidthwhenpulled• “Trusted”images– extracheckwhichbaseimagescanbeused
Reading
19
https://blog.codecentric.de/2015/08/case-study-microservices-bei-leanix/
https://github.com/leanix
Backup
20
Komfortable Anmeldung anallen ServicesviaUnternehmensverzeichnis
21
1
A IDM-as-a-ServiceBInterner IDM1
VorteileSSO(SAML)
• SAMLIdentityProvidermittlerweilegutverbreitetinUnternehmen
• EinstandardisierterWeg:sowohl internalsauchexternallesviaSAML
Herausforderungen
• KomplexitätShibbolethundSAML-Spezifikation
• Löstnichtmaschinen-basiertesLogin(„ECP-Workflow“)
ACTIVEDIRECTORYFEDERATION SERVICES(ADFS)
C Kunden IDM
svc.leanix.net/idp
1)IDM=IdentityManagement
Sichere Kommunikation mit APIs–vonBrowserundzwischen Services
22
2
VorteileoAuth2&JWT
• SicherheitsgewinndurchdelegierteAuthentifizierung
• WenigerAbhängigkeiten:Permissions imPayload
• GleicherMechanismusauchzwischenServices
• SignierteTokens lassensichdezentralverifizieren
Herausforderungen
• VerknüpfungmitSAMLnichtstandardisiert
oAuth2ResourceServer
export images …
Token (JWT): eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhbmRyZS5jaH …Expires_in: 3400
BackendMicroservices
PrivateKey
PublicKey
Dezentrale TokenVerifizierung
JWT:Json WebTokens
Json WebTokens(JWT)ist ein Standardfür dasFormatvonTokens
23Debugger:https://jwt.io IETFStandard:https://tools.ietf.org/html/rfc7519
2
24
2 JWTbringt Vorteile insb.bei Skalierungim Vergleich zum “puren”oAuth2
oAuth2ResourceServer
export images …
Token: 31886e3b-dd8f-4b13-9434-…Expires_in: 3400
VerifyToken,GetPayload(Permissions)
BackendMicroservices
oAuth2ResourceServer
export images …
Token (JWT): eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhbmRyZS5jaH …Expires_in: 3400
BackendMicroservices
PrivateKeyPublicKey
A)oAuth2“pur”:Tokensmüssen gegenResourceSerververifiziert werden
B)oAuth2mit “JWT”:Tokenskönnendezentral verifiziert werden mit PublicKey
Einfache Nutzung derAPIdurchinteraktive Doku undgenerierte SDKs
25
3
VorteileSwagger
• Interaktive REST-APIDoku:Operationen direkt imBrowserausführbar
• Immer aktuell,dageneriert aus Quellcode
• Automatische ErzeugungvonSDK’s(z.B.Java,PHP,C#)
à Mehr unter:blog.leanix.net
Konsistente Paketierung undplattformunabhängige Auslieferung
26
Server
HostOS
Hypervisor
GuestOS
Libs
AppA
GuestOS
Libs
AppB
Virtualisation VorteileDocker
• SchnelleresDeployment
• WenigerRessourcen-Verbrauch
• ContainerpassensehrgutzurStrukturvonMicroservices
• Cloud&On-Premise
Herausforderungen
• MaturitätvonTools&Ökosystem
• LinuxKernelbenötigt(Workaroundsz.B.fürWindows&Mac)
VM VM
Server
HostOS
Docker Engine
eam mysql
Libs
Docker
Container Container
solr
Container
Libs
4
Kontinuierliches DeploymentundMinimierung vonMaintenance-Zeiten
27
5
Load-Balancer(default=blue)
eam1.18
eam1.19
mtm1.0
mtm1.1
Export0.8
export0.9
DB,Index,Queue DB,Elastic
Test
VorteileGreen-Blue
• „Unterbrechungsfreies“Deployment
• TestneuerVersioneninProduktionsumgebung
• SchrittweiserRollout• SchnellesRollbackzualterVersion
Herausforderungen
• MigrationvonDaten-Containern(DB)
• Session-Handling(Re-Loginnotwendig)
Ansible Example:Provisionservers
28
# Provisions the frontend servers---- hosts: frontend
sudo: trueroles:- {role: 'init'}- {role: 'docker'}- {role: 'updates'}
provision_server.yml
$ ansible_playbook provision_server.yml –I hosts/prod -v
hosts/prod
[frontend]srv-de-web-1.leanix.netsrv-de-web-2.leanix.net srv-us-web-1.leanix.netsrv-us-web-2.leanix.net
[backend]srv-de-app-1.leanix.netsrv-de-app-2.leanix.net srv-us-app-1.leanix.netsrv-us-app-2.leanix.net
Ansible Example:Configuresystem
29
[…]
- name: Install System Packagesapt: pkg={{ item }} state=latestwith_items: ["curl", "wget", "python-software-properties", "software-properties-
common", "daemon", "supervisor"]
- name: German kbcommand: loadkeys dechanged_when: false
- name: Set hostname on boot to short name from inventory listtemplate: src=hostname.j2 dest=/etc/hostname owner=root group=root mode=0644register: hostname_file
[…]
roles/init/tasks/main.yml
Ansible Example:Deployservice
30
[…]
- name: Start leanix synclog Docker containershell: docker run -d
--name {{ item.1.name }}-p {{ ansible_eth1.ipv4.address }}:{{ item.1.synclog_port }}:{{SERVICE_PORT }}-e SERVICE=synclog-e PROXY_SERVICE={{ PROXY_SERVICE }}-e SWAGGER_BASEPATH={{ SWAGGER_BASEPATH }}leanix/leanix-synclog
with_indexed_items: SYNCLOG_SERVICESwhen: synclog_running.results[{{ item.0 }}].rc != 0
[…]
roles/init/tasks/main.yml
Monitoring
31ELK=ElasticLogstash Kibana
Availability
Performance
Logfiles
Service Description
• Everymicroservicehasahealth-checkURL• AvailabilityCheck&ResponseTime
• ServerMetrics:CPU,Memory,etc.• Docker MetricsperContainer:CPU,Mem,…• BrowserMetrics:PageLoad,JSErrors
• Centralstorage for logfiles• Similar for ELK-Stack,butas aService
Alerting• Singlepoint for allalerts• Informs operations managers onduty
Dashboard• Dashboardwhich shows main KPIs• Running onScreensinLeanIXOffice
Geckoboard Dashboard
32Source:Geckoboard
top related