PAGE1
DEVOPS INDONESIA
DEVOPS INDONESIA
Jakarta, 05 Desember 2017
DevOps Toolchain & Technology
DevOps Community in Indonesia
PAGE2
DEVOPS INDONESIA
Enjoy, we provide
rice... snack
PAGE3
DEVOPS INDONESIA
Let’s get know each other
PAGE4
DEVOPS INDONESIA
DevOps Trainer | DevOps Consultant | Agile Practitioner | Engineer
Made Mulia Santosa Indrajaya
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
PAGE6
DEVOPS INDONESIA
How to build, test and release faster,
more frequently and more reliable ?
PAGE7
DEVOPS INDONESIA
AutomateYourTask&Process
PAGE8
DEVOPS INDONESIA
Okay, I am using
several tools and
trying to
automate things
What is DevOps
Toolchain ?
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
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
PAGE11
DEVOPS INDONESIA
SCM
Deployment
RDBMS
ARA
NoSQL
DB CD
Middleware
Test
Automation
Container
Cloud
Collaboration
CI Tools
Remote Server
Automation
Configuration
Automation
PAGE12
DEVOPS INDONESIA
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)
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
PAGE15
DEVOPS INDONESIA
Multiple Business Applications may require different
Pipelines and Toolchains
PAGE16
DEVOPS INDONESIA
The use of containerization will help you with
deployment, consistency & scalability issue
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.
PAGE18
DEVOPS INDONESIA
AndDon’tForget…
knowledge > practice > tools
PAGE19
DEVOPS INDONESIA
Agile practitioner | LEAN thinker | Software Engineer | Technologist
Thomas Rothe
PAGE20
DEVOPS INDONESIA
The pace of change is accelerating….
PAGE21
DEVOPS INDONESIA
PAGE22
DEVOPS INDONESIA
My life as a Software Engineer ….
Prepare yourself
Image: Alamy Stock Photo
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
PAGE24
DEVOPS INDONESIA
Executable
Spec.
Unit TestIdea Code Build Release
Feedback Loops
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?
PAGE26
DEVOPS INDONESIA
Continuous
Integration
methodology daily automated
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
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…
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…
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…
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…
PAGE32
DEVOPS INDONESIA
Fast Feedback
developer centric
Developer centric to validate if we implement if correctly
PAGE33
DEVOPS INDONESIA Nobody has a more important job than fixing the problem!
The 10 minute rule
Toyota Production System – Andon Cord (Jidoka)
PAGE34
DEVOPS INDONESIA
Build
Test
Result
Don’t forget the Results – Visualize everything
Create physical visualization if you can
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
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
PAGE37
DEVOPS INDONESIA
Store your Artefacts
Remote
Repositories
Local
and manage them
Your door to Continuous Deployment
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
PAGE39
DEVOPS INDONESIA
39
Continuous Delivery
Ingredients:
Continuous Integration (CI)
Version Control
Test Automation
Automated &
Repeatable Deployment
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
PAGE41
DEVOPS INDONESIA
Continuous Integration (CI)
Version Control
Test Automation
Automated & Repeatable Deployment
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”
PAGE43
DEVOPS INDONESIA
The
80% done
syndrome
Work in Progress (WIP) problem
DONE = Shippable into production
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
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
PAGE46
DEVOPS INDONESIA
46
Always do Smoke Tests
PAGE47
DEVOPS INDONESIA 2017 State of DevOps Report
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
PAGE49
DEVOPS INDONESIA
linkedin.com/in/throthe/
http://www.agilecircles.id
Stay Connected
@devopsindonesia
@thomas.rothe.bali
http://www.devopsindonesia.com
linkedin.com/in/mademulia/
PAGE50
DEVOPS INDONESIA
Alone We are smart, together We are brilliant
THANKYOU !
Quote by Steve Anderson

DevOps Indonesia - DevOps Toolchain and Technology