application quality gates in continuous delivery: deliver better software faster!

61
1 @Dynatrace Application Quality Metrics for your Pipeline Andreas (Andi) Grabner - @grabnerandi Shift-Left Quality

Upload: andreas-grabner

Post on 13-Jan-2017

1.045 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

1 @Dynatrace

Application Quality Metrics for your Pipeline

Andreas (Andi) Grabner - @grabnerandi

Shift-Left Quality

Page 2: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Example of a “Bad” Web Deployment 282! Objects on that page9.68MB Page Size

8.8s Page Load Time

Most objects are images delivered from your main

domain

Very long Connect time (1.8s) to your CDN

Page 3: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Example of a Bad Java/Tomcat Deployment526s to render a financial transaction report

1 SQL running 210s!

Debug Logging with log4j on outdated log4j

library (sync issue)

Page 4: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 5: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

700 Deployments / Year

50-60 Deployments / Day

10+ Deployments / Day

Every 11.6 seconds

Page 6: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 7: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Challenges

Page 8: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Deploy Faster!!

Page 9: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Fail Faster!?

Page 10: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 11: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 12: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Its not about blind automation of pushing more bad code through a shiny pipeline

Page 13: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Metrics based

Decisions!

Page 14: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Time of D

eployment

Availability dropped to 0%

Page 15: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 16: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Usage by Channel? Errors on Devices?

Page 17: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Technical Debt!

Page 18: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

80%$60B

Page 19: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Insufficient Focus on Quality

Page 20: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

The “War Room”

Facebook – December 2012

Page 21: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 22: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

20%80%

Page 23: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!
Page 24: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

I learning from

others

Page 25: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

4 use cases WHY did it happen? HOW to avoid it! METRICS to guide you.

Page 26: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

26 @Dynatrace

Page 27: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

27 @Dynatrace

#1don't push

without a plan

Page 28: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

28 @Dynatrace

Mobile Landing Page of Super Bowl Ad

434 Resources in total on that page:230 JPEGs, 75 PNGs, 50 GIFs, …

Total size of ~ 20MB

Page 29: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

29 @Dynatrace

Key Metrics# ResourcesSize of ResourcesPage Size

Page 30: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

30 @Dynatrace

Page 31: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

31 @Dynatrace

#2There is no easy "Migration" to Micro(Services)

Page 32: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

32 @Dynatrace

26.7s Execution Time 33! Calls to the

same Web Service

171! SQL Queries through LINQ by this Web Service – request

similar data for each call

Architecture Violation: Direct access to DB instead from frontend logic

Page 33: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

33 @Dynatrace

Key Metrics# Service Calls# of ThreadsSync and Wait Times# SQL executions# of SAME SQL’s

Page 34: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

34 @Dynatrace

Page 35: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

35 @Dynatrace

#3don't ASSUME you

know the environment

Page 36: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Distance calculation issues

480km biking in 1 hour!

Solution: Unit Test in Live App reports Geo

Calc Problems

Finding: Only happens on certain

Android versions

Page 37: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

3rd party issues

Impact of bad 3rd party calls

Page 38: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

38 @Dynatrace

Key Metrics# of functional errors# and Status of 3rd party callsPayload of Calls

Page 39: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

12 000 000 $

Page 40: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

40 @Dynatrace

#4Thinking Big?

Then Start Small!

Page 41: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

41 @DynatraceAvailability dropped to 0%

Load Spike resulted in UnavailabilityAd on air

Page 42: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

42 @Dynatrace

Alternative: “GoDaddy goes DevOps”

Response time improved 4x

1h before SuperBowl KickOff

1h after Game ended

Page 43: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

43 @Dynatrace

Key Metrics

# Domains

Total Size of Content

Page 44: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

44 @Dynatrace

What have we learned so far?

Page 45: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

45 @Dynatrace

1. # Resources2. Size of Resources3. Page Size4. # Functional Errors5. 3rd Party calls6. # SQL Executions7. # of SAME SQLs

MetricBased

DecisionsAre Cool

Page 46: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

We want to get from here …

Page 47: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

To here!

Page 48: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Use these application metrics as additional Quality Gates

Page 49: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Extend your Continuous Integration

12 0 120ms3 1 68ms

Build 20 testPurchase OKtestSearch OK

Build 17 testPurchase OKtestSearch OK

Build 18 testPurchase FAILEDtestSearch OK

Build 19 testPurchase OKtestSearch OK

Build # Test Case Status # SQL # Excep CPU

12 0 120ms3 1 68ms

12 5 60ms3 1 68ms

75 0 230ms3 1 68ms

Test & Monitoring Framework Results Architectural Data

We identified a regresesion

Problem solved

Exceptions probably reason for failed testsProblem fixed but now we have an

architectural regressionProblem fixed but now we have an

architectural regressionNow we have the functional and architectural confidence

Let’s look behind the scenes

Page 50: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

#1: Analyzing each Test

#2: Metrics for each Test

#3: Detecting Regression based on Measure

Page 51: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Quality-Metrics based Build Status

Page 52: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Pull data into Jenkins, Bamboo ...

Page 53: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Recap!

Page 54: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

#1: Pick your App Metrics

# of Service Calls Bytes Sent & Received

# of Worker Threads

# of Worker Threads

# of SQL Calls, # of Same SQLs # of DB

Connections

# of SQL Calls, # of Same SQLs # of DB

Connections

Page 55: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

#2: Figure out how to monitor them

Page 56: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

#3: Automate it into your Pipeline

Page 57: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

#4: Integrate with your Tools

Page 58: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Better Software,

Faster!!

Page 59: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

Draw better Unicorns

Page 60: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

60 @Dynatrace

Questions and/or DemoSlides: slideshare.net/grabnerandiGet Tools: bit.ly/dttrialYouTube Tutorials: bit.ly/dttutorialsContact Me: [email protected] Me: @grabnerandiRead More: blog.dynatrace.com

Page 61: Application Quality Gates in Continuous Delivery: Deliver Better Software Faster!

61 @Dynatrace

Andreas GrabnerDynatrace Developer Advocate@grabnerandihttp://blog.dynatrace.com