SlideShare a Scribd company logo
Continuous Integration  for citizens
There are lot of areas where we can use CI/CD pipelines.
There are lot of areas where we can use CI/CD pipelines.   • Since CI/CD instruments are very general.  • We can even use CI as a general purpose job server.  • As to materialize views. Real example from ironSource.
I’ll focus on integration of changes during incremental development.
So, what is incremental development is all about?
There is bunch of questions.  I will split them into a five
What is incremental development is all about?   • The TDD question.
What am I going to do?  The TDD question:
I should be driven by requirement.
TDD?
No. It’s not just TDD.
Its RDD  Requirement driven development.
Or feature driven development.  I don’t care.
But how can I proof that I know what to do?
I should write a program that can do it in a constructive way.
Yeah, It’s from math!
I don’t care how obvious your proof is unless you can construct an object you assert about.
No finite program, no proof.
In case of software engineering it means that programs should be not just finite but also finish in a reasonable time.
What is incremental development is all about?   • The TDD question.  • Integrity.
I should implement things in context of my system.
Which is drives us to even more essential...
Regression  My increment should not harm other system’s properties.
How to be sure that I am in the context?
There should be a program for this.
There are programs for this   • Static code checking.  • Code style checking  • Code complexity  • Types  • Previous sate of the system described by tests
What is incremental development is all about?   • The TDD question.  • Integrity.  • Deployment.
I should know how to deploy my system.
I should know how to deploy my system   • Green/Blue releases  • Migrations
Migrations can be useful for Green/Blue releases. Since it you store history of your system increment in migrations.
I should know how to deploy my system   • Green/Blue releases  • Migrations  • Integration and E2E testing
Which bring us back to TDD.
What is incremental development is all about?   • The TDD question.  • Integrity.  • Deployment.  • Isolation
Isolation   • I don’t want to district other developers  • I don’t want other features to interfere with mine in uncontrolled way
There is a program for this!
There is a program for this!   • Git
There is a program for this!   • Git  • or Mercurial
And two models   • Feature branch model  • Gitflow model
Who know the difference?
Gitflow is for Git.
Your stable branch is not your release branch.
What is incremental development is all about?   • The TDD question  • Integrity  • Deployment  • Isolation  • Release readiness
We should be able to release at any time.
Or: we WILL release after each change.
The last mean that we probably will be forced to add feature switches into our programs.
But this is not obviously a bad news.
Intermediate solution:   • CD for staging  • Manual releases for production
There are lots of programs for this.
There are lots of programs for this   • Jenkins/Hudson  • Travis CI  • Codeship  • TeamCity  • Bamboo
There are will be AWS for this.
There are will be AWS for this:   • CodeDeploy  • CodeCommit  • OpsWorks
How does CI works?
It’s a pipeline  with triggers
It’s a pipeline with triggers:   • Some jobs are sequential an some can be run in parallel  • Jobs produce artifacts and they depends on artifacts produced by other jobs  • Jobs produce artifacts and they depends on artifacts produced by other jobs  • The wrapping pipeline called «plan»
Triggers
In Bamboo jobs grouped into stages   • If jobs doesn’t depends on each other they can run in parallel  • It depends on number of free capable agents  • Jobs itself are synchronized sequences of tasks performed on a context. E.g build dir
Triggers   • VCS events  • Build events  • Schedule
Branches
(No header)   • Branches are parametrized versions of the main build plan  • They are bounded to VCS branches  • Bamboo takes care of automatically creation and collecting branches  • Or you can make eternal branches. Like master.
Continuous Integration Workflow  (an RTM case)
Continuous Integration Workflow   • Gitflow  • When development is done we make a pull request  • Bamboo checkouts branche’s HEAD and merges `dev` branch into it
Yeah, it merges `dev` into feature branch
Continuous Integration Workflow   • Gitflow  • When development is done we make a pull request  • Bamboo checkouts branche’s HEAD and merges `dev` branch into it  • It extracts deploy script as an artifact  • It loads dependencies
Continuous Integration Workflow   • ...  • It loads dependencies  • It tests  • It packs  • And it reports
Bamboo can do back merges for successful builds.
Continuous Integration Workflow   • ...  • Push merge result into feature branch if build is successful  • Notify VCS about build status  • Task is moved to code review
Good news: people can run programs in their heads
So, why code review?   • It’s a way to share responsibility  • There are no more sticky tasks  • It’s amazingly fun
Code review doesn’t takes time
Actually it creates time
It’s like putting glass of water into glass of sugar
Because people doesn’t work continuously: they need to switch context
They love to chat and we let them chat
Continuous Integration Workflow   • ...  • If there is enough approves and build is successful then assignee moves task into QA  • The build is deployed to QA  • We can run e2e at this time
Missing part: integration tests as a part of deploy
Bamboo doesn’t support this yet
Continuous Integration Workflow   • ...  • We can run e2e at this time  • QA engineer performs manual feature testing  • And accepts pull request
CI is also a pipeline of decisions
Where is Team Lead among all of this?
The hard truth
We don’t need them. No more!
We can build a team of citizens
A good citizen doesn’t need a boss
He need a goal  or the goal
Continuous integration, TDD and social engineering are parts of one picture
At least they can be assembled this way for great good
Implementing of CI
Case study 1: TDD
How to estimate your personal efforts for starting TDD?
It’s psychologically impossible  since TDD is a mind shift
There are no introspection that can help you to estimate your mental efforts after changing the way of thinking
But. You can just start to do it
And you can estimate this from experience
People who write tests much more satisfied by their work  and by money they earn
TDD is an OOP of 21th century
Case study 2: risks
CI/CD risks   • You will rely on your CI infrastructure  • Any problems with CI is a blocker
But this is much better to catch bugs on production
Or find that you almost impossible to do clean release
CI/CD risks   • You will rely on your CI infrastructure  • Any problems with CI is a blocker  • There no efficient way to explicitly force people to write tests. They should accept this first  • If CI is too slow it become useless
Beyond this keynote   • Performance  • TDD and functional programming  • Metrics  • Mutation testing
The End

