SlideShare a Scribd company logo
D E P L O Y M E N T S I N
P R O D U C T I O N
W I T H O N E C L I C K
M A N U E L D E L A P E Ñ A P E Ñ A
S O F T WA R E C R A F T S M A N S H I P T O L E D O
2 0 1 5 . 0 4 . 3 0
http://www.improve-foundations.com/wp-content/uploads/2011/11/improve_solutions1.png
M A N U E L D E L A P E Ñ A
S O F T WA R E E N G I N E E R A T
L I F E R A Y, I N C .
@ M D E L A P E N YA
M O S T A C T I V E G I T H U B U S E R O N
# C L M
M E E T U P D R E S S - C O D E
• Ask me whenever you need
• Stop me if I’m speaking too fast
• Let’s have a conversation about it, but if it’s too long,
let’s have a beer after the meetup!
A B O U T T H I S M E E T U P
– S O F T WA R E C R A F T S M A N S H I P T O L E D O
“Fomentar y compartir las metodologías ágiles y
las buenas prácticas en Ingeniería del Software en
los procesos de desarrollo en Castilla-La Mancha.”
– J AV I E R G A R Z A S
“BUILDING SOFTWARE IS NOT LIKE BUILDING
HOUSES OR CARS”
http://www.javiergarzas.com/2011/02/diferencias-software-fabricacion-tradicional-1.html
http://www.javiergarzas.com/2011/02/diferencias-software-fabricacion-tradicional-2.html
http://static.flickr.com/2177/2155970334_f3b8da87d1.jpg
0 . W H A T D O E S C I M E A N ( F O R M E ) ?
• Merge code/commits more frequently
• Deploy the code on different environments (for testing purpose)
• Strongly supported by (any kind of) testing
• CI is NOT a tool, is a practice
• Significant degree of discipline for all the team
• All team members are involved and collaborating to improve
software quality
0 . W H AT D O E S C I M E A N ( F O R M E ) ?
• Merge code/commits more frequently
• Deploy the code on different environments (for testing purpose)
• Strongly supported by (any kind of) testing
• CI is NOT a tool, is a practice
• Significant degree of discipline for all the team
• All team members are involved and collaborating to improve
software quality
0 . W H AT D O E S C I M E A N ( F O R M E ) ?
MANTRA: Software works all of the time, specially
just BEFORE and just AFTER your changes!
W H AT A R E W E G O I N G T O S E E ?
1. Environments
2. Deployments types
3. Manual Deployment: a short example
4. Automate it!
5. CI Best practices
1 . E N V I R O N M E N T S
http://www.igst.com/img/tech/servervirtualization.jpg
http://www.nopuedocreer.com/quelohayaninventado/wp-content/images/2008/08/cardboard.jpg
http://www.toonpool.com/user/20546/files/quality_control_1529395.jpg
http://www.afocor.com/images/formacion.jpg
http://www.starwarswallpaper.org/wp-content/uploads/wallpapers/hd-star-wars-death-star-wallpaper-800x600.jpg
W E A S D E V E L O P E R S …
1 . E N V I R O N M E N T S
• …want to move our code from our local computer to
production in the least possible time
Local > Dev > Test > Pre > Prod
• …want all of them be very very similar
• …want to collaborate more with Ops team, as we
don’t have many times access to several of those envs
2 . D E P L O Y M E N T S
http://sd.keepcalm-o-matic.co.uk/i/keep-calm-and-deploy.png
• Frequency
• Annually
• Semiannually
• Quarterly
• Monthly
• Weekly
D E P L O Y M E N T T Y P E S
2 . D E P L O Y M E N T S
4 4 4 4 4 4 4 4 4 4 4 4 4
• Completeness
• Full
• Partial
D E P L O Y M E N T T Y P E S
2 . D E P L O Y M E N T S
Monolith
100%
( M I C R O - ) S E R V I C E S D E P L O Y E D
0
7,5
15
22,5
30
20%
34% 12%
50%
70%
35%
68%
22%
35%
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
• Customer (usually)
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
• Customer (usually)
• Why?
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
• Customer (usually)
• Why?
• Bug fixing
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
• Customer (usually)
• Why?
• Bug fixing
• New functionalities
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
• Customer (usually)
• Why?
• Bug fixing
• New functionalities
• When?
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
• Who?
• Customer (usually)
• Why?
• Bug fixing
• New functionalities
• When?
• Deployment policies
M O T I VAT I O N T O D E P L O Y
2 . D E P L O Y M E N T S
3 . M A N U A L D E P L O Y M E N T
http://ep01.epimg.net/cultura/imagenes/2012/08/23/actualidad/1345709139_149007_1345712998_noticia_normal.jpg
• Web Application
• Java WAR (War ARchive)
• Tomcat
• MySQL DB
• FileSystem
E X A M P L E
3 . M A N U A L D E P L O Y M E N T S
PA C K A G E G E N E R AT I O N
3 . M A N U A L D E P L O Y M E N T S
• Fetch code from the repository
• Generate the package using…
• IDE ???
• command line tools
• Name the package
• v1.0.1, v3.3.7, v5.0.0 …
D E P L O Y T O …
3 . M A N U A L D E P L O Y M E N T S
• Send the package to Dev. environment
• Assert that it works as expected
• Manual or automated testing?
• Are there DB updates?
• Are there O.S. changes?
• Firewalls, WebServers, FileSystem…
• Which one is the next environment?
C O N F I G U R E E N V I R O N M E N T
3 . M A N U A L D E P L O Y M E N T S
• Configure Tomcat datasources…
• Configure Apache sites…
• Execute SQL upgrades on DB…
• Create the file system structure…
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
T E A M S I N V O LV E D
3 . M A N U A L D E P L O Y M E N T S
Developers
DBA’s
SysAdmins
QA
I just want to deploy the package to the
environment!!
http://www.city-data.com/forum/attachments/jacksonville/104205d1354214951-case-you-were-wondering-landing-
still-sheldon_cooper.jpg
4 . A U T O M A T E I T !
http://homeinteriorsdesigns.info/wp-content/uploads/2014/07/automation-robot.jpg
N AT U R A L E V O L U T I O N
4 . A U T O M A T E I T !
• No server: compile by hand, fewer commits, painful integration
• Nightly builds: automated compile, maybe tests executions, daily
commits
• Continuous Integration: compile with every commit, test execution,
notifications on breakages. Possible deployment to dev/pre
environment
• Continuous Deployment: deployment to production, with one click
• Continuous Delivery: automatic deployment to production, with
every commit
W H AT T O A U T O M AT E
4 . A U T O M A T E I T !
• Configure the agnostic environment
• Build the software
• Quality metrics
• Tests execution
• Unit + Integration + Functional
• Deployment
• Everything?
T E A M S I N V O LV E D
4 . A U T O M A T E I T !
Developers
DBA’s
SysAdmins
QA
P I P E L I N E S
4 . A U T O M A T E I T !
http://www.jsg.utexas.edu/lacp/files/PGC_Pipeline_Data.jpg
P I P E L I N E S
4 . A U T O M A T E I T !
• Define the minimum valid steps
• I.e.: Build + Metrics + Test + Deploy
• Fail fast -> take actions ASAP
• Display to the whole team each step status
• Choose your automation tool, or build it
C O D E M A N A G E M E N T
4 . A U T O M A T E I T ! - P I P E L I N E S
• SCM
• NICE TO HAVE => distributed SCM (Git)
• SCM Server
– A N O N Y M O U S
“The code must be independent from the
environment”
https://katiegrusz.files.wordpress.com/2013/04/independent-woman-copy1.jpg
H A R D C O D E D E N V I R O N M E N T
4 . A U T O M A T E I T ! - P I P E L I N E S
H A R D C O D E D E N V I R O N M E N T
4 . A U T O M A T E I T ! - P I P E L I N E S
FORBIDDEN!!!
B U I L D P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
• Fetch a specific commit HASH, i.e. last one
• Reproduces the state of software at that point
• Compile
• Use command line tools
B U I L D P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
• Fetch a specific commit HASH, i.e. last one
• Reproduces the state of software at that point
• Compile
• Use command line tools
Why not being able to reproduce the state
of each HASH commit?
– @ T P R U M B S
“A programmer that doesn't explicit
dependencies, or automate his/her build, has not
suffered enough”
M A N A G E D E P E N D E N C I E S
4 . A U T O M A T E I T ! - P I P E L I N E S
M E T R I C S P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
• Static Analysis
• Integrate common-use tools
• Findbugs, PDM, CPD, Code Coverage, …
• Measure everywhere: on every peer-review
• Shall we create issues on our ticket system on each
detection?
T E S T P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
• Write tests!!!
• TDD is a choice, but not a requirement
• Make them fast, to execute it locally
• Test everywhere: on every peer-review
• Share tests results!
http://www.seguetech.com/sites/default/files/article/726/image-2447.png
• Unit tests
• Isolated code
• Integration tests
• Relations between components
• Functional tests
• GUI tests + Exploratory Testing
• Non-Functional tests
• Performance, Security, User Experience, Usability
T E S T P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
PA C K A G E P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
• Your package represents the software in a specific
HASH commit
• Use command line/automated tools
• The package must be environment-agnostic!!!
• Promote the package between environments
D E P L O Y P H A S E
4 . A U T O M A T E I T ! - P I P E L I N E S
• Deploy the package to your runtime
• App server, host, virtual machine, etc.
• Something went wrong?
• Deploy previous commit, as you positively know is
safe
T O O L I N G
4 . A U T O M A T E I T !
• Own scripts
• Automation servers
• Jenkins, Go, Hudson…
• O.S. configurations
• Ansible, Chef, Puppet, Docker (Linux-kernel based)
http://cdn2.hubspot.net/hubfs/381387/Blog-image-tracking/ElasticBox-DevOps_Open_Source_Tools.png
D I S P L AY R E S U LT S
4 . A U T O M A T E I T !
• Each team member must know about pipeline status
• Create dashboards with aggregated test results:
• Tests failures
• Build statuses
• Committers that caused the breakage
5 . B E S T P R A C T I C E S
http://www.sqlsoldier.com/wp/wp-content/uploads/2012/02/BestPractices.jpg
C O M M I T S T R AT E G Y
5 . B E S T P R A C T I C E S
• A commit = a point in the project’s History
• A commit should be…
• Small
• Significative
• Descriptive commit message
• Issue referenced in the commit message
• Will you remember its purpose 6 months later?
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#46 Enable email sending on backend
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#47 Fix bug on View layer (caused by #45-a)
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#47 Fix bug on View layer (caused by #45-a)
#47 Update tests introduced by #45-b
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#47 Fix bug on View layer (caused by #45-a)
#47 Update tests introduced by #45-b
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
#47 Add tests to prevent regressions
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#47 Fix bug on View layer (caused by #45-a)
#47 Update tests introduced by #45-b
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
#47 Add tests to prevent regressions
Revert #46 Add Javadocs
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#47 Fix bug on View layer (caused by #45-a)
#47 Update tests introduced by #45-b
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
#47 Add tests to prevent regressions
Revert #46 Add ‘Send email’ button …
Revert #46 Add Javadocs
C O M M I T S E X A M P L E
5 . B E S T P R A C T I C E S
#45 Awesome functionality
#45 Create tests
#45 Refactor Service Layer
#47 Fix bug on View layer (caused by #45-a)
#47 Update tests introduced by #45-b
#46 Enable email sending on backend
#46 Add ‘Send email’ button on desktop
#46 Add Javadocs
#47 Add tests to prevent regressions
Revert #46 Enable email sending…
Revert #46 Add ‘Send email’ button …
Revert #46 Add Javadocs
R E L E A S A B L E C O M M I T S
5 . B E S T P R A C T I C E S
• If a single commit passes ALL the safety checks on the
pipeline… why not releasing in that state?
• Apply that sentence to commit history:
P E E R R E V I E W I N G
5 . B E S T P R A C T I C E S
• The more pairs of eyes over the code the better
• Learn by watching
• Experienced team members teach beginners
• Leverage the tools your SCM provides (pull requests)
• Pair programming if time-zone allows it
B R A N C H I N G
5 . B E S T P R A C T I C E S
• Never never never code on master branch
• Use ‘master’ branch as release, which IS ALWAYS stable!
• Have a ‘develop’ branch, which COULD be unstable
• Create feature branches for new commits
• Merge features into develop.
• Once ready to release, merge to master and tag
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
B R A N C H I N G : G I T F L O W
5 . B E S T P R A C T I C E S
Git-Flow: http://danielkummer.github.io/git-flow-cheatsheet/index.html
D O N ’ T C H E C K - I N O N A B R O K E N
B U I L D
5 . B E S T P R A C T I C E S
• Any day, 8:00. Your build is broken
• Got an email from the CI server?
• Solve errors as soon as possible, do not start anything new
• Identify the cause very quickly
• Best position to work out
D O N ’ T C H E C K - I N O N A B R O K E N
B U I L D
5 . B E S T P R A C T I C E S
Current breakages + your changes
Adding complexity for the build to be fixed
Different problems
More time to fix the build
Still want to check-in?
You’ll get used to seeing the build broken all the
time
http://www.pqmonthly.com/wp-content/uploads/2013/12/ani-1.png
A LWAY S R U N T H E T E S T S
5 . B E S T P R A C T I C E S
• Do you remember that every single commit should be
releasable and HAVE TO be small, significant,
isolated?
• It has to pass the tests locally
• It has to pass the tests on the pipeline on the CI
server too…
• with each commit or code submission!!!
W R I T E W E L L - W R I T T E N T E S T S
5 . B E S T P R A C T I C E S
• They will verify that the commit works as expected
• Test functionality…
• And loops, conditional, input values…
• Not only the Happy Path
• Did I say that you have to execute the tests? :-)
C O N T R O L L E D E N V I R O N M E N T
5 . B E S T P R A C T I C E S
• Developer machine: OS configurations, OS tuning, third
party libraries/drivers…
• CI Server: Same conditions. In every build. For
everyone.
• Repeatable results!!
• Centralized Information Repository
• Always display what is happening (CI logs,
notifications…)
WA I T F O R T H E T E S T S T O PA S S
5 . B E S T P R A C T I C E S
• Developers loop: start > work > finish??? > start
• Change of context very quickly
• Are you sure that your code works as expected?
• Are the test finding potencial bugs on it?
• If you don’t monitor the build, you cannot answer
those questions until it’s very late and expensive.
• Work for the build execution to be fast
A S S U M E E R R O R S
– A N O N Y M O U S
“Everyone can commit errors”
“Errors are an expected part of the process”
– A N O N Y M O U S
5 . B E S T P R A C T I C E S
N E V E R G O H O M E O N B R O K E N B U I L D S
5 . B E S T P R A C T I C E S
• Friday, 14:58. Your build is broken
• What to do?
• Leave the build broken and go
N E V E R G O H O M E O N B R O K E N B U I L D S
5 . B E S T P R A C T I C E S
• Friday, 14:58. Your build is broken
• What to do?
• Leave the build broken and go
N E V E R G O H O M E O N B R O K E N B U I L D S
5 . B E S T P R A C T I C E S
• Friday, 14:58. Your build is broken
• What to do?
• Leave the build broken and go
• Leave late, trying to fix it
• Revert changes and try next week
N E V E R G O H O M E O N B R O K E N B U I L D S
5 . B E S T P R A C T I C E S
• Friday, 14:58. Your build is broken
• What to do?
• Leave the build broken and go
• Leave late, trying to fix it
• Revert changes and try next week
If you keep the build green, other developers will
be happy to pull safe code from SCM
D I S T R I B U T E D E X A M P L E
5 . B E S T P R A C T I C E S
B U I L D M A S T E R
5 . B E S T P R A C T I C E S
• Maintains the build
• Police it
• Write access to SCM
• Revert/Prioritize commits
• No personal offenses
• Critique the code!
• Accept rollbacks
https://s-media-cache-ak0.pinimg.com/236x/92/03/2a/92032a9e9ee898ac6106867421d81534.jpg
B U I L D M A S T E R D R A W B A C K S
5 . B E S T P R A C T I C E S
• Feeling of culprit if the build is broken
• Team starts seeing him/her as a punisher
• Role gets tired of being responsible for others
mistakes
• It’s not worth it pursuing people
• Team gets used to have a house-cleaner
https://s-media-cache-ak0.pinimg.com/236x/92/03/2a/92032a9e9ee898ac6106867421d81534.jpg
http://homeinteriorsdesigns.info/wp-content/uploads/2014/07/automation-robot.jpg
A U T O M AT E D B U I L D M A S T E R
5 . B E S T P R A C T I C E S
• Test each pull request!!
• Create a reduced pipeline for them
• Notify developers on failures
• Never accept potential failures
• Be aware of false positives!
B E P R E PA R E D T O R E V E R T
5 . B E S T P R A C T I C E S
• Developers are selfish about their code
• Developers don’t like others criticizing their code
• Important! Not to blame the developer
• We are members of the same team
• For the sake of quality, revert to previous change set,
as it is safe. Why?
“Don’t be afraid, my friend… and revert”
- B R U C E L E E ? ? -
http://i2.asntown.net/9/bruce-lee-the-lost-interview.jpg
B E P R E PA R E D T O R E V E R T
5 . B E S T P R A C T I C E S
http://szokblog.pl/ShareImages/1345223838846.jpg
T I M E - B O X F I X I N G
5 . B E S T P R A C T I C E S
• Before reverting, try to fix it in a small amount of time
• 15 minutes?
• If you aren’t finished, revert to previous version
• Don’t be the sweeper or the last bullet and notify users
who broke the build, avoiding magical fixes.
• Put mechanisms the sooner: on each code review!
T U N E T H E N O T I F I C AT I O N S
5 . B E S T P R A C T I C E S
• No notifications are bad
• Bad notifications are worse
• Send the right email to the right people, otherwise
they will start ignoring CI notifications
• Manual email when reverting explaining why?
• Wall of shame? list of committers who wrote the build
D O N ’ T C O M M E N T FA I L U R E S
5 . B E S T P R A C T I C E S
D O N ’ T C O M M E N T FA I L U R E S
5 . B E S T P R A C T I C E S
• Always last resort, as it will hide real problems
• Apply these sample rules ASAP:
• Has a regression been found by the test? -> Fix the
code!
• Is one of the assumptions of the test no longer valid? ->
Delete it!
• Has the application really changed the functionality
under test for a valid reason? -> Update the test!
5 . B E S T P R A C T I C E S
R E S P O N S I B I L I T Y
5 . B E S T P R A C T I C E S
• Take responsibility for all breakages resulting from
your changes.
• If you commit a change and all the tests you wrote
pass, but others break, the build is still broken.
• It’s usually a regression
• Fix all the tests not passing, asking component
leader for collaboration
5 . B E S T P R A C T I C E S
T D D
5 . B E S T P R A C T I C E S
• It’s not a requirement!!
• Tests are essential to CI
• Create tests when developing a new piece of functionality or
fixing a bug:
• It’s an executable specification of the expected
behavior of the code to be written:
• Application design, Regression tests, Documentation of
the code
• Creates a safety net for future refactors
C O N C L U S I O N S
6 . S U M M A RY
• Discipline
• Luke, use the tools!
• Everyone can commit errors
• Wait for tests to pass
• Display what is happening
• Don’t be afraid of reverting
• Responsibility
• Tests/Pipeline stages as a safety net
Deployments in one click!

