“DevOps”: Maturity Model : What?
Chokchai/Phongsak/Twin
About ME
About ME
Phongsak Ritpitakphong Agile Coach @ Odd-e Thailand, email:jane@odd-e.com
- Jane, Jimmy
Phongsak Ritpitakphong
Water Fall
—> CMMi, ITIL
—> Agile, Lean
—> Scrum, UX, XP
Agile Coach @ Odd-e
Our Customer
Value Streams
Business Development Release/Deploy Monitoring
7 Wastes in Product Development
7 Wastes in Product Development
Value Streams
Business Development Release/Deploy Monitoring
Value Streams
Release/Deploy Monitoring
7 Wastes in Product Development
The Last Mile
Bad Manual Deployment Process

Insufficient Configuration Management
Value Streams
Configuration
Management
Continuous
Integration
Test Automation
Deployment Automation
Build Pipeline
Continuous Deployment
Test Automation
90%
60%
60%
50%
10%
80%
?%
?%
?%
?%
Configuration Management
Versioning Everything
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: name=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
rabbitmq:
image: rabbitmq:3.5.3-management
ports:
- "5672:5672"
- "15672:15672"
eureka:
build: ./eureka-server
ports:
- "8761:8761"
zipkin:
build: ./zipkin-server
links:
- rabbitmq
ports:
- "9411:9411"
environment:
RABBIT_HOST: rabbitmq
mongodb:
image: mongo:3.0.4
ports:
- "27017:27017"
command: mongod --smallfiles
restfulservice:
build: ./spring-boot-restful-service
ports:
- "8081:8080"
links:
- rabbitmq
- mongodb
- eureka
web:
build: ./spring-boot-webapp
ports:
- "8080:8080"
links:
- eureka
- rabbitmq
Continuous Integration
“CI is developer practice for integrate code as
frequent as they can. Some teams can integrate
their code every 3 minutes"
Continuous Integration Environment
Invest in Autonomation
DevOps Adoption Roadmap
What am I trying to achieve?1
Where am I currently?2
What are my priorities?3
What new practices should help me grow?4
What am I trying to achieve?1
Where am I currently?2
As is
Assessment
Devops Maturity Model: Can do by yourself
Define release with business
objectives

Measure to customer value
Improve continuously with
development intelligence 

Test Continuously
Manage environments through
automation 

Provide self-service build,
provision and deploy
Automate problem isolation and
issue resolution

Optimize to customer KPIs
continuously
Document objectives locally 

Manage department resources
Centralize Requirements
Management

Measure to project metrics
Plan and source strategically

Dashboard portfolio measures
Manage Lifecycle artifacts

Schedule SCM integrations and
automated builds

Test following construction
CentralizeLink lifecycle
information

Deliver and buildwith test

Centralize and automate test
management
Manage data and virtualize
services for test Deliver and
integrate continuously
Plan and manage releases
Standardize deployments
Plan departmental releases and
automate status

Automate deployment with
standard topologies
Standardize and automate
cross-enterprise

Automate patterns-based
provision and deploy
Monitor resources
consistentlyCollaborate Dev/
Ops informally
Monitor using business and end
user contextCentralize event
notification and incident
resolution
Optimize applicationsUse
enterprise issue resolution
procedures
Practiced
Repeatable
Reliable
Scaled
Plan/Measure Development/Test Release/Deploy Monitor/Optimize
Devops Maturity Model: Define Level
Document objectives locally 

Manage department resources
Centralize Requirements
Management

Measure to project metrics
Plan and source strategically

Dashboard portfolio measures
Define release with business
objectives 

Measure to customer value
Devops Maturity Model
Define Level
Defined and Document
Oriented

Team base on platform and
technology
Extend Team Collaboration
Common Process for all
changes
One Backlog per Team
Cross Team Continuous
Improvement

Team Response all the way to
production
Cross Functional Team
Implementation Level
Document objectives locally 

Manage department resources
Centralize Requirements
Management

Measure to project metrics
Plan and source strategically

Dashboard portfolio measures
Define release with business
objectives

Measure to customer value
Manage Lifecycle artifacts

Schedule SCM integrations and
automated builds

Test following construction
CentralizeLink lifecycle
information

Deliver and buildwith test

Centralize and automate test
management
Manage data and virtualize
services for test Deliver and
integrate continuously
Improve continuously with
development intelligence Test
Continuously
Plan and manage releases
Standardize deployments
Plan departmental releases and
automate status

Automate deployment with
standard topologies
Standardize and automate
cross-enterprise

Automate patterns-based
provision and deploy
Manage environments through
automation 

