61
1 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive How to Use DevOps & APM to Release Better Software Faster Brett Hofer Global DevOps Practice Lead Dynatrace @brett_solarch Hasan Yasar Technical Manager Carnegie Melon SEI @SEINews

How to Use DevOps & APM to Release Better Software Faster

Embed Size (px)

Citation preview

Page 1: How to Use DevOps & APM to Release Better Software Faster

1 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

How to Use DevOps & APM to Release Better Software Faster

Brett Hofer

Global DevOps Practice Lead

Dynatrace

@brett_solarch

Hasan Yasar

Technical Manager

Carnegie Melon SEI

@SEINews

Page 2: How to Use DevOps & APM to Release Better Software Faster

© 2015 Carnegie Mellon University

How to Use DevOps & APM to Release Better Software Faster

Hasan YasarTechnical Manager

Software Engineering InstituteCarnegie Mellon University

Page 3: How to Use DevOps & APM to Release Better Software Faster

3How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

DevOps ?Why

Page 4: How to Use DevOps & APM to Release Better Software Faster

4How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Known SDLC / Waterfall process

Page 5: How to Use DevOps & APM to Release Better Software Faster

5How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

With Agile

Page 6: How to Use DevOps & APM to Release Better Software Faster

6How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Business

Research Budget Document Water-

Jez Humble, https://youtu.be/L1w2_AY82WY

Dave West, http://sdtimes.com/analyst-watch-water-scrum-fall-is-the-reality-of-agile/

Page 7: How to Use DevOps & APM to Release Better Software Faster

7How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Business

Research Budget Document Water-Development

Scrum-

Jez Humble, https://youtu.be/L1w2_AY82WY

Dave West, http://sdtimes.com/analyst-watch-water-scrum-fall-is-the-reality-of-agile/

Page 8: How to Use DevOps & APM to Release Better Software Faster

8How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Business

Research Budget Document Water-Development

Scrum-

Integrate Test Release FallJez Humble, https://youtu.be/L1w2_AY82WY

Dave West, http://sdtimes.com/analyst-watch-water-scrum-fall-is-the-reality-of-agile/

QA & Operations

Page 9: How to Use DevOps & APM to Release Better Software Faster

9How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Shared Goals CollaborationBusiness Needs

DevOps

Page 10: How to Use DevOps & APM to Release Better Software Faster

10How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Teams Together DevOps brings

Page 11: How to Use DevOps & APM to Release Better Software Faster

11How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Project Roles Have Different Functions

Developers Operations

Create

Change

Deliver

Maintain

Monitor

Manage Environment

Page 12: How to Use DevOps & APM to Release Better Software Faster

12How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Developers Favor Dynamic Behaviors

Developers Operations

Create

Change

Deliver

Maintain

Monitor

Manage Environment

Page 13: How to Use DevOps & APM to Release Better Software Faster

13How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Operations Favors Static Behaviors

Developers Operations

Create

Change

Deliver

Maintain

Monitor

Manage Environment

Page 14: How to Use DevOps & APM to Release Better Software Faster

14How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Developers Operations

Create

Change

Deliver

Maintain

Monitor

Manage Environment

Where is the real pain?

Page 15: How to Use DevOps & APM to Release Better Software Faster

15How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Software Projects Are Complex

Deployment

Maintenance

Security

Programming

Infrastructure

Scalabilty

Networks

Functional

Requirements

Performance

Testing

User Interface

Technical

Documentation

Updates

Code Review

Release

Review User

Documentation

Data Privacy

Intrusion

Detection

User

Requirements

Business Constraints

Legal Issues

Market Needs

Budgets / Timelines

Page 16: How to Use DevOps & APM to Release Better Software Faster

16How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Information Security Expertise

Deployment

Maintenance

Security

Programming

Infrastructure

Scalabilty

Networks

Functional

Requirements

Performance

Testing

User Interface

Technical

Documentation

Updates

Code Review

Release

Review User

Documentation

Data Privacy

Intrusion

Detection

User

Requirements

Business Constraints

Legal Issues

Market Needs

Budgets / Timelines

Business Analyst Expertise

Quality Assurance Expertise

IT Operations Expertise

Developer Expertise

Page 17: How to Use DevOps & APM to Release Better Software Faster

17How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

DevOps Breaks Down Silos: Eliminate pains

Page 18: How to Use DevOps & APM to Release Better Software Faster

18How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

The DevOps Lifecycle : Faster release with visible feedback loop!

Collaboration between project team roles

Infrastructure as Code: Scripted Infrastructure Configuration

Automation of Tasks / Processes / Workflows

Performance Monitoring Applications and Infrastructure

Page 19: How to Use DevOps & APM to Release Better Software Faster

19How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Collaborative DecisionsDevOps enables

Page 20: How to Use DevOps & APM to Release Better Software Faster

20How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Goal: Eliminate risk in through SLDC /siloed Team

Page 21: How to Use DevOps & APM to Release Better Software Faster

21How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

The DevOps lifecycle is Full of Decision Points