More Related Content

What's hot

Extreme programming
Extreme programmingExtreme programming
Extreme programming
Javier Sánchez Rois
 
Edit4_Define the word Done - Lyle H
Edit4_Define the word Done - Lyle HEdit4_Define the word Done - Lyle H
Edit4_Define the word Done - Lyle HLyle Hutson
 
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disasterDigital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Bert Jan Schrijver
 
Oracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disasterOracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disaster
Bert Jan Schrijver
 
"Open" includes users - Leverage their input
"Open" includes users - Leverage their input"Open" includes users - Leverage their input
"Open" includes users - Leverage their input
Randy Earl
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
Ole Christian Rynning
 
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
Gene Kim
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
Michael Lamont
 
Simple Measurements #2
Simple Measurements #2Simple Measurements #2
Simple Measurements #2
Schalk Cronjé
 
Poor Man's Kanban
Poor Man's KanbanPoor Man's Kanban
Poor Man's Kanban
Chicago ALT.NET
 
Agile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the UglyAgile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the Ugly
Tyrone Grandison
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming PresentationThoughtWorks
 
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
 
Introduction to Agile
Introduction to AgileIntroduction to Agile
Introduction to Agile
Charlotte Chang
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
Intechnica
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
Lemi Orhan Ergin
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
Preetam Palwe
 
DevOps – The Evolution of Agile
DevOps – The Evolution of AgileDevOps – The Evolution of Agile
DevOps – The Evolution of Agile
Qualitest
 
Building software that matters (Agilia 2014)
Building software that matters (Agilia 2014)Building software that matters (Agilia 2014)
Building software that matters (Agilia 2014)
Francesco Degrassi
 
Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013
Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013
Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013
XebiaLabs
 

What's hot (20)

Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Edit4_Define the word Done - Lyle H
Edit4_Define the word Done - Lyle HEdit4_Define the word Done - Lyle H
Edit4_Define the word Done - Lyle H
 
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disasterDigital Ocean Amsterdam meetup March 2017 - The DevOps disaster
Digital Ocean Amsterdam meetup March 2017 - The DevOps disaster
 
Oracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disasterOracle Code Brussels 2017 - The DevOps disaster
Oracle Code Brussels 2017 - The DevOps disaster
 
"Open" includes users - Leverage their input
"Open" includes users - Leverage their input"Open" includes users - Leverage their input
"Open" includes users - Leverage their input
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
 
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
DOES SFO 2016 - Sam Guckenheimer & Ed Blankenship "Moving to One Engineering ...
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
 
Simple Measurements #2
Simple Measurements #2Simple Measurements #2
Simple Measurements #2
 
Poor Man's Kanban
Poor Man's KanbanPoor Man's Kanban
Poor Man's Kanban
 
Agile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the UglyAgile Methods: The Good, the Hype and the Ugly
Agile Methods: The Good, the Hype and the Ugly
 
Pair Programming Presentation
Pair Programming PresentationPair Programming Presentation
Pair Programming Presentation
 
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
 
Introduction to Agile
Introduction to AgileIntroduction to Agile
Introduction to Agile
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
DevOps – The Evolution of Agile
DevOps – The Evolution of AgileDevOps – The Evolution of Agile
DevOps – The Evolution of Agile
 
Building software that matters (Agilia 2014)
Building software that matters (Agilia 2014)Building software that matters (Agilia 2014)
Building software that matters (Agilia 2014)
 
Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013
Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013
Losing Sight of DevOps in an Automation Forest - devopsdays Atlanta 2013
 