More Related Content

What's hot

Improving Code Quality Through Effective Review Process
Improving Code Quality Through Effective  Review ProcessImproving Code Quality Through Effective  Review Process
Improving Code Quality Through Effective Review Process
Dr. Syed Hassan Amin
 
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologiesOWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP
 
Lessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From ZombielandLessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From Zombieland
Matt Barbour
 
DevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi Douglen
DevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi DouglenDevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi Douglen
DevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi Douglen
DevSecCon
 
InnoTech 2017_Defend_Against_Ransomware 3.0
InnoTech 2017_Defend_Against_Ransomware 3.0InnoTech 2017_Defend_Against_Ransomware 3.0
InnoTech 2017_Defend_Against_Ransomware 3.0
Michael Gough
 
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
JAXLondon2014
 
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
Daniel Bryant
 
Global Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul EventGlobal Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul Event
Lemi Orhan Ergin
 
Cred stealing emails bsides austin_2018 v1.0
Cred stealing emails bsides austin_2018 v1.0Cred stealing emails bsides austin_2018 v1.0
Cred stealing emails bsides austin_2018 v1.0
Michael Gough
 
IT Trends 120-ish in the real world
 IT Trends 120-ish in the real world IT Trends 120-ish in the real world
IT Trends 120-ish in the real world
Christian John Felix
 
