SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Continuous Delivery in Enterprise Environments
using Docker, Ansible and Jenkins_
Dennis Schulte, Marcel Birkner
codecentric AG
2
Our Project Experience
3
Our experiences using Docker_
4
Build/Test/Deployment
Infrastructure
Getting Started with Docker
JBoss / Java EE
Standardization, Conformity, Compliance
(Security)
Dashboard
Microservices, Lightweight, Technology
Flexibility
Greenfield Enterprise Speed, Flexibility, Duplicated Environments
20 % Learning / using new technologies
Our experiences using Docker_
5
Build/Test/Deployment
Infrastructure
Getting Started with Docker
JBoss / Java EE
Standardization, Conformity, Compliance
(Security)
Dashboard
Microservices, Lightweight, Technology
Flexibility
Greenfield Enterprise Speed, Flexibility, Duplicated Environments
20 % Learning / using new technologies
JBoss / Java EE_
CI/CD Pipeline
Jenkins GitLab SonarQube Nexus SeleniumHub
Backend
DB2
ERP
LDAP
IMS
Applications
JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE
JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE
JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE
JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE
Platform
VMWareVagrant
Our experiences using Docker_
7
Build/Test/Deployment
Infrastructure
Getting Started with Docker
JBoss / Java EE
Standardization, Conformity, Compliance
(Security)
Dashboard
Microservices, Lightweight, Technology
Flexibility
Greenfield Enterprise Speed, Flexibility, Duplicated Environments
20 % Learning / using new technologies
Platform
CI/CD Pipeline
Jenkins
GitHub EE
SonarQube Nexus SeleniumHub
Backend
JIRA
WordPress
Xing
IMS
OpenStack
Dashboard_
Application
ReactJS Spring Boot Cassandra Spring Boot
AngularJS Scala Postgres Spring Boot
Static HTML NodeJS SpringBatch Keycloak
Neo4J JBoss EE NginxReactJS
Our experiences using Docker_
9
Build/Test/Deployment
Infrastructure
Getting Started with Docker
JBoss / Java EE
Standardization, Conformity, Compliance
(Security)
Dashboard
Microservices, Lightweight, Technology
Flexibility
Greenfield Enterprise Speed, Flexibility, Duplicated Environments
20 % Learning / using new technologies
Greenfield Enterprise_
Application
ReactJS Spring Boot DB2
SpringBatch
PostgresNginx
HSQL
SpringBatch
SpringBatch
SpringBatch
SpringBatch
SpringBatch
SpringBatch
SpringBatch
Spring Boot
Spring Boot
Admin
Platform
OpenStack
Backend
WebServices
Oracle
SAP
LDAP
Vagrant VMWare
CI/CD Pipeline
Jenkins
GitHub EE
SonarQube Nexus SeleniumHub
INFRASTRUCTURE AS CODE
11
12
WRITE, PLAN, AND CREATE
INFRASTRUCTURE AS CODE
13
OpenStack
AWS
VMWare
Platform
Compute
Instances
Compute
Instances
Compute
Instances
Compute
Instances
JBoss EE
Spring Boot
ReactJS
Neo4j
Infrastructure Automation_
Terraform :: Define Region & SSH Key Pair_
14
Terraform :: Define Security Group_
15
Terraform :: Define Resource_
16
Terraform :: Roll out_
•terraform plan
•terraform apply
17
18
APP DEPLOYMENT, CONFIGURATION
MANAGEMENTAND ORCHESTRATION
Ansible :: CD Infrastructure Provisioning_
•ansible-playbook site.yml
19
CI/CD Pipeline
Jenkins GitLab SonarQube Nexus SeleniumHub
Ansible :: Jenkins Role (directory listing)_
20
Ansible :: Jenkins Role (Ansible Task Excerpt)_
21
Ansible :: Application Provisioning_
•ansible-playbook site.yml
22
Application
ReactJS Spring Boot Postgres
Ansible :: Spring Boot Role (excerpt)_
23
Ansible :: Application Deployment_
•ansible-playbook deploy-example-application.yml