Without team knowledge, developers continuallymake uninformed decisions, causing eventual risk or inefficiency

Page 22: How to Use DevOps & APM to Release Better Software Faster

22How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

The DevOps lifecycle is Full of Decision Points

How many users?

Payment model?

Who is the Target Market?

Which regions?

Page 23: How to Use DevOps & APM to Release Better Software Faster

23How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

The DevOps lifecycle is Full of Decision Points

What OS?

What ports?

VMs or containers?

Entry points?

Page 24: How to Use DevOps & APM to Release Better Software Faster

24How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

The DevOps lifecycle is Full of Decision Points

What kind of user authentication?

REST vs SOAP?

How to architect for scalability?

Page 25: How to Use DevOps & APM to Release Better Software Faster

25How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Uninformed Decisions Lead Your Project Down Suboptimal Paths

Developers Only Dev + Ops

Page 26: How to Use DevOps & APM to Release Better Software Faster

26How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

DevOps enables

Infrastructure Automation

Page 27: How to Use DevOps & APM to Release Better Software Faster

27How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

A Traditional Scenario

A system requires multiple servers networked together

Each server is to be provisioned uniquely, providing a specific service

Page 28: How to Use DevOps & APM to Release Better Software Faster

28How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

A Traditional Scenario

At deployment, the deployment environment (Test / QA / Production)is manually provisioned to match the expected infrastructure configuration

This often means manual installation of

packages, configurations, and networking components…

…and room for human error

Page 29: How to Use DevOps & APM to Release Better Software Faster

29How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Divergence on deployment process

Environments are independent, volatile, and easily manipulated.

Without care, they will diverge.

Page 30: How to Use DevOps & APM to Release Better Software Faster

30How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Move into automation : Infrastructure as Code (IaC)A Code that creates infrastructure

* A concretely defined description of the environment is good material for conversation

between team members.

Page 31: How to Use DevOps & APM to Release Better Software Faster

31How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

IaC Apparent Benefits

Because the environment and application are versioned together, tagging

code is that much more meaningful.

Page 32: How to Use DevOps & APM to Release Better Software Faster

32How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

IaC Promotes Quality Attributes

The process that creates and configures the infrastructure for your application is, itself, an application.

As an application, environment creation and configuration is now:

• Automatable

• Repeatable

• Versionable

• Reviewable

• Diffable

• Testable (it works)

• Human-readable

• Verifiable (it is right)

Page 33: How to Use DevOps & APM to Release Better Software Faster

33How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

IaC Has Operational Benefits

• Lower Risk

• Guaranteed Documentation

• Stable Rollback

• Fast Onboarding

• Time Savings

• 100% Environment Parity

Page 34: How to Use DevOps & APM to Release Better Software Faster

34How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Common DevOps enabled tools for :IaCChef or Puppet - wrappers around your shell

provide hooks and convenience methods

abstract operating system-specifics, provide portability

Ansible or Fabric - to automate apps and IT infrastructure

Docker - linux containers

runs on Linux only (for now)

entire environments can be easily shared

Shell scripts – simply scripting platform-specific commands

Vagrant - assists in managing virtual machines and executing provisioners

Page 35: How to Use DevOps & APM to Release Better Software Faster

35How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

And brings

Quality!

DevOps improves

Defects Detection

Page 36: How to Use DevOps & APM to Release Better Software Faster

36How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Automating Integration Fixes These Issues

Automation…

Removes inefficiencies due to human-driven process

Standardizes artifact submission process

Guarantees consistent results

Allows team to fail fast (and fix fast)

Reduces pain of integration

Page 37: How to Use DevOps & APM to Release Better Software Faster

37How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Continuous Integration is Even Better

Continuous Integration uses a build server to…

Integrate artifacts on every change

Give team with immediate notification of failure or success

Require issues be fixed before moving forward

Enforce standards (can fail based on quality as well as functionality)

Page 38: How to Use DevOps & APM to Release Better Software Faster

38How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Fail the Build When Software is Not Good Enough

Don’t just configure failure for compile/build errors!

Want 90% test coverage? Fail the build if code base is <90% covered

Want all DB queries < 2sec? Test them, and fail the build otherwise

Want to make sure code conforms to style guide? You guessed it…

CI is your best tool to enforce quality standards

Page 39: How to Use DevOps & APM to Release Better Software Faster

39How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Continuous Integration Requires Some Discipline…

For successful implementation of a CI process:

Developers must commit changes often

CI system should build every commit

Automate every step of the build process

Automate tests, and fail the build on test failure

CI system should report results immediately to everyone

CI system should instantly revert to previous release on failure

All environments should have 100% parity

Page 40: How to Use DevOps & APM to Release Better Software Faster

40How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

…But Yields Significant Rewards

Lower costs

• Immediate detection of problems• Removal of human integration labor

Greater visibility for everyone

• Developers• Operations• Quality Assurance• Management• Customers

Increased confidence in your software

Page 41: How to Use DevOps & APM to Release Better Software Faster

41How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Global Vision

Project Management