The reviewer checklist
The reviewer checklistThe reviewer checklist
The reviewer checklist
Nicola Pietroluongo
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
Danny Preussler
 
Email keeps getting us pwned - Avoiding Ransomware and malware
Email keeps getting us pwned - Avoiding Ransomware and malwareEmail keeps getting us pwned - Avoiding Ransomware and malware
Email keeps getting us pwned - Avoiding Ransomware and malware
Michael Gough
 
Open Source Compliance at Twitter
Open Source Compliance at TwitterOpen Source Compliance at Twitter
Open Source Compliance at Twitter
Chris Aniszczyk
 
Debugging distributed systems
Debugging distributed systemsDebugging distributed systems
Debugging distributed systems
Bert Jan Schrijver
 
DIR ISF - Email keeps getting us pwned v1.1
DIR ISF - Email keeps getting us pwned v1.1DIR ISF - Email keeps getting us pwned v1.1
DIR ISF - Email keeps getting us pwned v1.1
Michael Gough
 
End-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at RedisEnd-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at Redis
Filipe Oliveira
 
TDD on android. Why and How? (Coding Serbia 2019)
TDD on android. Why and How? (Coding Serbia 2019)TDD on android. Why and How? (Coding Serbia 2019)
TDD on android. Why and How? (Coding Serbia 2019)
Danny Preussler
 
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
David Rosen
 
OnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform BuildOnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform Build
David Rosen
 

What's hot (20)

Improving Code Quality Through Effective Review Process
Improving Code Quality Through Effective  Review ProcessImproving Code Quality Through Effective  Review Process
Improving Code Quality Through Effective Review Process
 
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologiesOWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
 
Lessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From ZombielandLessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From Zombieland
 
DevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi Douglen
DevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi DouglenDevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi Douglen
DevSecCon Tel Aviv 2018 - Value driven threat modeling by Avi Douglen
 
InnoTech 2017_Defend_Against_Ransomware 3.0
InnoTech 2017_Defend_Against_Ransomware 3.0InnoTech 2017_Defend_Against_Ransomware 3.0
InnoTech 2017_Defend_Against_Ransomware 3.0
 
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
Moving to a DevOps mode - easy, hard or just plain terrifying? - Daniel Bryan...
 
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"
 
Global Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul EventGlobal Day of Coderetreat'14 - Istanbul Event
Global Day of Coderetreat'14 - Istanbul Event
 
Cred stealing emails bsides austin_2018 v1.0
Cred stealing emails bsides austin_2018 v1.0Cred stealing emails bsides austin_2018 v1.0
Cred stealing emails bsides austin_2018 v1.0
 
IT Trends 120-ish in the real world
 IT Trends 120-ish in the real world IT Trends 120-ish in the real world
IT Trends 120-ish in the real world
 
The reviewer checklist
The reviewer checklistThe reviewer checklist
The reviewer checklist
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Email keeps getting us pwned - Avoiding Ransomware and malware
Email keeps getting us pwned - Avoiding Ransomware and malwareEmail keeps getting us pwned - Avoiding Ransomware and malware
Email keeps getting us pwned - Avoiding Ransomware and malware
 
Open Source Compliance at Twitter
Open Source Compliance at TwitterOpen Source Compliance at Twitter
Open Source Compliance at Twitter
 
Debugging distributed systems
Debugging distributed systemsDebugging distributed systems
Debugging distributed systems
 
DIR ISF - Email keeps getting us pwned v1.1
DIR ISF - Email keeps getting us pwned v1.1DIR ISF - Email keeps getting us pwned v1.1
DIR ISF - Email keeps getting us pwned v1.1
 
End-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at RedisEnd-to-end performance testing, profiling, and analysis at Redis
End-to-end performance testing, profiling, and analysis at Redis
 
TDD on android. Why and How? (Coding Serbia 2019)
TDD on android. Why and How? (Coding Serbia 2019)TDD on android. Why and How? (Coding Serbia 2019)
TDD on android. Why and How? (Coding Serbia 2019)
 
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and DeliveryDESIGN West 2013 Presentation: Accelerating Android Development and Delivery
DESIGN West 2013 Presentation: Accelerating Android Development and Delivery
 
OnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform BuildOnAndroidConf 2013: Accelerating the Android Platform Build
OnAndroidConf 2013: Accelerating the Android Platform Build
 

Similar to Deployments in one click!

200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
David Danzilio
 
High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-End
David Simons
 
Microservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & TricksMicroservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & Tricks
Andrey Trubitsyn
 
App sec and quality london - may 2016 - v0.5
App sec and quality   london -  may 2016 - v0.5App sec and quality   london -  may 2016 - v0.5
App sec and quality london - may 2016 - v0.5
Dinis Cruz
 
The 12 Factor App
The 12 Factor AppThe 12 Factor App
The 12 Factor App
rudiyardley
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
C4Media
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
Taylor Lovett
 
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit Ebner
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit EbnerThe NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit Ebner
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit Ebner
NRB
 
Running episerver cms in the cloud
Running episerver cms in the cloudRunning episerver cms in the cloud
Running episerver cms in the cloud
Rajkumar Balakrishnan
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Chris Weldon
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
Agile Montréal
 
Best Practices for Database Deployments
Best Practices for Database DeploymentsBest Practices for Database Deployments
Best Practices for Database Deployments
Red Gate Software
 
SharePoint Saturday Redmond - Building solutions with the future in mind
SharePoint Saturday Redmond - Building solutions with the future in mindSharePoint Saturday Redmond - Building solutions with the future in mind
SharePoint Saturday Redmond - Building solutions with the future in mind
Chris Johnson
 
So You Want to be an OpenStack Contributor
So You Want to be an OpenStack ContributorSo You Want to be an OpenStack Contributor
So You Want to be an OpenStack Contributor
Anne Gentle
 
Monitoring and Logging in Wonderland
Monitoring and Logging in WonderlandMonitoring and Logging in Wonderland
Monitoring and Logging in Wonderland
Paul Seiffert
 
Scaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON TutorialScaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON Tutorial
duleepa
 
Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)
Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)
Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)
TestDevLab
 
Building an Open Source AppSec Pipeline
Building an Open Source AppSec PipelineBuilding an Open Source AppSec Pipeline
Building an Open Source AppSec Pipeline
Matt Tesauro
 
Best practices-wordpress-enterprise
Best practices-wordpress-enterpriseBest practices-wordpress-enterprise
Best practices-wordpress-enterprise
Taylor Lovett
 
RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...
RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...
RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...
Databricks
 

Similar to Deployments in one click! (20)

200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
 
High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-End
 
Microservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & TricksMicroservices Delivery Platform. Tips & Tricks
Microservices Delivery Platform. Tips & Tricks
 
App sec and quality london - may 2016 - v0.5
App sec and quality   london -  may 2016 - v0.5App sec and quality   london -  may 2016 - v0.5
App sec and quality london - may 2016 - v0.5
 
The 12 Factor App
The 12 Factor AppThe 12 Factor App
The 12 Factor App
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
 
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit Ebner
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit EbnerThe NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit Ebner
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit Ebner
 
Running episerver cms in the cloud
Running episerver cms in the cloudRunning episerver cms in the cloud
Running episerver cms in the cloud
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
Best Practices for Database Deployments
Best Practices for Database DeploymentsBest Practices for Database Deployments
Best Practices for Database Deployments
 
SharePoint Saturday Redmond - Building solutions with the future in mind
SharePoint Saturday Redmond - Building solutions with the future in mindSharePoint Saturday Redmond - Building solutions with the future in mind
SharePoint Saturday Redmond - Building solutions with the future in mind
 
So You Want to be an OpenStack Contributor
So You Want to be an OpenStack ContributorSo You Want to be an OpenStack Contributor
So You Want to be an OpenStack Contributor
 
Monitoring and Logging in Wonderland
Monitoring and Logging in WonderlandMonitoring and Logging in Wonderland
Monitoring and Logging in Wonderland
 
Scaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON TutorialScaling a Web Site - OSCON Tutorial
Scaling a Web Site - OSCON Tutorial
 
Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)
Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)
Security Vulnerabilities in Mobile Applications (Kristaps Felzenbergs)
 
Building an Open Source AppSec Pipeline
Building an Open Source AppSec PipelineBuilding an Open Source AppSec Pipeline
Building an Open Source AppSec Pipeline
 
Best practices-wordpress-enterprise
Best practices-wordpress-enterpriseBest practices-wordpress-enterprise
Best practices-wordpress-enterprise
 
RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...
RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...
RubiOne: Apache Spark as the Backbone of a Retail Analytics Development Envir...
 

More from Manuel de la Peña Peña

202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
Manuel de la Peña Peña
 
Dream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workDream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to work
Manuel de la Peña Peña
 
Plataforma Eagle - GoApps Toledo
Plataforma Eagle - GoApps ToledoPlataforma Eagle - GoApps Toledo
Plataforma Eagle - GoApps Toledo
Manuel de la Peña Peña
 
swcraftersclm - Retrospectiva 2017
swcraftersclm - Retrospectiva 2017swcraftersclm - Retrospectiva 2017
swcraftersclm - Retrospectiva 2017
Manuel de la Peña Peña
 
Kanban
KanbanKanban
Modern Continuous Delivery with Docker and Liferay
Modern Continuous Delivery with Docker and LiferayModern Continuous Delivery with Docker and Liferay
Modern Continuous Delivery with Docker and Liferay
Manuel de la Peña Peña
 
Testing 101
Testing 101Testing 101
Docker zero
Docker zeroDocker zero
Ansible - A 'crowd' introduction
Ansible - A 'crowd' introductionAnsible - A 'crowd' introduction
Ansible - A 'crowd' introduction
Manuel de la Peña Peña
 
Katanga
KatangaKatanga
Flywaydb
FlywaydbFlywaydb
Compras en Internet: Fácil y Seguro
Compras en Internet: Fácil y SeguroCompras en Internet: Fácil y Seguro
Compras en Internet: Fácil y Seguro
Manuel de la Peña Peña
 
Redes sociales orientadas al autoempleo
Redes sociales orientadas al autoempleoRedes sociales orientadas al autoempleo
Redes sociales orientadas al autoempleo
Manuel de la Peña Peña
 
Productividad en tu mano
Productividad en tu manoProductividad en tu mano
Productividad en tu mano
Manuel de la Peña Peña
 
Sostenibilidad y Software Libre
Sostenibilidad y Software LibreSostenibilidad y Software Libre
Sostenibilidad y Software Libre
Manuel de la Peña Peña
 
Manuel de la Peña & Liferay EVP
Manuel de la Peña & Liferay EVPManuel de la Peña & Liferay EVP
Manuel de la Peña & Liferay EVP
Manuel de la Peña Peña
 

More from Manuel de la Peña Peña (16)

202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Dream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to workDream QA: Designing the QA team where we'd love to work
Dream QA: Designing the QA team where we'd love to work
 
Plataforma Eagle - GoApps Toledo
Plataforma Eagle - GoApps ToledoPlataforma Eagle - GoApps Toledo
Plataforma Eagle - GoApps Toledo
 
swcraftersclm - Retrospectiva 2017
swcraftersclm - Retrospectiva 2017swcraftersclm - Retrospectiva 2017
swcraftersclm - Retrospectiva 2017
 
Kanban
KanbanKanban
Kanban
 
Modern Continuous Delivery with Docker and Liferay
Modern Continuous Delivery with Docker and LiferayModern Continuous Delivery with Docker and Liferay
Modern Continuous Delivery with Docker and Liferay
 
Testing 101
Testing 101Testing 101
Testing 101
 
Docker zero
Docker zeroDocker zero
Docker zero
 
Ansible - A 'crowd' introduction
Ansible - A 'crowd' introductionAnsible - A 'crowd' introduction
Ansible - A 'crowd' introduction
 
Katanga
KatangaKatanga
Katanga
 
Flywaydb
FlywaydbFlywaydb
Flywaydb
 
Compras en Internet: Fácil y Seguro
Compras en Internet: Fácil y SeguroCompras en Internet: Fácil y Seguro
Compras en Internet: Fácil y Seguro
 
Redes sociales orientadas al autoempleo
Redes sociales orientadas al autoempleoRedes sociales orientadas al autoempleo
Redes sociales orientadas al autoempleo
 
Productividad en tu mano
Productividad en tu manoProductividad en tu mano
Productividad en tu mano
 
Sostenibilidad y Software Libre
Sostenibilidad y Software LibreSostenibilidad y Software Libre
Sostenibilidad y Software Libre
 
