5. PAGE5
DEVOPS INDONESIA
“We’re hearing more lately
something called ‘DevOps’. It is
Product Management, Development,
IT Operations, and event
information security all working
together and supporting one
another.
“
“
Gene Kim
Author of the Phoenix Project
Researcher & DevOps Evangelist
9. PAGE9
DEVOPS INDONESIA
DevOps Toolchains
The DevOps toolchain is composed of the tools needed to support a continuous
integration, continuous deployment, and continuous release and operations initiative.
The aim for the DevOps toolchain is to minimized the manual work, once the push is validated
and successful, it can be deployed to production
10. PAGE10
DEVOPS INDONESIA
Requirement
Management/
Elicitation
• Version Control System (App & DB)
• Source Code Repository
• Code Review
• Shared Change Logs
• Build Management (CI
Tools)
• Static Code Analysis
• Dynamic Code Analysis
• Code Coverage Analysis
• Artifact Repository
• Source Code Documentation
• Test Data Management
• Test Automation (Functional, Load, Performance, etc.)
• API Test
• Mobile Application Test
• Security Test
• Environment Creation / Infra Provisioning
• Infra Compliance check
• Configuration Management
• Deployment Management
• Release Orchestration
• Alert & Monitoring Tools
• Chatbot
• Customer Survey
• Product Lifecycle Management & Workflow
• Containerization
• Shared Dashboard
• Collaboration Tools
13. PAGE13
DEVOPS INDONESIA
Build Your Deployment Pipeline Toolchain Gradually
Visualize
Your Process
&
Simplify It Lean your process, automate manual work
(Example the use of VSM as the mapping tools)
14. PAGE14
DEVOPS INDONESIA
Build Your Deployment Pipeline Toolchain Gradually
Visualize
Your Process
&
Simplify It
Automate
Build &
Deployment
Process
Automate
Test,
Static Code
Analysis
Automate
Release
Add
More
Automation
17. PAGE17
DEVOPS INDONESIA
The use of containerization will help you with
deployment, consistency & scalability issue
ChatOps helps to connect people, bots, and tools in an automated and transparent workflow, allowing them
to see the complete status of their work and systems, check the server status until infrastructure /
environment provisioning.
23. PAGE23
DEVOPS INDONESIA
Business
decision to
go Live
Code Build Integrate Test Release Deploy Operate
Agile Development
Continuous Integration
Continuous Delivery
Continuous Deployment
DevOps
Delivery vs. Deployment
25. PAGE25
DEVOPS INDONESIA
Change Development Testing Staging Deploy Release
Value stream mapping
Execution time
Elapsed time
Cycle time (CT)
Lead time (LT)
Reaction Time
How long would it take to deploy a single line of code?
27. PAGE27
DEVOPS INDONESIA
Continuous Integration is a software
development practice where members of a
team integrate their work frequently; usually
each person integrate at least daily leading to
multiple integrations per day.
Martin Fowler
28. PAGE28
DEVOPS INDONESIA
28
Fixing (and finding) bugs late is costly
We don’t do much UnitTests because we…
We developer shall focus on functionality…
I thought it was tested…
29. PAGE29
DEVOPS INDONESIA
29
Lack of
The changes to method XYZ are incompatible with mine, how do we merge now…
When did we decide to upgrade to version…
I thought you fixed that two month ago…
30. PAGE30
DEVOPS INDONESIA
Poor quality code base
We have 3 classes doing the same thing…
Why cant I just include this and require all 5 dependent libraries…
Do anybody know what this interface is doing…
31. PAGE31
DEVOPS INDONESIA
31
Lack of project visibility
What do you mean with the tests are failing…
What is our current code-coverage…
What is in version XYZ of the build…
35. PAGE35
DEVOPS INDONESIA
Github Web hooks
Any commits, merges or pull requests trigger our CI pipeline
CI Server is chained via webhook
Hey!
Something just
happened!
Polling is no solution
36. PAGE36
DEVOPS INDONESIA
Batch Size Matter
(at least) Daily
Integration
Code
in
LOC
Time in h
Risk
developed
verified
Code
in
LOC
Time in h
Reduce WIP and improve flow
Integrate Frequently
38. PAGE38
DEVOPS INDONESIA
CI Core Practices - Summary
• Maintain a code repository
• Remove feature branches, Shared Ownership
• Automate the build
• Make your build self-testing
• Unit & Integration Tests, failed test stop the pipeline
• Every committed change should build on an Integration machine
• Keep the build fast
• Test in a production-like-environment
• Visualize everything, everybody can see what's happening
• Pack and store your artefacts
40. PAGE40
DEVOPS INDONESIA
Continuous Delivery is a software
development discipline where you build
software in such a ways that the software can
be released to production at any time.
Martin Fowler
42. PAGE42
DEVOPS INDONESIA
Why there is no logging in this module…
It works on my machine…
I deployed it manually because I always have…
“wall of confusion”
44. PAGE44
DEVOPS INDONESIA
Requirement
Code
Check-In
Unit Test
Static
Analysis
Packaging
Deploy to Test
Functional
Test
Deploy to Staging
Acceptance
Test Deploy to Pre-
Prod
Security
Test
Performanc
e Test
Quality Gates as trigger
Lack of deployable software
The manager|customer is coming, we have to put a demo together…
I need a new build to test…
Were is that script file to deploy….
Deploy to Prod
Think and define
45. PAGE45
DEVOPS INDONESIA
“A tool to transparently manage all the complex parts of modern
development within a virtual environment without affecting the everyday
workflow of the developer too much.” – http://vagrantup.com
Vagrant
Provider Virtualization Provisioner
We moving slowly into Infrastructure as Code
48. PAGE48
DEVOPS INDONESIA
CD Core Practices - Summary
• Build your binaries only once
• Deploy the same way to all environments
• Smoke Test your deployments
• Deploy into a production like environment to validate changes
• Trigger next stages if a stage succeed
• Stop the line whenever a stage fails