Share
Embed
DevOpsDays Cuba 2016: Workshop: Devops Modelling (Theory, Practice and Caveats)
Author: Patrick Debois
Summary:
DevOpsDays Cuba
October 18, 2016
Transcript
95 slides
-
This presentation ๏Devops ‘Models’ in the wild ๏Seeing the system
๏‘Monitoring Stream Mapping Technique’ ๏Observations ๏Focus on Flow ๏Identifying 4 areas of improvement ๏Example practices -
• Cross-Silo Group exercise • (both dev, test, ops ...)
• Use a big wall • preferred near their officespace • preferred permanent • Whiteboard/Long Paper for drawing • Post-it with different colors Exercise Preparation -
Production Components (architecture) External Add components outside your control your
team depends outside your company (like cloud services) -
Production Components (architecture) External Add components outside your control your
team depends on inside your company (like firewall, dns, mail, ldap) -
Production Components (architecture) Explain how you know they are working
correctly “monitoring” -
Production EndUser Components (architecture) Map the functionalities to your components
(is your monitoring covering all components?) -
Production People (process) EndUser Components (architecture) Now repeat the process
for people/groups involved in support -
Production People (process) EndUser Components (architecture) External Add all external
groups/people involved for support -
Production People (process) EndUser Components (architecture) Supportive Add all supportive
groups/people involved for support -
Production People (process) EndUser Components (architecture) How do you the
process is working well? (KPI’s) -
Production People (process) EndUser Components (architecture) Relate the people/groups to
each of the components (who get alerts) -
Production Components (architecture) People (process) EndUser Relate enduser support to
the process and to the components to the functionalities -
“To fix something we know we have to go
through development process” -
Production Components (architecture) People (process) EndUser Business Repeat mapping for
people/process initiate improvements in production -
Production Components (architecture) People (process) EndUser Business Repeat mapping for
people/process initiate improvements in production -
Production Components (architecture) People (process) EndUser Business Repeat mapping for
people/process initiate improvements in production -
Production Components (architecture) People (process) EndUser Business Repeat mapping for
people/process initiate improvements in production -
Production Components (architecture) People (process) EndUser Business Repeat mapping for
people/process initiate improvements in production -
Production Components (architecture) People (process) EndUser Business Repeat mapping for
people/process initiate improvements in production -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Repeat mapping for dev/test components -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Repeat mapping for dev/test components -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Repeat mapping for dev/test components -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Repeat mapping for dev/test components -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Repeat mapping for dev/test components -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
“Seeing the devops system” -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
More mature people consider dev/test/qa as part of production -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
More mature dev/test/qa/prod components are the same -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
More mature = Less ???? about end-user functionalities -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
More mature = > monitoring/ support for external/cloud services -
Remove friction http://philippe.kruchten.com/2013/11/24/friction/ “Friction: the resistance that one surface or
object encounters when moving over another.” [Merriam-Webster dict.] -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Find your bottleneck(s) = friction -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Technical Debt Social Debt -
OPS DEV Area 2: Extend operations feedback to project Area
1: Extend delivery to production http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/ -
OPS DEV Area 2: Extend operations feedback to project Area
1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/ -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/ -
Tools Can you ‘technically’ do it Process Should you do
it People (culture) Will you do it “Layers per Area” Think ‘tags’ of things you do in an area Area X -
Initial Unpredictable poorly controlled and reactive Managed Focused on project,
often and reactive Defined Focused on organization and proactive Quantitatively Managed Measured and controlled Optimizing Focus on Improvement CMMI - Maturity Levels (Process centric) -
Intro Using Source Control ... Novice Builds Triggered by Commit
... Intermediate Automated Deployment to Testing ... Advanced Automated Functional Testing ... Insane Continuous Deployment to Prod ... Alternative Maturity Levels (cfr. Continuous Integration Model) http://blogs.urbancode.com/continuous-integration/continuous-integration-maturity-model/ -
Name Area Provision dev/test and prod from the same src
DEV delivery to Prod Embed Project knowledge Embed Operations knowledge feedback from Prod OPS Tools Intro Layer Level Practice: Use a configuration mangement system like chef/puppet to provision dev,test and prod from the same source Pattern: Automation, reuse of code Principles: By reusing the code it gets tested more && often more frequent/earlier feedback -
Production Components (architecture) People (process) Dev, Test, QA EndUser Business
Different places where we can improve http://devopsdays.org/blog/2010/05/16/the-panel-experiment-and-ignite-devops/ Andrew Schaefer -
http://www.jedi.be/blog/2013/05/24/Infrastructure%20as%20Code/ cfengine, puppet chef, ansible, salt, ... OPS DEV Area
4: Embed Operations knowledge into Project Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations Infrastructure as code Using same technology versioning/testing/... Executable ‘documentation’ Common language -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.hashicorp.com/ Reproduceable environments Dev/Test machines are using the same setup as Production When your app requires changes on the system you can try them and change them ourself Ops can propagate production changes to dev easily -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations Monitoring & Metrics #monitoring{love,sucks} Enable devs to see the production usage/ problems (graphite) Devs can add metrics in their code (Statsd) Make non-subjective decisions at the start of the project -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations Developers wearing pagers Devs you have run operations learn and take it back to project Devs know the app better and can teach/ train operations people Better Tests to prevent production problems/ pain -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations https://github.com/Netflix/SimianArmy Experience problems earlier in the pipeline (less costly) -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations Visualize frequency of production errors and enable extraction of ‘context’ -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations https://speakerdeck.com/jnewland/chatops-at-github Shared view on the system events -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations Objective view on problems (think retrospective) (Public) Post-Mortems -
OPS DEV Area 4: Embed Operations knowledge into Project Area
2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations Find bottlenecks in procedures/technology Game Days http://www.youtube.com/watch?v=LCZT_Q3z520&noredirect=1 -
Training through simulation OPS DEV Area 4: Embed Operations knowledge
into Project Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations SadOps http://github.com/railsmachine/sadops -
is it even in Dev & Ops ? MGMT FIN
SALES HR Business Customer OPS DEV -
Devops is not just about tools or automation Understanding the
system needs to be done together Takeways Everbody should care about the whole system