Manuel de la Peña & Liferay EVP
Manuel de la Peña & Liferay EVPManuel de la Peña & Liferay EVP
Manuel de la Peña & Liferay EVP
 

Recently uploaded

Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Undress Baby
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 

Recently uploaded (20)

Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfRevolutionizing Visual Effects Mastering AI Face Swaps.pdf
Revolutionizing Visual Effects Mastering AI Face Swaps.pdf
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 

Deployments in one click!

  • 1. D E P L O Y M E N T S I N P R O D U C T I O N W I T H O N E C L I C K M A N U E L D E L A P E Ñ A P E Ñ A S O F T WA R E C R A F T S M A N S H I P T O L E D O 2 0 1 5 . 0 4 . 3 0 http://www.improve-foundations.com/wp-content/uploads/2011/11/improve_solutions1.png
  • 2. M A N U E L D E L A P E Ñ A S O F T WA R E E N G I N E E R A T L I F E R A Y, I N C . @ M D E L A P E N YA M O S T A C T I V E G I T H U B U S E R O N # C L M
  • 3. M E E T U P D R E S S - C O D E • Ask me whenever you need • Stop me if I’m speaking too fast • Let’s have a conversation about it, but if it’s too long, let’s have a beer after the meetup!
  • 4. A B O U T T H I S M E E T U P – S O F T WA R E C R A F T S M A N S H I P T O L E D O “Fomentar y compartir las metodologías ágiles y las buenas prácticas en Ingeniería del Software en los procesos de desarrollo en Castilla-La Mancha.”
  • 5. – J AV I E R G A R Z A S “BUILDING SOFTWARE IS NOT LIKE BUILDING HOUSES OR CARS” http://www.javiergarzas.com/2011/02/diferencias-software-fabricacion-tradicional-1.html http://www.javiergarzas.com/2011/02/diferencias-software-fabricacion-tradicional-2.html http://static.flickr.com/2177/2155970334_f3b8da87d1.jpg
  • 6. 0 . W H A T D O E S C I M E A N ( F O R M E ) ?
  • 7. • Merge code/commits more frequently • Deploy the code on different environments (for testing purpose) • Strongly supported by (any kind of) testing • CI is NOT a tool, is a practice • Significant degree of discipline for all the team • All team members are involved and collaborating to improve software quality 0 . W H AT D O E S C I M E A N ( F O R M E ) ?
  • 8. • Merge code/commits more frequently • Deploy the code on different environments (for testing purpose) • Strongly supported by (any kind of) testing • CI is NOT a tool, is a practice • Significant degree of discipline for all the team • All team members are involved and collaborating to improve software quality 0 . W H AT D O E S C I M E A N ( F O R M E ) ? MANTRA: Software works all of the time, specially just BEFORE and just AFTER your changes!
  • 9. W H AT A R E W E G O I N G T O S E E ? 1. Environments 2. Deployments types 3. Manual Deployment: a short example 4. Automate it! 5. CI Best practices
  • 10. 1 . E N V I R O N M E N T S http://www.igst.com/img/tech/servervirtualization.jpg
  • 11.
  • 16. W E A S D E V E L O P E R S … 1 . E N V I R O N M E N T S • …want to move our code from our local computer to production in the least possible time Local > Dev > Test > Pre > Prod • …want all of them be very very similar • …want to collaborate more with Ops team, as we don’t have many times access to several of those envs
  • 17. 2 . D E P L O Y M E N T S http://sd.keepcalm-o-matic.co.uk/i/keep-calm-and-deploy.png
  • 18. • Frequency • Annually • Semiannually • Quarterly • Monthly • Weekly D E P L O Y M E N T T Y P E S 2 . D E P L O Y M E N T S 4 4 4 4 4 4 4 4 4 4 4 4 4
  • 19.
  • 20. • Completeness • Full • Partial D E P L O Y M E N T T Y P E S 2 . D E P L O Y M E N T S Monolith 100% ( M I C R O - ) S E R V I C E S D E P L O Y E D 0 7,5 15 22,5 30 20% 34% 12% 50% 70% 35% 68% 22% 35%
  • 21. M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 22. • Who? M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 23. • Who? • Customer (usually) M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 24. • Who? • Customer (usually) • Why? M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 25. • Who? • Customer (usually) • Why? • Bug fixing M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 26. • Who? • Customer (usually) • Why? • Bug fixing • New functionalities M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 27. • Who? • Customer (usually) • Why? • Bug fixing • New functionalities • When? M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 28. • Who? • Customer (usually) • Why? • Bug fixing • New functionalities • When? • Deployment policies M O T I VAT I O N T O D E P L O Y 2 . D E P L O Y M E N T S
  • 29. 3 . M A N U A L D E P L O Y M E N T http://ep01.epimg.net/cultura/imagenes/2012/08/23/actualidad/1345709139_149007_1345712998_noticia_normal.jpg
  • 30. • Web Application • Java WAR (War ARchive) • Tomcat • MySQL DB • FileSystem E X A M P L E 3 . M A N U A L D E P L O Y M E N T S
  • 31. PA C K A G E G E N E R AT I O N 3 . M A N U A L D E P L O Y M E N T S • Fetch code from the repository • Generate the package using… • IDE ??? • command line tools • Name the package • v1.0.1, v3.3.7, v5.0.0 …
  • 32. D E P L O Y T O … 3 . M A N U A L D E P L O Y M E N T S • Send the package to Dev. environment • Assert that it works as expected • Manual or automated testing? • Are there DB updates? • Are there O.S. changes? • Firewalls, WebServers, FileSystem… • Which one is the next environment?
  • 33. C O N F I G U R E E N V I R O N M E N T 3 . M A N U A L D E P L O Y M E N T S • Configure Tomcat datasources… • Configure Apache sites… • Execute SQL upgrades on DB… • Create the file system structure…
  • 34. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S
  • 35. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers
  • 36. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s
  • 37. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins
  • 38. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 39. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 40. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 41. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 42. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 43. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 44. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 45. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 46. T E A M S I N V O LV E D 3 . M A N U A L D E P L O Y M E N T S Developers DBA’s SysAdmins QA
  • 47. I just want to deploy the package to the environment!! http://www.city-data.com/forum/attachments/jacksonville/104205d1354214951-case-you-were-wondering-landing- still-sheldon_cooper.jpg
  • 48. 4 . A U T O M A T E I T ! http://homeinteriorsdesigns.info/wp-content/uploads/2014/07/automation-robot.jpg
  • 49. N AT U R A L E V O L U T I O N 4 . A U T O M A T E I T ! • No server: compile by hand, fewer commits, painful integration • Nightly builds: automated compile, maybe tests executions, daily commits • Continuous Integration: compile with every commit, test execution, notifications on breakages. Possible deployment to dev/pre environment • Continuous Deployment: deployment to production, with one click • Continuous Delivery: automatic deployment to production, with every commit
  • 50. W H AT T O A U T O M AT E 4 . A U T O M A T E I T ! • Configure the agnostic environment • Build the software • Quality metrics • Tests execution • Unit + Integration + Functional • Deployment • Everything?
  • 51. T E A M S I N V O LV E D 4 . A U T O M A T E I T ! Developers DBA’s SysAdmins QA
  • 52. P I P E L I N E S 4 . A U T O M A T E I T ! http://www.jsg.utexas.edu/lacp/files/PGC_Pipeline_Data.jpg
  • 53. P I P E L I N E S 4 . A U T O M A T E I T ! • Define the minimum valid steps • I.e.: Build + Metrics + Test + Deploy • Fail fast -> take actions ASAP • Display to the whole team each step status • Choose your automation tool, or build it
  • 54. C O D E M A N A G E M E N T 4 . A U T O M A T E I T ! - P I P E L I N E S • SCM • NICE TO HAVE => distributed SCM (Git) • SCM Server
  • 55. – A N O N Y M O U S “The code must be independent from the environment” https://katiegrusz.files.wordpress.com/2013/04/independent-woman-copy1.jpg
  • 56. H A R D C O D E D E N V I R O N M E N T 4 . A U T O M A T E I T ! - P I P E L I N E S
  • 57. H A R D C O D E D E N V I R O N M E N T 4 . A U T O M A T E I T ! - P I P E L I N E S FORBIDDEN!!!
  • 58. B U I L D P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S • Fetch a specific commit HASH, i.e. last one • Reproduces the state of software at that point • Compile • Use command line tools
  • 59. B U I L D P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S • Fetch a specific commit HASH, i.e. last one • Reproduces the state of software at that point • Compile • Use command line tools Why not being able to reproduce the state of each HASH commit?
  • 60. – @ T P R U M B S “A programmer that doesn't explicit dependencies, or automate his/her build, has not suffered enough” M A N A G E D E P E N D E N C I E S 4 . A U T O M A T E I T ! - P I P E L I N E S
  • 61. M E T R I C S P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S • Static Analysis • Integrate common-use tools • Findbugs, PDM, CPD, Code Coverage, … • Measure everywhere: on every peer-review • Shall we create issues on our ticket system on each detection?
  • 62. T E S T P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S • Write tests!!! • TDD is a choice, but not a requirement • Make them fast, to execute it locally • Test everywhere: on every peer-review • Share tests results!
  • 64. • Unit tests • Isolated code • Integration tests • Relations between components • Functional tests • GUI tests + Exploratory Testing • Non-Functional tests • Performance, Security, User Experience, Usability T E S T P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S
  • 65. PA C K A G E P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S • Your package represents the software in a specific HASH commit • Use command line/automated tools • The package must be environment-agnostic!!! • Promote the package between environments
  • 66. D E P L O Y P H A S E 4 . A U T O M A T E I T ! - P I P E L I N E S • Deploy the package to your runtime • App server, host, virtual machine, etc. • Something went wrong? • Deploy previous commit, as you positively know is safe
  • 67. T O O L I N G 4 . A U T O M A T E I T ! • Own scripts • Automation servers • Jenkins, Go, Hudson… • O.S. configurations • Ansible, Chef, Puppet, Docker (Linux-kernel based)
  • 69. D I S P L AY R E S U LT S 4 . A U T O M A T E I T ! • Each team member must know about pipeline status • Create dashboards with aggregated test results: • Tests failures • Build statuses • Committers that caused the breakage
  • 70. 5 . B E S T P R A C T I C E S http://www.sqlsoldier.com/wp/wp-content/uploads/2012/02/BestPractices.jpg
  • 71. C O M M I T S T R AT E G Y 5 . B E S T P R A C T I C E S • A commit = a point in the project’s History • A commit should be… • Small • Significative • Descriptive commit message • Issue referenced in the commit message • Will you remember its purpose 6 months later?
  • 72. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S
  • 73. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality
  • 74. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests
  • 75. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer
  • 76. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #46 Enable email sending on backend
  • 77. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop
  • 78. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs
  • 79. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #47 Fix bug on View layer (caused by #45-a) #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs
  • 80. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #47 Fix bug on View layer (caused by #45-a) #47 Update tests introduced by #45-b #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs
  • 81. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #47 Fix bug on View layer (caused by #45-a) #47 Update tests introduced by #45-b #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs #47 Add tests to prevent regressions
  • 82. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #47 Fix bug on View layer (caused by #45-a) #47 Update tests introduced by #45-b #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs #47 Add tests to prevent regressions Revert #46 Add Javadocs
  • 83. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #47 Fix bug on View layer (caused by #45-a) #47 Update tests introduced by #45-b #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs #47 Add tests to prevent regressions Revert #46 Add ‘Send email’ button … Revert #46 Add Javadocs
  • 84. C O M M I T S E X A M P L E 5 . B E S T P R A C T I C E S #45 Awesome functionality #45 Create tests #45 Refactor Service Layer #47 Fix bug on View layer (caused by #45-a) #47 Update tests introduced by #45-b #46 Enable email sending on backend #46 Add ‘Send email’ button on desktop #46 Add Javadocs #47 Add tests to prevent regressions Revert #46 Enable email sending… Revert #46 Add ‘Send email’ button … Revert #46 Add Javadocs
  • 85. R E L E A S A B L E C O M M I T S 5 . B E S T P R A C T I C E S • If a single commit passes ALL the safety checks on the pipeline… why not releasing in that state? • Apply that sentence to commit history:
  • 86. P E E R R E V I E W I N G 5 . B E S T P R A C T I C E S • The more pairs of eyes over the code the better • Learn by watching • Experienced team members teach beginners • Leverage the tools your SCM provides (pull requests) • Pair programming if time-zone allows it
  • 87. B R A N C H I N G 5 . B E S T P R A C T I C E S • Never never never code on master branch • Use ‘master’ branch as release, which IS ALWAYS stable! • Have a ‘develop’ branch, which COULD be unstable • Create feature branches for new commits • Merge features into develop. • Once ready to release, merge to master and tag
  • 88. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 89. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 90. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 91. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 92. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 93. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 94. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 95. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 96. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S
  • 97. B R A N C H I N G : G I T F L O W 5 . B E S T P R A C T I C E S Git-Flow: http://danielkummer.github.io/git-flow-cheatsheet/index.html
  • 98. D O N ’ T C H E C K - I N O N A B R O K E N B U I L D 5 . B E S T P R A C T I C E S • Any day, 8:00. Your build is broken • Got an email from the CI server? • Solve errors as soon as possible, do not start anything new • Identify the cause very quickly • Best position to work out
  • 99. D O N ’ T C H E C K - I N O N A B R O K E N B U I L D 5 . B E S T P R A C T I C E S Current breakages + your changes Adding complexity for the build to be fixed Different problems More time to fix the build Still want to check-in? You’ll get used to seeing the build broken all the time http://www.pqmonthly.com/wp-content/uploads/2013/12/ani-1.png
  • 100. A LWAY S R U N T H E T E S T S 5 . B E S T P R A C T I C E S • Do you remember that every single commit should be releasable and HAVE TO be small, significant, isolated? • It has to pass the tests locally • It has to pass the tests on the pipeline on the CI server too… • with each commit or code submission!!!
  • 101. W R I T E W E L L - W R I T T E N T E S T S 5 . B E S T P R A C T I C E S • They will verify that the commit works as expected • Test functionality… • And loops, conditional, input values… • Not only the Happy Path • Did I say that you have to execute the tests? :-)
  • 102. C O N T R O L L E D E N V I R O N M E N T 5 . B E S T P R A C T I C E S • Developer machine: OS configurations, OS tuning, third party libraries/drivers… • CI Server: Same conditions. In every build. For everyone. • Repeatable results!! • Centralized Information Repository • Always display what is happening (CI logs, notifications…)
  • 103. WA I T F O R T H E T E S T S T O PA S S 5 . B E S T P R A C T I C E S • Developers loop: start > work > finish??? > start • Change of context very quickly • Are you sure that your code works as expected? • Are the test finding potencial bugs on it? • If you don’t monitor the build, you cannot answer those questions until it’s very late and expensive. • Work for the build execution to be fast
  • 104. A S S U M E E R R O R S – A N O N Y M O U S “Everyone can commit errors” “Errors are an expected part of the process” – A N O N Y M O U S 5 . B E S T P R A C T I C E S
  • 105. N E V E R G O H O M E O N B R O K E N B U I L D S 5 . B E S T P R A C T I C E S • Friday, 14:58. Your build is broken • What to do? • Leave the build broken and go
  • 106.
  • 107. N E V E R G O H O M E O N B R O K E N B U I L D S 5 . B E S T P R A C T I C E S • Friday, 14:58. Your build is broken • What to do? • Leave the build broken and go
  • 108. N E V E R G O H O M E O N B R O K E N B U I L D S 5 . B E S T P R A C T I C E S • Friday, 14:58. Your build is broken • What to do? • Leave the build broken and go • Leave late, trying to fix it • Revert changes and try next week
  • 109. N E V E R G O H O M E O N B R O K E N B U I L D S 5 . B E S T P R A C T I C E S • Friday, 14:58. Your build is broken • What to do? • Leave the build broken and go • Leave late, trying to fix it • Revert changes and try next week If you keep the build green, other developers will be happy to pull safe code from SCM
  • 110. D I S T R I B U T E D E X A M P L E 5 . B E S T P R A C T I C E S
  • 111. B U I L D M A S T E R 5 . B E S T P R A C T I C E S • Maintains the build • Police it • Write access to SCM • Revert/Prioritize commits • No personal offenses • Critique the code! • Accept rollbacks https://s-media-cache-ak0.pinimg.com/236x/92/03/2a/92032a9e9ee898ac6106867421d81534.jpg
  • 112. B U I L D M A S T E R D R A W B A C K S 5 . B E S T P R A C T I C E S • Feeling of culprit if the build is broken • Team starts seeing him/her as a punisher • Role gets tired of being responsible for others mistakes • It’s not worth it pursuing people • Team gets used to have a house-cleaner https://s-media-cache-ak0.pinimg.com/236x/92/03/2a/92032a9e9ee898ac6106867421d81534.jpg
  • 113. http://homeinteriorsdesigns.info/wp-content/uploads/2014/07/automation-robot.jpg A U T O M AT E D B U I L D M A S T E R 5 . B E S T P R A C T I C E S • Test each pull request!! • Create a reduced pipeline for them • Notify developers on failures • Never accept potential failures • Be aware of false positives!
  • 114. B E P R E PA R E D T O R E V E R T 5 . B E S T P R A C T I C E S • Developers are selfish about their code • Developers don’t like others criticizing their code • Important! Not to blame the developer • We are members of the same team • For the sake of quality, revert to previous change set, as it is safe. Why?
  • 115. “Don’t be afraid, my friend… and revert” - B R U C E L E E ? ? - http://i2.asntown.net/9/bruce-lee-the-lost-interview.jpg
  • 116. B E P R E PA R E D T O R E V E R T 5 . B E S T P R A C T I C E S http://szokblog.pl/ShareImages/1345223838846.jpg
  • 117. T I M E - B O X F I X I N G 5 . B E S T P R A C T I C E S • Before reverting, try to fix it in a small amount of time • 15 minutes? • If you aren’t finished, revert to previous version • Don’t be the sweeper or the last bullet and notify users who broke the build, avoiding magical fixes. • Put mechanisms the sooner: on each code review!
  • 118. T U N E T H E N O T I F I C AT I O N S 5 . B E S T P R A C T I C E S • No notifications are bad • Bad notifications are worse • Send the right email to the right people, otherwise they will start ignoring CI notifications • Manual email when reverting explaining why? • Wall of shame? list of committers who wrote the build
  • 119. D O N ’ T C O M M E N T FA I L U R E S 5 . B E S T P R A C T I C E S
  • 120. D O N ’ T C O M M E N T FA I L U R E S 5 . B E S T P R A C T I C E S • Always last resort, as it will hide real problems • Apply these sample rules ASAP: • Has a regression been found by the test? -> Fix the code! • Is one of the assumptions of the test no longer valid? -> Delete it! • Has the application really changed the functionality under test for a valid reason? -> Update the test!
  • 121. 5 . B E S T P R A C T I C E S
  • 122. R E S P O N S I B I L I T Y 5 . B E S T P R A C T I C E S • Take responsibility for all breakages resulting from your changes. • If you commit a change and all the tests you wrote pass, but others break, the build is still broken. • It’s usually a regression • Fix all the tests not passing, asking component leader for collaboration
  • 123. 5 . B E S T P R A C T I C E S
  • 124. T D D 5 . B E S T P R A C T I C E S • It’s not a requirement!! • Tests are essential to CI • Create tests when developing a new piece of functionality or fixing a bug: • It’s an executable specification of the expected behavior of the code to be written: • Application design, Regression tests, Documentation of the code • Creates a safety net for future refactors
  • 125. C O N C L U S I O N S 6 . S U M M A RY • Discipline • Luke, use the tools! • Everyone can commit errors • Wait for tests to pass • Display what is happening • Don’t be afraid of reverting • Responsibility • Tests/Pipeline stages as a safety net