SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
Continuous
Delivery
in Java
Cose che abbiamo imparato
facendoci del male
Codemotion Milano ‘15
@pdincau
Here We Are
@pierodibello
Continuous Delivery?
What is
“Continuous Delivery is a software development discipline where you
build software in such a way that the software can be released to
production at any time.”
Martin Fowler*
* martinfowler.com/bliki/ContinuousDelivery.html
“Continuous Delivery is nothing more than reducing the
stress you get when you deliver business value to the customer ”
My Team*
* Come and ask!
n t
Continuous Delivery...
What is
Continuous Integration
Continuous Deployment
“Safety” Deploy rules
Technically
Speaking
Deploy any specific working version to
production with confidence
3 ways
Rodeo Style
No tests
Manual deploy
Snowflake environments
Non predictable outcome
Few or very little collaboration
Rodeo Style
By the book
Fast Feedback
Done is released
Shared responsibility
Everything is automated
Repeatable and reliable process
Start small and iterate
Once upon
a time...
We did know...
Previous deployment process was painful
Database continuously change
Different environments
Iterationn.1
No
Automation
Environment replica on AWS
Manual build
Manual DB migrations
Deploy with scp to remote JBoss
It was our
own choice...
...but we felt like this
No automation at all
When was our last deploy?
A taste of
Automation
Iterationn.2
Set up a basic Jenkins installation
Test and build triggered on push
DB migration using Liquibase
Task to deploy on AWS
This worked for a while
Errors in MyBatis DB mappers
Wrong/Missing wirings
Meanwhile...
Yay! Environments are ready!
Deploy
Everywhere
Iterationn.3
New Jenkins job to run integration tests
Track slowest tests
First official deploy an all environments
…with different DB drivers !#$?!
Duplication
Incorrect use of mvn profiles
N-builds for N-environments
Long build and deploy time
Single
Artefact
Iterationn.4
Got rid of configurations using JBoss
*Unique* artefact for all environments
Deploy version X.Y.Z from Nexus
We started getting fast
But QA were not so happy
Branches, branches everywhere!
Make
them happy
Iterationn.5
An environment for QA
Tags over branches
Track deployed version
Devs love QAs
Acceptance tests
Explained values and
motivations to Product Owner
Self-service deploy
Remove Candidate
Clean Up
Clean Up
Build it...
Migrate
!
Database
Fetch
Unit Tests
Build
Build
Integration Test
!
Integration
Deploy
Publish
UAT
QA and Publish
Frontend Angular
!
Web
...and deliver it
Deploy ESB
!
ESB
Deploy staging
!
Deploy Staging
Deploy API
Deploy Core
Backend
Migrate
!
Database
Things we are
experimenting
Parallelization
Environments Provisioning
Jenkins under git
Squash migrations to snapshot
What we would do
differently...
Pipeline with “placeholders”
Extract configurations asap
Explain at the beginning the values behind
Things we will keep
doing...
Build the pipeline iteratively
Share pipeline responsibility
Use the tool that best fit your needs
Recommended reading
Take a look at these
Real-World Strategies for Continuous Delivery
with Maven and Jenkins
https://www.youtube.com/watch?v=McTZtyb9M38
Visualizations of Continuous Delivery
http://continuousdelivery.com/2014/02/visualizations-of-continuous-delivery/
That’s all!
@pdincau@pierodibello
https://creativecommons.org/licenses/by-nc-sa/3.0/
Thanks!

Contenu connexe

Tendances

Tendances (20)

Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
Configuration as Code in Bamboo
Configuration as Code in BambooConfiguration as Code in Bamboo
Configuration as Code in Bamboo
 
e2e testing with cypress
e2e testing with cypresse2e testing with cypress
e2e testing with cypress
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous Integration at T3CON08
Continuous Integration at T3CON08Continuous Integration at T3CON08
Continuous Integration at T3CON08
 
Just kill it
Just kill itJust kill it
Just kill it
 
Merge hells!! feature toggles to the rescue
Merge hells!! feature toggles to the rescueMerge hells!! feature toggles to the rescue
Merge hells!! feature toggles to the rescue
 
Walking Skeleton
Walking SkeletonWalking Skeleton
Walking Skeleton
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 
Agile Testing
Agile TestingAgile Testing
Agile Testing
 
Dockerizing react app
Dockerizing react appDockerizing react app
Dockerizing react app
 
Cypress report
Cypress reportCypress report
Cypress report
 
End to end test automation with cypress
End to end test automation with cypressEnd to end test automation with cypress
End to end test automation with cypress
 
Continuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was badContinuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was bad
 
Modern devOps with Docker
Modern devOps with DockerModern devOps with Docker
Modern devOps with Docker
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous Integration - What even is it?
Continuous Integration - What even is it?Continuous Integration - What even is it?
Continuous Integration - What even is it?
 

En vedette

DisposaCone B2B Offer
DisposaCone B2B OfferDisposaCone B2B Offer
DisposaCone B2B Offer
DisposaCone
 
Certificate Barista
Certificate BaristaCertificate Barista
Certificate Barista
Nuno Silva
 
“La educación en la familia”
“La educación en la familia”“La educación en la familia”
“La educación en la familia”
Alma Malagon
 

En vedette (13)

Bib Manager Tutorial
Bib Manager TutorialBib Manager Tutorial
Bib Manager Tutorial
 
Informatyka
InformatykaInformatyka
Informatyka
 
AAM 205th
AAM 205thAAM 205th
AAM 205th
 
DisposaCone B2B Offer
DisposaCone B2B OfferDisposaCone B2B Offer
DisposaCone B2B Offer
 