--extra-vars "version=1.0.0"
•ansible-playbook undeploy-example-application.yml
24
ReactJS Spring Boot Postgres
25
Ansible :: Infrastructure Repository :: Inventory & Playbooks_
Ansible Playbooks & Settings
{Environment specific settings
{
Continuous Delivery
using Docker
26
Software Development Process_
27
Developer
GitLab Jenkins
SonarQube
Nexus
Build and Release
SeleniumHub
Docker Registry
Deployment
Jenkins
GitLab
Staging
Spring Boot
Test
Spring Boot
Prod
Spring Boot
Dev
Spring Boot
Live Demo
28
29
Jenkins :: Docker Images Build Jobs_
30
Jenkins :: Example App Build & Deploy Jobs_
31
Jenkins :: Application Deployment Job_
32
Jenkins :: Example Spring Boot Application_
Demo End
33
Docker :: Image Hierarchy_
34
centos:7
jre:8jdk:8
jenkins-master:LTS example-application:
1.0.0
nexus:LTS sonarqube:LTS example-application:
1.0.0
example-application:
1.0.0
example-application:
1.0.0
example-application:
1.0.0
Docker :: JRE & Example Application Dockerfile_
35
jre:8
example-application:
1.0.0
Docker :: Image Hierarchy :: JBoss Migration_
rhel:7.2
jre:8jdk:8
jenkins-master:LTS eap:6.4nexus:LTS sonarqube:LTS
jboss-application:
1.0.0
jboss-application:
1.1.0
jboss-application:
1.2.0
Docker :: EAP Dockerfile_
37
eap:6.4
Docker :: JBoss Dockerfile_
38
jboss-application:1.0.0
Best Practices
39
•Everything is in version control
•Use Ansible inventory for environment specific information
•Use Ansible Vault for secure storage for passwords
•Generate Jenkins Jobs automatically via Job DSL
• GitLab REST API
•One Click Release & Deployments
Best practices_
40
Automate Everything
•All application run in Docker container
•Environment independent Docker images
•Use latest OS version (recent Kernel)
•Use fixed Docker / Ansible versions
•Have a clone of every system for testing new versions
• incl. CI/CD Pipeline
•Create User / Group (uid/gid) per Application Type
• required for volume mount permissions
•Do not run Docker Container under root!
Docker_
41
Stable Docker Setup
42
•Company Proxies
• HTTPs / Man-in-the-Middle
•Self-signed Certificates (HTTPs)
•Freedom to spin up servers using Terraform
•Automate network configuration
•Keynote
• Jean-Jacques van Oosten: "Do not compromise!"
Enterprise Environments_
43
Typical problems
44
“Thanks for your attention.”
45
Marcel Birkner,
Software-Consultant
codecentric AG
Hochstraße 11
42697 Solingen, Deutschland
marcel.birkner@codecentric.de
www.codecentric.de
blog.codecentric.de
marcelbirkner
Senior IT-Consultant
codecentric AG
Hochstraße 11
42697 Solingen, Deutschland
dennis.schulte@codecentric.de
www.codecentric.de
blog.codecentric.de
denschu
Dennis Schulte,

Mais conteúdo relacionado

Mais procurados

What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
Simplilearn
 

Mais procurados (20)

Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
Devops Strategy Roadmap Lifecycle Ppt Powerpoint Presentation Slides Complete...
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Infrastructure as Code on Azure: Show your Bicep!
Infrastructure as Code on Azure: Show your Bicep!Infrastructure as Code on Azure: Show your Bicep!
Infrastructure as Code on Azure: Show your Bicep!
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
 
Jenkins
JenkinsJenkins
Jenkins
 
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
Introduction to react-query. A Redux alternative? (Nikos Kleidis, Front End D...
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
 
Deploy Application on Kubernetes
Deploy Application on KubernetesDeploy Application on Kubernetes
Deploy Application on Kubernetes
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
From Zero to Docker
From Zero to DockerFrom Zero to Docker
From Zero to Docker
 
Using Azure DevOps to continuously build, test, and deploy containerized appl...
Using Azure DevOps to continuously build, test, and deploy containerized appl...Using Azure DevOps to continuously build, test, and deploy containerized appl...
Using Azure DevOps to continuously build, test, and deploy containerized appl...
 
The Power of Azure DevOps
The Power of Azure DevOpsThe Power of Azure DevOps
The Power of Azure DevOps
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 

Semelhante a Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins

Docker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualizationDocker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualization
Suresh Balla
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and Deployit
XebiaLabs
 

Semelhante a Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins (20)

Jenkins & IaC
Jenkins & IaCJenkins & IaC
Jenkins & IaC
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
 
SwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxSwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptx
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdf
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
 
Continuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECSContinuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECS
 
Linuxing in London: Docker Intro Workshop
Linuxing in London: Docker Intro WorkshopLinuxing in London: Docker Intro Workshop
Linuxing in London: Docker Intro Workshop
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
 
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
Docker Jenkins Pipeline Tutorial | Microservices Using Docker & Jenkins | Dev...
 
Architect your app modernization journey with containers on Microsoft Azure
Architect your app modernization journey with containers on Microsoft AzureArchitect your app modernization journey with containers on Microsoft Azure
Architect your app modernization journey with containers on Microsoft Azure
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
 
Docker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualizationDocker, a new LINUX container technology based light weight virtualization
Docker, a new LINUX container technology based light weight virtualization
 
Exploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in PythonExploring MySQL Operator for Kubernetes in Python
Exploring MySQL Operator for Kubernetes in Python
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
 
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB201904_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
 
Unleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudUnleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket Cloud
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and Deployit
 
Enhance your Agility with DevOps
Enhance your Agility with DevOpsEnhance your Agility with DevOps
Enhance your Agility with DevOps
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 

Último

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 

Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins

  • 1. Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins_ Dennis Schulte, Marcel Birkner codecentric AG
  • 2. 2
  • 4. Our experiences using Docker_ 4 Build/Test/Deployment Infrastructure Getting Started with Docker JBoss / Java EE Standardization, Conformity, Compliance (Security) Dashboard Microservices, Lightweight, Technology Flexibility Greenfield Enterprise Speed, Flexibility, Duplicated Environments 20 % Learning / using new technologies
  • 5. Our experiences using Docker_ 5 Build/Test/Deployment Infrastructure Getting Started with Docker JBoss / Java EE Standardization, Conformity, Compliance (Security) Dashboard Microservices, Lightweight, Technology Flexibility Greenfield Enterprise Speed, Flexibility, Duplicated Environments 20 % Learning / using new technologies
  • 6. JBoss / Java EE_ CI/CD Pipeline Jenkins GitLab SonarQube Nexus SeleniumHub Backend DB2 ERP LDAP IMS Applications JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE JBoss EE JBoss EEJBoss EE JBoss EE JBoss EE Platform VMWareVagrant
  • 7. Our experiences using Docker_ 7 Build/Test/Deployment Infrastructure Getting Started with Docker JBoss / Java EE Standardization, Conformity, Compliance (Security) Dashboard Microservices, Lightweight, Technology Flexibility Greenfield Enterprise Speed, Flexibility, Duplicated Environments 20 % Learning / using new technologies
  • 8. Platform CI/CD Pipeline Jenkins GitHub EE SonarQube Nexus SeleniumHub Backend JIRA WordPress Xing IMS OpenStack Dashboard_ Application ReactJS Spring Boot Cassandra Spring Boot AngularJS Scala Postgres Spring Boot Static HTML NodeJS SpringBatch Keycloak Neo4J JBoss EE NginxReactJS
  • 9. Our experiences using Docker_ 9 Build/Test/Deployment Infrastructure Getting Started with Docker JBoss / Java EE Standardization, Conformity, Compliance (Security) Dashboard Microservices, Lightweight, Technology Flexibility Greenfield Enterprise Speed, Flexibility, Duplicated Environments 20 % Learning / using new technologies
  • 10. Greenfield Enterprise_ Application ReactJS Spring Boot DB2 SpringBatch PostgresNginx HSQL SpringBatch SpringBatch SpringBatch SpringBatch SpringBatch SpringBatch SpringBatch Spring Boot Spring Boot Admin Platform OpenStack Backend WebServices Oracle SAP LDAP Vagrant VMWare CI/CD Pipeline Jenkins GitHub EE SonarQube Nexus SeleniumHub
  • 12. 12 WRITE, PLAN, AND CREATE INFRASTRUCTURE AS CODE
  • 14. Terraform :: Define Region & SSH Key Pair_ 14
  • 15. Terraform :: Define Security Group_ 15
  • 16. Terraform :: Define Resource_ 16
  • 17. Terraform :: Roll out_ •terraform plan •terraform apply 17
  • 19. Ansible :: CD Infrastructure Provisioning_ •ansible-playbook site.yml 19 CI/CD Pipeline Jenkins GitLab SonarQube Nexus SeleniumHub
  • 20. Ansible :: Jenkins Role (directory listing)_ 20
  • 21. Ansible :: Jenkins Role (Ansible Task Excerpt)_ 21
  • 22. Ansible :: Application Provisioning_ •ansible-playbook site.yml 22 Application ReactJS Spring Boot Postgres
  • 23. Ansible :: Spring Boot Role (excerpt)_ 23
  • 24. Ansible :: Application Deployment_ •ansible-playbook deploy-example-application.yml
 --extra-vars "version=1.0.0" •ansible-playbook undeploy-example-application.yml 24 ReactJS Spring Boot Postgres
  • 25. 25 Ansible :: Infrastructure Repository :: Inventory & Playbooks_ Ansible Playbooks & Settings {Environment specific settings {
  • 27. Software Development Process_ 27 Developer GitLab Jenkins SonarQube Nexus Build and Release SeleniumHub Docker Registry Deployment Jenkins GitLab Staging Spring Boot Test Spring Boot Prod Spring Boot Dev Spring Boot
  • 29. 29 Jenkins :: Docker Images Build Jobs_
  • 30. 30 Jenkins :: Example App Build & Deploy Jobs_
  • 31. 31 Jenkins :: Application Deployment Job_
  • 32. 32 Jenkins :: Example Spring Boot Application_
  • 34. Docker :: Image Hierarchy_ 34 centos:7 jre:8jdk:8 jenkins-master:LTS example-application: 1.0.0 nexus:LTS sonarqube:LTS example-application: 1.0.0 example-application: 1.0.0 example-application: 1.0.0 example-application: 1.0.0
  • 35. Docker :: JRE & Example Application Dockerfile_ 35 jre:8 example-application: 1.0.0
  • 36. Docker :: Image Hierarchy :: JBoss Migration_ rhel:7.2 jre:8jdk:8 jenkins-master:LTS eap:6.4nexus:LTS sonarqube:LTS jboss-application: 1.0.0 jboss-application: 1.1.0 jboss-application: 1.2.0
  • 37. Docker :: EAP Dockerfile_ 37 eap:6.4
  • 38. Docker :: JBoss Dockerfile_ 38 jboss-application:1.0.0
  • 40. •Everything is in version control •Use Ansible inventory for environment specific information •Use Ansible Vault for secure storage for passwords •Generate Jenkins Jobs automatically via Job DSL • GitLab REST API •One Click Release & Deployments Best practices_ 40 Automate Everything
  • 41. •All application run in Docker container •Environment independent Docker images •Use latest OS version (recent Kernel) •Use fixed Docker / Ansible versions •Have a clone of every system for testing new versions • incl. CI/CD Pipeline •Create User / Group (uid/gid) per Application Type • required for volume mount permissions •Do not run Docker Container under root! Docker_ 41 Stable Docker Setup
  • 42. 42
  • 43. •Company Proxies • HTTPs / Man-in-the-Middle •Self-signed Certificates (HTTPs) •Freedom to spin up servers using Terraform •Automate network configuration •Keynote • Jean-Jacques van Oosten: "Do not compromise!" Enterprise Environments_ 43 Typical problems
  • 44. 44
  • 45. “Thanks for your attention.” 45 Marcel Birkner, Software-Consultant codecentric AG Hochstraße 11 42697 Solingen, Deutschland marcel.birkner@codecentric.de www.codecentric.de blog.codecentric.de marcelbirkner Senior IT-Consultant codecentric AG Hochstraße 11 42697 Solingen, Deutschland dennis.schulte@codecentric.de www.codecentric.de blog.codecentric.de denschu Dennis Schulte,