Provide self-service build,
provision and deploy
Monitor resources
consistentlyCollaborate
Dev/Ops informally
Monitor using business and end
user contextCentralize event
notification and incident
resolution
Optimize applicationsUse
enterprise issue resolution
procedures
Automate problem isolation and
issue resolutionOptimize to
customer KPIs continuously
Practiced
Repeatable
Reliable
Scaled
Plan/Measure Development/Test Release/Deploy Monitor/Optimize
Adoption Map and Goal
Fully Achieved Partial Achieved Initiative Goal
Initiative Strategy
Incremental Improvement
What are my priorities?3
Document objectives locally 

Manage department resources
Centralize Requirements
Management

Measure to project metrics
Plan and source strategically

Dashboard portfolio measures
Define release with business
objectives

Measure to customer value
Manage Lifecycle artifacts

Schedule SCM integrations and
automated builds

Test following construction
Centralize

Link lifecycle information

Deliver and build with test

Centralize and automate test
management
Manage data and virtualize
services for test Deliver and
integrate continuously
Improve continuously with
development intelligence Test
Continuously
Plan and manage releases
Standardize deployments
Plan departmental releases and
automate status

Automate deployment with
standard topologies
Standardize and automate
cross-enterprise

Automate patterns-based
provision and deploy
Manage environments through
automation 

Provide self-service build,
provision and deploy
Monitor resources consistently

Collaborate Dev/Ops informally
Monitor using business and end
user context

Centralize event notification
and incident resolution
Optimize applicationsUse
enterprise issue resolution
procedures
Automate problem isolation and
issue resolutionOptimize to
customer KPIs continuously
Practiced
Repeatable
Reliable
Scaled
Plan/Measure Development/Test Release/Deploy Monitor/Optimize
Adoption Map and Goal
Fully Achieved Partial Achieved Initiative Goal
1
1 1
2
What new practices should help me grow?4
1 2
1. 80%++ unit test coverage
2. 60%++ integration test coverage
3. Source code Complexity Metric using
SonarQube
1. Automate Acceptance Test for
important scenarios
2. Using build pipeline
Development/Test
Development/Test
Monitor/Optimize
1. Cut Baseline per sprint
2. Capture all changes in SCM (DB
Schema, Resources)
3. Automate DB Migration
1. Bi weekly Dev/Ops feedback
workshop
2. Using Ansible for deployment
Milestone
Stream
Technical Improvement is Product
Product Owner: Invest in technical improvement , we are working on the same streams
Apply 70 : 30 Rule

70% for Business Value



30% for Technical Improvement