Certificate Barista
Certificate BaristaCertificate Barista
Certificate Barista
 
Mobile Ad Study
Mobile Ad StudyMobile Ad Study
Mobile Ad Study
 
“La educación en la familia”
“La educación en la familia”“La educación en la familia”
“La educación en la familia”
 
Лук и стрелы (ситуационный расклад с картами "1000 идей")
Лук и стрелы (ситуационный расклад с картами "1000 идей")Лук и стрелы (ситуационный расклад с картами "1000 идей")
Лук и стрелы (ситуационный расклад с картами "1000 идей")
 
Vivere per raccontarla: l’importanza del daily journal in un team agile
Vivere per raccontarla: l’importanza del daily journal in un team agileVivere per raccontarla: l’importanza del daily journal in un team agile
Vivere per raccontarla: l’importanza del daily journal in un team agile
 
Inspiring words from Mr.Suresh Narayanan, Chairman & MD, Nestle India Ltd- Le...
Inspiring words from Mr.Suresh Narayanan, Chairman & MD, Nestle India Ltd- Le...Inspiring words from Mr.Suresh Narayanan, Chairman & MD, Nestle India Ltd- Le...
Inspiring words from Mr.Suresh Narayanan, Chairman & MD, Nestle India Ltd- Le...
 
Работа со страхами (упражнение с картами "1000 дорог")
Работа со страхами (упражнение с картами "1000 дорог")Работа со страхами (упражнение с картами "1000 дорог")
Работа со страхами (упражнение с картами "1000 дорог")
 
Exploiting undefined behaviors for efficient symbolic execution
Exploiting undefined behaviors for efficient symbolic executionExploiting undefined behaviors for efficient symbolic execution
Exploiting undefined behaviors for efficient symbolic execution
 
Taking Splunk to the Next Level - Management
Taking Splunk to the Next Level - ManagementTaking Splunk to the Next Level - Management
Taking Splunk to the Next Level - Management
 

Similaire à Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male

Gozengo sauce presentation
Gozengo sauce presentationGozengo sauce presentation
Gozengo sauce presentation
Daniel Straus
 

Similaire à Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male (20)

Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015
 
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
 
DevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesDevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and Processes
 
Into the cloud
Into the cloudInto the cloud
Into the cloud
 
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
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
 
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
 
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALMPráticas, Técnicas e Ferramentas para Continuous Delivery com ALM
Práticas, Técnicas e Ferramentas para Continuous Delivery com ALM
 
Automating Security in Cloud Workloads with DevSecOps
Automating Security in Cloud Workloads with DevSecOpsAutomating Security in Cloud Workloads with DevSecOps
Automating Security in Cloud Workloads with DevSecOps
 
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
 
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
 
Gozengo sauce presentation
Gozengo sauce presentationGozengo sauce presentation
Gozengo sauce presentation
 
How Gozengo Implemented a Continuous Deployment Culture from Day One
How Gozengo Implemented a Continuous Deployment Culture from Day OneHow Gozengo Implemented a Continuous Deployment Culture from Day One
How Gozengo Implemented a Continuous Deployment Culture from Day One
 
Deploy Angular to the Cloud
Deploy Angular to the CloudDeploy Angular to the Cloud
Deploy Angular to the Cloud
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
ENT201 A Tale of Two Pizzas: Accelerating Software Delivery with AWS Develope...
 
Security as Code: DOES15
Security as Code: DOES15Security as Code: DOES15
Security as Code: DOES15
 
DevOps - Boldly Go for Distro
DevOps - Boldly Go for DistroDevOps - Boldly Go for Distro
DevOps - Boldly Go for Distro
 

Plus de Pietro Di Bello

Plus de Pietro Di Bello (11)

Lessons learned in surviving to Technical Debt
Lessons learned in surviving to Technical DebtLessons learned in surviving to Technical Debt
Lessons learned in surviving to Technical Debt
 
Surviving to a Legacy Codebase - Codemotion Berlin 2018 Edition
Surviving to a Legacy Codebase - Codemotion Berlin 2018 EditionSurviving to a Legacy Codebase - Codemotion Berlin 2018 Edition
Surviving to a Legacy Codebase - Codemotion Berlin 2018 Edition
 
Surviving to a Legacy Codebase - Voxxed Days Ticino Edition
Surviving to a Legacy Codebase - Voxxed Days Ticino EditionSurviving to a Legacy Codebase - Voxxed Days Ticino Edition
Surviving to a Legacy Codebase - Voxxed Days Ticino Edition
 
Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...
 
Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...Hiring Great People: how we improved our recruiting process to build and grow...
Hiring Great People: how we improved our recruiting process to build and grow...
 
Scrum In A Nutshell
Scrum In A NutshellScrum In A Nutshell
Scrum In A Nutshell
 
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
Breaking the ice with agile - cinque strade per rompere il ghiaccio e introdu...
 
TDD reloaded - JUGTAA 24 Ottobre 2012
TDD reloaded - JUGTAA 24 Ottobre 2012TDD reloaded - JUGTAA 24 Ottobre 2012
TDD reloaded - JUGTAA 24 Ottobre 2012
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA event
 
"Il dilettevole giuoco dell'oca" coding dojo
"Il dilettevole giuoco dell'oca" coding dojo"Il dilettevole giuoco dell'oca" coding dojo
"Il dilettevole giuoco dell'oca" coding dojo
 
Retrospective, StandUp Meeting e Daily Journal
Retrospective, StandUp Meeting e Daily JournalRetrospective, StandUp Meeting e Daily Journal
Retrospective, StandUp Meeting e Daily Journal
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Continuous Delivery su progetti Java: cosa abbiamo imparato facendoci del male