continuous delivery while minimizing performance risks (dutch web ops meetup)

38
CONTINUOUS DELIVERY WHILE MINIMISING PERFORMANCE RISKS

Upload: a32an

Post on 06-May-2015

270 views

Category:

Documents


1 download

DESCRIPTION

I modified my presentation from Velocity a bit, as I had more time to talk here. Given at http://www.meetup.com/Dutch-Web-Operations-Meetup/events/79161962/

TRANSCRIPT

Page 1: Continuous delivery while minimizing performance risks (dutch web ops meetup)

CONTINUOUS

DELIVERY WHILE

MINIMISING

PERFORMANCE

RISKS

Page 2: Continuous delivery while minimizing performance risks (dutch web ops meetup)

INTRODUCTION

Page 3: Continuous delivery while minimizing performance risks (dutch web ops meetup)

OBJECTIVE

Put working software into production as quickly as possible,

whilst minimising risk of load-related problems:

› Bad response times

› Too small capacity

› Availability too low

› Excessive system resource use

Page 4: Continuous delivery while minimizing performance risks (dutch web ops meetup)
Page 5: Continuous delivery while minimizing performance risks (dutch web ops meetup)

RISK PREVENTION IS A BIG SUBJECT

Photo by chillihead: www.flickr.com/photos/chillihead/1778980935

PREVENTING RISK IS A BIG SUBJECT,

WHAT FOLLOWS IS TAKEN FROM OUR EXPERIENCE

Page 6: Continuous delivery while minimizing performance risks (dutch web ops meetup)

CONTINUOUS DELIVERY LITERATURE PROVIDES METHODS

THAT HELP REDUCE RISK

› Blue-green deployments

› Dark launching

› Feature toggles

› Canary releasing

› Production immune systems

Jez Humble, http://continuousdelivery.com

Page 7: Continuous delivery while minimizing performance risks (dutch web ops meetup)

BLUE-GREEN DEPLOYMENTS

Version n+1

Version n

Amazon

Route 53

Elastic

Load

Balancer

Elastic

Load

Balancer

Instances

Instances

Page 8: Continuous delivery while minimizing performance risks (dutch web ops meetup)

DARK LAUNCHING

Web page DB

Page 9: Continuous delivery while minimizing performance risks (dutch web ops meetup)

DARK LAUNCHING

Web page DB Weather SP

Page 10: Continuous delivery while minimizing performance risks (dutch web ops meetup)

DARK LAUNCHING

Web page DB Weather SP

Page 11: Continuous delivery while minimizing performance risks (dutch web ops meetup)

FEATURE TOGGLES

Page 12: Continuous delivery while minimizing performance risks (dutch web ops meetup)

0%

CANARY RELEASING

100%

Page 13: Continuous delivery while minimizing performance risks (dutch web ops meetup)

PRODUCTION IMMUNE SYSTEMS

Page 14: Continuous delivery while minimizing performance risks (dutch web ops meetup)

USE CONTROLLED LOAD TESTING TO HELP CAPACITY

PLANNING

Instance

Amazon

Route 53

Elastic

Load

Balancer

RDS DB

Instance

RDS DB Instance

Read Replica

Instance

Instance

Page 15: Continuous delivery while minimizing performance risks (dutch web ops meetup)

WORK WITH FAILURE

› Optimise for MTTD and MTTR, not MTBF

› Game day exercises

› Chaos monkey

› Go / NoGo meetings

› Retrospectives

Page 16: Continuous delivery while minimizing performance risks (dutch web ops meetup)

BUT LEGACY SYSTEMS OFTEN LACK THE REQUIRED

RESILIENCE

Page 17: Continuous delivery while minimizing performance risks (dutch web ops meetup)

WHILE WE WORK ON OUR RESILIENCE, WE USE LOAD TESTS

TO HELP IDENTIFY THE BIGGEST RISKS

Page 18: Continuous delivery while minimizing performance risks (dutch web ops meetup)

PRE-PROD LOAD TESTING IS NOT FREE

› Extra code to maintain

› Usually test runs last several hours

› A production-like environment is expensive

› Realistic testing is hard

› Not all developers like writing (performance) tests

Page 19: Continuous delivery while minimizing performance risks (dutch web ops meetup)
Page 20: Continuous delivery while minimizing performance risks (dutch web ops meetup)

USE IT WISELY, WHERE PRODUCTION TESTING IS STILL

INAPPROPRIATE

› It provides no guarantee

› Use it to find any showstoppers you can

› Essentially, an optional service that teams can use

Page 21: Continuous delivery while minimizing performance risks (dutch web ops meetup)

Photo by vastateparksstaff: www.flickr.com/photos/vastateparksstaff/5330257235