Tools

Issue Tracker

Wiki

Page 42: How to Use DevOps & APM to Release Better Software Faster

42How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

DevOps Interoperability / Traceability - General

Page 43: How to Use DevOps & APM to Release Better Software Faster

43How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

DevOps - Interoperability / Traceability –Reference Implementation

Page 44: How to Use DevOps & APM to Release Better Software Faster

44How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Human actions/inputs to the software development

process

Page 45: How to Use DevOps & APM to Release Better Software Faster

45How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Actions performed by autonomous

systems

Page 46: How to Use DevOps & APM to Release Better Software Faster

46How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

And enables

Faster Release

DevOps reduces

Deployment Failures

Page 47: How to Use DevOps & APM to Release Better Software Faster

47How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Continuous Deployment

Changes are deployed ASAP into production

Continuous Delivery

Changes are deployed immediately into a production-like environment, to ensure that they could be deployed into production

Page 48: How to Use DevOps & APM to Release Better Software Faster

48How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Shift Left Operational Concerns

Page 49: How to Use DevOps & APM to Release Better Software Faster

49How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Shift Left Operational Concerns

Page 50: How to Use DevOps & APM to Release Better Software Faster

50How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Gold-standard deployment

• Environment Parity by IaC

• Use the same process to deploy to development, test, and

production

• Automate

• Perform incremental changes

• Appropriate Testing

Page 51: How to Use DevOps & APM to Release Better Software Faster

51How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Continuous Delivery Enforces 100% Parity

Environment inconsistencies between environments will result in risks

✔ ✔ ✔ ✖

Page 52: How to Use DevOps & APM to Release Better Software Faster

52How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Incremental Changes, Continues Testing, Early Performance Monitoring

• Smaller changes to production can be less risky than large ones

• Decrease the number of potential defects that could cause an outage

• Monitor the performance of application as early as possible.

Page 53: How to Use DevOps & APM to Release Better Software Faster

53How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Test Enough That You Are Sure You Could Deploy Successfully

How much is enough?

What factors are important to you and your organization?

Security? Automate a large number of security-focused unit/integration tests

Scalability? Automate high-volume load testing

Design your CI/CD success criteria to enforce your goals

Page 54: How to Use DevOps & APM to Release Better Software Faster

54How to Use DevOps & APM to Release Better Software Faster© 2015 Carnegie Mellon University

Continuous Delivery Is REALLY About Rigorous Testing

Certainty requires rigorous testing before and after

deployment

Page 55: How to Use DevOps & APM to Release Better Software Faster

55 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

How to Use DevOps & APM to Release Better Software Faster

Brett Hofer

Global DevOps Practice Lead

Dynatrace

@brett_solarch

Page 56: How to Use DevOps & APM to Release Better Software Faster

Release at the Speed of Business • Increase speed to market while improving quality and performance

• Injecting DevOps practices into the Application Lifecycle

• Application Performance Management Best Practices

Page 57: How to Use DevOps & APM to Release Better Software Faster

57 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

• Bake your APM strategy right into the application lifecycle

• Dev and Ops teams – improve processes!• Ensures Business Success Metrics are always visible &

understood throughout the entire Application lifecycle

• APM integration done in parallel with dev - minimal to no coding impacts yet increasing speed & quality

Release “at the speed of business”

Page 58: How to Use DevOps & APM to Release Better Software Faster

58 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

• Bake your APM strategy right into the application lifecycle

• Dev and Ops teams – communicate effectively!

• Collaborate on the health of each build

• Comprehensive Dashboard strategy

• Consistent measurements between Dev, Test and Production

• Identify, prioritize and shift business goals as far left as possible

• Everyone understands them early on

• Monitor build state, KPIs, SLAs and risks throughout life cycle

Release “at the speed of business”

Page 59: How to Use DevOps & APM to Release Better Software Faster

59 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

• Bake your APM strategy right into the application lifecycle

• Optimize and automate issue feedback

• Faster feedback in Dev and Test = faster prioritization to fix

• Finding issues earlier and faster means cheaper

• Earlier in lifecycle = cheaper

• Delivering functionality faster means risk to experiencing issues in production

• Imperative to have a comprehensive APM strategy early to ensure root cause and fix lifecycle is reliable and fast

• Decreased MTTR at every leg of delivery means faster and more reliable delivery of functionality.

Release “at the speed of business”

Page 60: How to Use DevOps & APM to Release Better Software Faster

60 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

• Reducing cycle times/optimizing MTTR throughout

• Use APM best practices for reliable, accelerated deployments

• Integrating APM intelligence into deployment workflows

• Integrating APM throughout automated deployments (including elastic VM, cloud and container environments)

Release “at the speed of business”

Page 61: How to Use DevOps & APM to Release Better Software Faster

61 COMPANY CONFIDENTIAL – DO NOT DISTRIBUTE #APMLive

Thank-you!

Brett Hofer

@brett_solarch

http://blog.dynatrace.com

Hasan Yasar

@SEINews

https://insights.sei.cmu.edu/devops/