continuous delivery nl.linkedin.com/kimvanwilgen · continuously delivering continuous delivery...
TRANSCRIPT
Continously delivering
continuous deliveryKim van Wilgen | Schuberg Philis
nl.linkedin.com/kimvanwilgen
www.kimvanwilgen.com
@kimvanwilgen
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Customer director Schuberg Philis20
18
Head of software development ANVA
2017
Head of IT KlaverbladVerzekeringen
2014
Hello world1980
Schuberg Philis
3
Mission criticaldigital transformations
Financiallyindependent
Started in2001
300team members (Dec 2018)
EUR 60mrevenue
Market Quality leaderin Business Critical IT Outsourcing
Single KPI100% customer satisfaction
Our customers
4
5
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
The value of continuous delivery
AGILEDefine and develop incremental customer value
CDDeliver incremental customer value
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Go faster!
Go faster
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Small things are easier to handle
Large projects 10% success
52% challenged
Small projects74% success
22% challenged
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Hypothesis driven development
Unused featuresLarge deliveries 64%Small deliveries 14%
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Eliminate waste
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Enhance value through early delivery
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Constant change
Continuous Delivery (CD) is a set of practices and principles in software engineering aimed at building, testing and releasing software faster and more frequently. They help reduce the cost, time and risk of delivering changes, and ultimately value, to customers by allowing for more incremental changes to applications in production.Wikipedia, 2017
Continuous Delivery (CD) is a set of practices and principles in software engineering aimed at building, testing and releasing software faster and more frequently. They help reduce the cost, time and risk of delivering changes, and ultimately value, to customers by allowing for more incremental changes to applications in production.Wikipedia, 2017
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Organize for incremental change
Automation of deployments
Automation of tests
Independent development and delivery
Pervasive visibility of usage and health
Manage the stakeholders
Reducing time, cost and risk
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
1: Organize for incremental change
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Continuously delivering CD
Continuous delivery means you’re building software. So treat is as a
software development process
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Grow together consistently and allow time to adjust
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Autonomy, self organization and T shaped people
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Team autonomy asks leaders to change
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
2: Automation of deployments
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Level 1
Dev Test 1 Test n
Integration Acceptance Production
Dev Test 1 Test n
For each component
Full landscape
Integration automatic
Integration manual
Acceptance Production
Add tests and metrics
Add monitoring
Add reviews
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Peer reviews
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Review small increments
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Monitoring
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Static code analysis
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Quality
Security
Performance
Mutation
Experimenting
A/B testing
Canary releasing
Blue / green deployments
Data driven decisions
Assistance
Walkthroughs
Chatbots
Distributed releasing
Health
Issue tracking
Build status
Monitoring
Immutable servers
Improve and maturize contextual
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
3: Automation of tests
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Continuously delivering CD
Testing requires architecture, design and prioritization
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Testing pyramid
Unit tests are fast and are the test architecture fundament.
01
01
02
0304
High-value tests- Fast (API tests)
- Flaky code- Business critical processes
- Under development
Monitoring in production- Slow tests
- Expensive tests- Externally impacted
01
02
03Lower value tests
- Long-running tests- Stable code
04
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Externally impacted functions
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Maintainable tests
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Infrastructure as code
Version controlTest automation
Configuration tests
Collaborate withthe business
They know their domain, you know test
design.
Grow assurance and enable speed by
shifting left
Mindset
Testers can learn about structure, architecture, maintainability and performance.
Developers can learn the “What would happen if I...” perspective.
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Test if there are tests
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Build status
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Mutation testing
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
4: Independent deployment and delivery
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Continuously delivering CD
Branching is your new mother-in-law. Don’t go there unless you’re forced.
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Martin Fowler, Thoughtworks
Branching means you’re extending integrationFeature pipelines mean you’re extending integration
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Isolation and integration
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Deployment != releasing
“EVERYTHING FACEBOOK WILL BE RELEASING NEXT YEARIS ALREADY IN PRODUCTION”
- Jez Humble -
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Integration pyramid
Business co-creation01
02
03
0405
Inaccessible functionality
Branching
01
02
03 Use toggles
04
Blue / Green05
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Coordinate your deployments
At first. And break dependencies.
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Acceptance Rehearsal CanaryFull
production
Release strategy
Product owner
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Microservices are the first architectural style to fully embrace continuous delivery. It is an evolutionary architecture, which supports incremental non-breaking change as a first principle along multiple dimensions at the structural level of the applicationNeal Ford, Thoughtworks
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
5: Pervasive visibility of usage and health
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Continuously delivering CD
Design for data and integrate it in your development
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Make logging, static analysis and scans and checks relevant
Adapt to your needs
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Build pipelineInsight in process, status and workflow management
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Issue tracking
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Benefit tracking as part of your solutions
A) Business model definition (Responsibility Argenta)
Customer journey improvement Describe the benefit in the customer journey when the feature is delivered. State the key benefits for the user when the objective of the feature is delivered.
Benefit tracking How will the benefits be tracked to validate the business case?
Non functionals State aspects of security, compliance, audit, SLA and support in case they are different then standard. State regulatory deadline if applicable
Key users State the users of the idea
Key risks State the key risks and mitigating measures.
Pre-approvals [] Compliance [] Security [] Legal & Risk [] Monthly recurring cost
Revenue What is the expected revenue that follows from achieving the goal of the feature
Feature refinement by SBP & BD (YT) in cooperation with Argenta
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
6: Manage the stakeholders
VS
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Continuously delivering CD
Speed of delivery isn’t the answer to life, the universe and everything
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Don’t get hurt speeding up
Integration of security in your pipeline
Don’t get hurt speeding up
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
X“If you are doing DevOps without security, you are doing it wrong”
Thiago de Faria – Head of solutions engineering, LINKIT
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Shift left on security
VS
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Automate first
• SAST
• DAST
• Proxy tools
• Dependency checks
• Custom scripts
Integration in the pipelines
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Canary releasing
Cocreating tests
Walkthroughs
Embedded user assistance and
chatbots
Release notes integrated in
deployment
Fallback plans
Manual Acceptance Testing
Education for users
User documentation
Communication about releases
Release process
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Releasenotes from jira
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Auditing and compliance
Only green to production4 eyes principle
Test and code qualityEverything in version control
Audit and compliance
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Continuously delivering CD
Customers don’t want continuousdelivery
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Legacy code and broken trust
@kimvanwilgen | www.kimvanwilgen.comContinuously delivering continuous delivery
Explain yourgoal
Pull, not pushFirst improve,
then accelarate
@kimvanwilgen | www.kimvanwilgen.comThe continuous culture
Organize for incremental change
Automation of deployments
Automation of tests
Independent development and
delivery
Pervasive visibility of usage and
health
Manage the stakeholders
Reducing time, cost and risk