Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Continuous Delivery in Java - Things we learned...
Search
Paolo D'Incau
November 07, 2015
Programming
62
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Continuous Delivery in Java - Things we learned hurting ourselves
The slides of my talk at the Italian Agile Day 2015 about Continuous Delivery in Java
Paolo D'Incau
November 07, 2015
More Decks by Paolo D'Incau
See All by Paolo D'Incau
Exploring Processes and OTP behaviours in Erlang
pdincau
2
400
Other Decks in Programming
See All in Programming
Heart of Swift Concurrency
koher
0
860
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
140
Jetpack Compose メカニズム
skydoves
0
430
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
710
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
1
1.2k
FreeBSDでZabbixを動かす
kenkino
0
290
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
580
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
720
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
240
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
340
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
470
Featured
See All Featured
Done Done
chrislema
186
16k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
GraphQLとの向き合い方2022年版
quramy
50
15k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
From π to Pie charts
rasagy
1
370
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Transcript
Continuous Delivery in Java Cose che abbiamo imparato facendoci del
male Italian Agile Day ‘15
@pdincau Here I am
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
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
Iteration n.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 Iteration n.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
Yay! Environments are ready!
Deploy Everywhere Iteration n.3
New Jenkins job to run IT 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 Iteration n.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 Iteration n.5
AWS is for nightly builds Tags over branches Track deployed
version
Acceptance tests
Explained values and motivations to Product Owner
Remove Candidate Clean Up Clean Up Meet the pipeline Migrate
Database Fetch Unit Tests Build Build Slow Tests Integration Tests Integration Deploy Publish UAT QA and Publish
Where to go next
Parallel builds Environments Provisioning
Things we would change...
Pipeline with “placeholders” Extract configurations Explain at the beginning the
values behind
Things we would do again...
Build the pipeline iteratively Use of Liquibase Share pipeline responsibility
Recommended reading
That’s all!
Thanks @pdincau