Similar to Continuous Integration for Citizens

Developer Productivity Engineering with Gradle
Developer Productivity Engineering with GradleDeveloper Productivity Engineering with Gradle
Developer Productivity Engineering with Gradle
All Things Open
 
Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
Nicolas Mas
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
Michele Orselli
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Ahmed Adel
 
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Thoughtworks
 
ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...
ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...
ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...
UA DevOps Conference
 
Inextricably linked reproducibility and productivity in data science and ai ...
Inextricably linked reproducibility and productivity in data science and ai  ...Inextricably linked reproducibility and productivity in data science and ai  ...
Inextricably linked reproducibility and productivity in data science and ai ...
source{d}
 
Den Bosch Java User Group April 2020 - Better software, faster - Principles o...
Den Bosch Java User Group April 2020 - Better software, faster - Principles o...Den Bosch Java User Group April 2020 - Better software, faster - Principles o...
Den Bosch Java User Group April 2020 - Better software, faster - Principles o...
Bert Jan Schrijver
 
stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...
stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...
stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...
NETWAYS
 
Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015
Júnior Rocha
 
Devops for drupal
Devops for  drupalDevops for  drupal
Devops for drupal
Kris Buytaert
 
Webinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous DeliveryWebinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous DeliveryXebiaLabs
 
DevOps make teamwork great.
DevOps make teamwork great.DevOps make teamwork great.
DevOps make teamwork great.
keithmin
 
CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...
CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...
CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...
Bert Jan Schrijver
 
Challenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous DeliveryChallenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous Delivery
DBmaestro - Database DevOps
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
SSW
 
Measure and Accelerate Your Software Delivery
Measure and Accelerate Your Software DeliveryMeasure and Accelerate Your Software Delivery
Measure and Accelerate Your Software Delivery
Anand Chauhan
 
DevoxxUK 2019 - Better software, faster.
DevoxxUK 2019 - Better software, faster.DevoxxUK 2019 - Better software, faster.
DevoxxUK 2019 - Better software, faster.
Bert Jan Schrijver
 
Drupal and Devops , the Survey Results
Drupal and Devops , the Survey ResultsDrupal and Devops , the Survey Results
Drupal and Devops , the Survey Results
Kris Buytaert
 
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
Bert Jan Schrijver
 

Similar to Continuous Integration for Citizens (20)

Developer Productivity Engineering with Gradle
Developer Productivity Engineering with GradleDeveloper Productivity Engineering with Gradle
Developer Productivity Engineering with Gradle
 
Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
Laptop Devops: Putting Modern Infrastructure Automation to Work For Local Dev...
 
ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...
ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...
ОЛЕКСАНДР СНІГОВИЙ «Continuous Deployment: Challenges, Solutions, and Lesson...
 
Inextricably linked reproducibility and productivity in data science and ai ...
Inextricably linked reproducibility and productivity in data science and ai  ...Inextricably linked reproducibility and productivity in data science and ai  ...
Inextricably linked reproducibility and productivity in data science and ai ...
 
Den Bosch Java User Group April 2020 - Better software, faster - Principles o...
Den Bosch Java User Group April 2020 - Better software, faster - Principles o...Den Bosch Java User Group April 2020 - Better software, faster - Principles o...
Den Bosch Java User Group April 2020 - Better software, faster - Principles o...
 
stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...
stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...
stackconf 2023 | Better Living by Changing Less – IncrativeOps by Michael Cot...
 
Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015
 
Devops for drupal
Devops for  drupalDevops for  drupal
Devops for drupal
 
Webinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous DeliveryWebinar: Demonstrating Business Value for DevOps & Continuous Delivery
Webinar: Demonstrating Business Value for DevOps & Continuous Delivery
 
DevOps make teamwork great.
DevOps make teamwork great.DevOps make teamwork great.
DevOps make teamwork great.
 
CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...
CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...
CodeOne 2018 - Better software, faster: principles of Continuous Delivery and...
 
Challenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous DeliveryChallenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous Delivery
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
 
Measure and Accelerate Your Software Delivery
Measure and Accelerate Your Software DeliveryMeasure and Accelerate Your Software Delivery
Measure and Accelerate Your Software Delivery
 
DevoxxUK 2019 - Better software, faster.
DevoxxUK 2019 - Better software, faster.DevoxxUK 2019 - Better software, faster.
DevoxxUK 2019 - Better software, faster.
 
Drupal and Devops , the Survey Results
Drupal and Devops , the Survey ResultsDrupal and Devops , the Survey Results
Drupal and Devops , the Survey Results
 
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
AmsterdamJUG September 2019 - Better software, faster: Principles of Continuo...
 

Continuous Integration for Citizens