USE IT AS A PLAYGROUND TO TRY RISKY CHANGES

Page 22: Continuous delivery while minimizing performance risks (dutch web ops meetup)

Functional integration

tests

Load tests

Build, unit test, etc.

Very often Less often At least once a day

(at night)

Page 23: Continuous delivery while minimizing performance risks (dutch web ops meetup)

Functional integration

tests

Load tests

Build, unit test, etc.

Very often Less often At least once a day

(at night)

Load test script check

Page 24: Continuous delivery while minimizing performance risks (dutch web ops meetup)

THE AIM IS NOT PERFECTION, GO FOR “AS REALISTIC AS

NEEDED”

Page 25: Continuous delivery while minimizing performance risks (dutch web ops meetup)

SET UP TEST DATA IN THE WEEKEND, TO MINIMIZE

DISRUPTION

Page 26: Continuous delivery while minimizing performance risks (dutch web ops meetup)

WHEN IS A PROBLEM REALLY A PROBLEM?

Page 27: Continuous delivery while minimizing performance risks (dutch web ops meetup)

FIND AN OBJECTIVE WAY TO JUDGE YOUR FINDINGS

Page 28: Continuous delivery while minimizing performance risks (dutch web ops meetup)

ESTABLISH REQUIREMENTS TO MAKE CLEAR WHAT IS

ACCEPTABLE

› Seen from the main stakeholders’ perspective

– Response time: users

– System resources: ops

– Capacity: business

› Specific

› Measurable

› Achievable

› Relevant

Page 29: Continuous delivery while minimizing performance risks (dutch web ops meetup)

Concurrent users

Scale: Maximum load in a day, while

response times are still according to

spec.

Meter: Session table row count.

Intention: The website should at least be

able to manage our typical daily load, but

we would like some margin for growth

and marketing campaigns.

Stakeholder: Business

Fail: < 100k

Target: 200k

Now: 150k

Page 30: Continuous delivery while minimizing performance risks (dutch web ops meetup)

SO USE A REAL BROWSER TO TEST

A REAL USER’S EXPERIENCE

Page 31: Continuous delivery while minimizing performance risks (dutch web ops meetup)

Response time Fail [Today] Target

Homepage.FV > 6 sec 3.9 sec 2 sec

Homepage.RV > 5 sec 2.8 sec 1 sec

Checkout.FV > 8 sec 6.5 sec 2 sec

Details.FV > 6 sec 1.9 sec 2 sec

Details.RV > 5 sec 1.7 sec 1 sec

Search.FV > 6 sec 4.8 sec 2 sec

Search.RV > 5 sec 3.7 sec 1 sec

Cart.FV > 6 sec 4.4 sec 2 sec

Cart.RV > 5 sec 3.4 sec 1 sec

LoginForm.FV > 6 sec 3.5 sec 2 sec

LoginForm.RV > 5 sec 2.5 sec 1 sec

Page 32: Continuous delivery while minimizing performance risks (dutch web ops meetup)
Page 33: Continuous delivery while minimizing performance risks (dutch web ops meetup)

TO MAKE COMPARING SENSIBLE, MAKE YOUR TESTS

DETERMINISTIC

Stub systems that you have no control over

Page 34: Continuous delivery while minimizing performance risks (dutch web ops meetup)

LOAD TESTING SHOULD BE OPTIONAL, THE ONLY THING

THAT COUNTS IS PRODUCTION!

› Your definition of done should reflect that

› The aim is to get early feedback from a safe environment

Page 35: Continuous delivery while minimizing performance risks (dutch web ops meetup)

ANYTHING YOU FIND IS AN OPPORTUNITY TO FIX MORE

THAN ONE PROBLEM

Page 36: Continuous delivery while minimizing performance risks (dutch web ops meetup)

SO WHAT MONITORING IS TYPICALLY NEEDED?

› Be able to localise where latency is coming from!

– For every system, all incoming and outgoing calls (count and

time spent stats)

› Finite resources (pools, CPU, I/O, etc.)

› Number of active users

› Response size, where possible

› Add whatever you need

It should be identical on all environments!

Page 37: Continuous delivery while minimizing performance risks (dutch web ops meetup)

CONCLUSION

In order to put code live without pre-prod load testing, at least the following need to be in place: › Culture › State-of-the-art monitoring › Resilience

Without these, support your continuous delivery process with optional load tests and strong specs. Use the load tests to identify some pain points, so you can modify the code and add monitoring, making it safer to do (incremental) dark releases and canary testing in production.

Page 38: Continuous delivery while minimizing performance risks (dutch web ops meetup)

QUESTIONS?

[email protected]

@a32an

www.xebia.com

blog.xebia.com

(we’re hiring)