The talk is about Continuous Delivery with all the different stages covered and how Docker can help with every stage. Presentation also coveres general ideas about modern software development principles.
1. Docker and Continuous Delivery
How containers make achieving Continuous Delivery easier and why they are
not enough to create a successful Continuous Delivery process
Docker Randstad meetup, 26-11-2015
Amsterdam, KPN
Pavel Chunyayev
2. @PavelChunyayev
Amsterdam
Levi9 HQ
Amsterdam – 2005
25 people
Novi Sad
Serbia
Novi Sad – 2005
320+ people
Zrenjanin
Serbia
Zrenjanin– 2014
30+ people
Iasi
Romania
Iasi – 2007
80+ people
Kiev
Ukraine
Kiev – 2008
130+ people
5. @PavelChunyayev
About me
• 11 years of IT experience
• Lived and worked in Ukraine and Estonia
• Moved a year ago to the Netherlands
• Learning Dutch
• Love cycling
• Support me with Holandse 100
10. @PavelChunyayev
It’s not only about speed
• Some companies have different agenda
• Some need pure speed and time to market
• Some want controlled and predictable process
• Some want to ensure that quality of their applications is of a certain
level and complies with requirements
11. @PavelChunyayev
It’s not only about speed
• It's not just about automating deployments.
• It’s not about executing pipeline over and over again
But:
• Organization of the right process to support continuous feature
delivery, improvements and learning.
• Organization proper testing to be able to deliver at high speed.
20. @PavelChunyayev
• Business ideas are generated
• Responsibility of product management / program management
• Ideas need validation
• Flow time is very important
• Docker has nothing to do with it
Inception Plan Develop Integrate Test Release Operate
21. @PavelChunyayev
• Ideas are refined into epics and stories.
• Requirements, test and acceptance criteria are created
Given that feature is available on the website
When I open the website
Then I’m immediately impressed
And I’d like to spend all my money
• Docker has nothing to do with it
Inception Plan Develop Integrate Test Release Operate
22. @PavelChunyayev
• Code is created along with tests and anything else that is required to
deliver the feature to production.
• Developers need:
• Production-like local environment
• Quick to start
• Repeatable and reproducible
• Fast feedback
Inception Plan Develop Integrate Test Release Operate
23. @PavelChunyayev
• First CD stage with Docker
• Running local environments has never been easy
• Most of the popularity of Docker is thanks to developers
• Most companies have started evaluating Docker here (some are even
late for Vagrant)
• No mocking!
Inception Plan Develop Integrate Test Release Operate
24. @PavelChunyayev
• Most people experience CD starting from Build/Integration stage
• Continuous Integration is a fundamental practice
• It’s common to advise against feature branches and commit directly
to master
• Still you can make feature branches work
• Short lived
• Constantly updated against master
Inception Plan Develop Integrate Test Release Operate
25. @PavelChunyayev
• Docker is very helpful:
• Build containers
• Run CI in containers
• Create self-build containers
• Some people go as far as completely get rid of CI:
• Build and integrate containers
• Scheduled as hooks automatically
• Still not most companies want
• Microservices are a lot easier with containers
Inception Plan Develop Integrate Test Release Operate
26. @PavelChunyayev
• You need to invest heavily in automated testing
• Bear testing pyramid in mind
• Move tests to the left
• Run all the tests all the time
• Over and over again
• If you can’t do it, you have wrong tests!
Inception Plan Develop Integrate Test Release Operate
M
E2E
Contract
Component
Integration
Unit
27. @PavelChunyayev
• Docker environments for each kind of tests
• Always fresh
• Quick
• Up-to-date
• Immutable infrastructure!
• Docker can also help with testing infrastructure as well
Inception Plan Develop Integrate Test Release Operate
29. @PavelChunyayev
• Release != deployment
• Independently releasable microservices
• Blue-green, canary, rolling deployments
Inception Plan Develop Integrate Test Release Operate
30. @PavelChunyayev
• Docker shines here
• Easy and uniform deployment
• Complex environments - better with additional tools
Inception Plan Develop Integrate Test Release Operate
31. @PavelChunyayev
• This is where money is generated
• This is where ideas are validated
• Monitor business metrics
• Focus on MTTD and MTTR
• Distributed systems are hard to operate
Inception Plan Develop Integrate Test Release Operate
32. @PavelChunyayev
• Scaling is easy
• Phoenix servers
• Monitoring of containers can be hell – new products are emerging
• Running distributed systems is hard,
containers make it a bit easier.
Inception Plan Develop Integrate Test Release Operate
34. @PavelChunyayev
Takeaways
• Docker doesn’t:
• Solve quality for you
• Create good product ideas
• Improve your software development process
• Docker creates:
• New ways to manage infrastructure
• New ways to run applications in production
pavel@levi9.com
Any questions?