Devops maturity model

  • 1.
    “DevOps”: Maturity Model: What? Chokchai/Phongsak/Twin
  • 2.
  • 3.
  • 4.
    Phongsak Ritpitakphong AgileCoach @ Odd-e Thailand, email:jane@odd-e.com - Jane, Jimmy Phongsak Ritpitakphong Water Fall —> CMMi, ITIL —> Agile, Lean —> Scrum, UX, XP Agile Coach @ Odd-e
  • 5.
  • 10.
    Value Streams Business DevelopmentRelease/Deploy Monitoring
  • 11.
    7 Wastes inProduct Development
  • 12.
    7 Wastes inProduct Development
  • 13.
    Value Streams Business DevelopmentRelease/Deploy Monitoring
  • 14.
  • 15.
    7 Wastes inProduct Development
  • 16.
    The Last Mile BadManual Deployment Process
 Insufficient Configuration Management
  • 17.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    --- - hosts: webservers vars: http_port:80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
  • 27.
    rabbitmq: image: rabbitmq:3.5.3-management ports: - "5672:5672" -"15672:15672" eureka: build: ./eureka-server ports: - "8761:8761" zipkin: build: ./zipkin-server links: - rabbitmq ports: - "9411:9411" environment: RABBIT_HOST: rabbitmq mongodb: image: mongo:3.0.4 ports: - "27017:27017" command: mongod --smallfiles restfulservice: build: ./spring-boot-restful-service ports: - "8081:8080" links: - rabbitmq - mongodb - eureka web: build: ./spring-boot-webapp ports: - "8080:8080" links: - eureka - rabbitmq
  • 28.
  • 29.
    “CI is developerpractice for integrate code as frequent as they can. Some teams can integrate their code every 3 minutes"
  • 30.
  • 31.
  • 32.
    DevOps Adoption Roadmap Whatam I trying to achieve?1 Where am I currently?2 What are my priorities?3 What new practices should help me grow?4
  • 33.
    What am Itrying to achieve?1
  • 34.
    Where am Icurrently?2
  • 35.
  • 36.
    Devops Maturity Model:Can do by yourself
  • 37.
    Define release withbusiness objectives
 Measure to customer value Improve continuously with development intelligence 
 Test Continuously Manage environments through automation 
 Provide self-service build, provision and deploy Automate problem isolation and issue resolution
 Optimize to customer KPIs continuously Document objectives locally 
 Manage department resources Centralize Requirements Management
 Measure to project metrics Plan and source strategically
 Dashboard portfolio measures Manage Lifecycle artifacts
 Schedule SCM integrations and automated builds
 Test following construction CentralizeLink lifecycle information
 Deliver and buildwith test
 Centralize and automate test management Manage data and virtualize services for test Deliver and integrate continuously Plan and manage releases Standardize deployments Plan departmental releases and automate status
 Automate deployment with standard topologies Standardize and automate cross-enterprise
 Automate patterns-based provision and deploy Monitor resources consistentlyCollaborate Dev/ Ops informally Monitor using business and end user contextCentralize event notification and incident resolution Optimize applicationsUse enterprise issue resolution procedures Practiced Repeatable Reliable Scaled Plan/Measure Development/Test Release/Deploy Monitor/Optimize Devops Maturity Model: Define Level
  • 38.
    Document objectives locally
 Manage department resources Centralize Requirements Management
 Measure to project metrics Plan and source strategically
 Dashboard portfolio measures Define release with business objectives 
 Measure to customer value Devops Maturity Model Define Level Defined and Document Oriented
 Team base on platform and technology Extend Team Collaboration Common Process for all changes One Backlog per Team Cross Team Continuous Improvement
 Team Response all the way to production Cross Functional Team Implementation Level
  • 40.
    Document objectives locally
 Manage department resources Centralize Requirements Management
 Measure to project metrics Plan and source strategically
 Dashboard portfolio measures Define release with business objectives
 Measure to customer value Manage Lifecycle artifacts
 Schedule SCM integrations and automated builds
 Test following construction CentralizeLink lifecycle information
 Deliver and buildwith test
 Centralize and automate test management Manage data and virtualize services for test Deliver and integrate continuously Improve continuously with development intelligence Test Continuously Plan and manage releases Standardize deployments Plan departmental releases and automate status
 Automate deployment with standard topologies Standardize and automate cross-enterprise
 Automate patterns-based provision and deploy Manage environments through automation 
 Provide self-service build, provision and deploy Monitor resources consistentlyCollaborate Dev/Ops informally Monitor using business and end user contextCentralize event notification and incident resolution Optimize applicationsUse enterprise issue resolution procedures Automate problem isolation and issue resolutionOptimize to customer KPIs continuously Practiced Repeatable Reliable Scaled Plan/Measure Development/Test Release/Deploy Monitor/Optimize Adoption Map and Goal Fully Achieved Partial Achieved Initiative Goal
  • 41.
  • 42.
    What are mypriorities?3
  • 43.
    Document objectives locally
 Manage department resources Centralize Requirements Management
 Measure to project metrics Plan and source strategically
 Dashboard portfolio measures Define release with business objectives
 Measure to customer value Manage Lifecycle artifacts
 Schedule SCM integrations and automated builds
 Test following construction Centralize
 Link lifecycle information
 Deliver and build with test
 Centralize and automate test management Manage data and virtualize services for test Deliver and integrate continuously Improve continuously with development intelligence Test Continuously Plan and manage releases Standardize deployments Plan departmental releases and automate status
 Automate deployment with standard topologies Standardize and automate cross-enterprise
 Automate patterns-based provision and deploy Manage environments through automation 
 Provide self-service build, provision and deploy Monitor resources consistently
 Collaborate Dev/Ops informally Monitor using business and end user context
 Centralize event notification and incident resolution Optimize applicationsUse enterprise issue resolution procedures Automate problem isolation and issue resolutionOptimize to customer KPIs continuously Practiced Repeatable Reliable Scaled Plan/Measure Development/Test Release/Deploy Monitor/Optimize Adoption Map and Goal Fully Achieved Partial Achieved Initiative Goal 1 1 1 2
  • 44.
    What new practicesshould help me grow?4
  • 45.
    1 2 1. 80%++unit test coverage 2. 60%++ integration test coverage 3. Source code Complexity Metric using SonarQube 1. Automate Acceptance Test for important scenarios 2. Using build pipeline Development/Test Development/Test Monitor/Optimize 1. Cut Baseline per sprint 2. Capture all changes in SCM (DB Schema, Resources) 3. Automate DB Migration 1. Bi weekly Dev/Ops feedback workshop 2. Using Ansible for deployment Milestone Stream
  • 46.
    Technical Improvement isProduct Product Owner: Invest in technical improvement , we are working on the same streams
  • 47.
    Apply 70 :30 Rule
 70% for Business Value
 
 30% for Technical Improvement