39
codecentric AG Monitoring Performance from Development through Production AGILE DEVELOPMENT OF HIGH PERFORMANCE APPLICATIONS

Agile Development of High Performance Applications

Embed Size (px)

DESCRIPTION

Slides from my talk at gearconf 2010 in Düsseldorf, discussing Performance as an important non-functional requirement. Because NFRs are hard to test, I showed how AppDynamics Lite could be used to ease pain and build better performing apps. If you are interested in performance and application performance monitoring, visit our blog: http://blog.codecentric.de/en/category/performance-en/ If you want to try appdynamics lite yourself, download it at http://appdynamics.com/free

Citation preview

Page 1: Agile Development of High Performance Applications

codecentric AG

Monitoring Performance from Development through Production

AGILE DEVELOPMENT OF HIGH PERFORMANCE APPLICATIONS

Page 2: Agile Development of High Performance Applications

codecentric AG

- Fabian Lange- Head of Competence Center Performance

- Java since its beginning- Agile since its establishment- Performance since waiting got boring

ME AND CODECENTRIC

- codecentric AG- Specialized in

- Perfomance Services- Agile Software Factory

- Always looking for new talent

Page 3: Agile Development of High Performance Applications

codecentric AG

TABLE OF CONTENTS

- Chapter One"The curse of non-functional Requirements”

- Chapter Two“Ensuring Great Performance”

- Chapter Three“A Real World Example”

- Chapter Four“The DevOps Revolution"

- Epilogue

Page 4: Agile Development of High Performance Applications

codecentric AG

THE CURSE OF NON-FUNCTIONAL REQUIREMENTS

Chapter One

Page 5: Agile Development of High Performance Applications

codecentric AG

- Who measures performance …- in production?

- before production?

- during development?

- Who does development …- the waterfall way?

- the agile way?

LET‘S DO A POLL

Page 6: Agile Development of High Performance Applications

codecentric AG

- We finally can test functional requirements!

- Many modern practices- TDD

- ATDD

- BDD

TESTING REQUIREMENTS

Page 7: Agile Development of High Performance Applications

codecentric AG

- Executable Specifications makes functional testing a breeze!

REQUIREMENTS ARE THE TEST

*** Settings ***Resource ${RESOURCES}/BDD.txtTest Template Branch Manager Change Should not affect Employee *** Keyword ***Branch Manager Change Should not affect Employee [Arguments] ${periodClosed} ${periodOpenAndModified} ${importDay} ${oldManagerValidUntil} ${newManagerValidFrom} Given initialized criteria for bonus commercial And a branch B with branch manager M_OLD and employee E1 And evaluation for E1 for period ${periodClosed} which is closed And evaluation for E1 for period ${periodOpenAndModified} which is open and modified When M_NEW becomes new manager of branch B And import service is called on ${importDay} Then the new branch manager of branch B is M_NEW valid from ${newManagerValidFrom} And branch manager M_OLD manages employee E until ${oldManagerValidUntil} And branch manager M_NEW manages employee E from ${newManagerValidFrom} And Evaluations for E1 still have the same content | *Test* | *Closed Period* | *Open Period* | *Run Import On* | *Old Manager Stops* | *New Manager Starts* || 1 | 1.11.2009 - 30.11.2009 | 1.12.2009 - 31.12.2009 | 11.11.2009 | 30.11.2009 | 1.12.2009 || 2 | 1.11.2009 - 30.11.2009 | 1.12.2009 - 31.12.2009 | 1.11.2009 | 31.10.2009 | 1.11.2009 || 3 | 1.11.2009 - 30.11.2009 | 1.12.2009 - 31.12.2009 | 1.12.2009 | 30.11.2009 | 1.12.2009 |

Page 8: Agile Development of High Performance Applications

codecentric AG

PERFORMANCE IS NON-FUNCTIONAL!

- All Non Functional Requirements are not very agile

- They cannot be added later on

- So you need to know about them!

- They form the Definition of Done

Page 9: Agile Development of High Performance Applications

codecentric AG

TESTING NON-FUNCTIONAL IS HARD!

- There are no absolute measures

- No production infrastructure

Page 10: Agile Development of High Performance Applications

codecentric AG

HOW DO YOU MEASURE PERFORMANCE?

- Relevant Measures are hard to find- Response Time

- For users- System Load

- For planning- Traffic

- For money

- Realistic Measures are hard to obtain- 2 seconds?

- Load avg < 2.8 ?

- Less than 2TB per month?

Page 11: Agile Development of High Performance Applications

codecentric AG

HOW DO YOU TEST PERFORMANCE?

- Who ...... has a process for performance tests?

... does loadtests?

... plans for scalability?

... uses a profiler?

... uses a server monitor?

... uses an application monitor?

Page 12: Agile Development of High Performance Applications

codecentric AG

„PRODUCTION IS FASTER“

Page 13: Agile Development of High Performance Applications

codecentric AG

ENSURING GREAT PERFORMANCE

Chapter Two:

Page 14: Agile Development of High Performance Applications

codecentric AG

A TYPICAL PERFORMANCE ANALYSIS PROCESS

- Tom, the boss calls:“We loose customers because of bad performance”

- Lynn from QA does a load test:“Application is slow as a snail”

- Task force is set up- John tries to learn performance tools- Sarah does a microbenchmark and gains 5 ms

Application still slow

Everybody unhappy

Page 15: Agile Development of High Performance Applications

codecentric AG

HOW ABOUT…

- Developers care about performance- Good tools are understood and used- Performance is tested regularly- Anomalies are taken care of

Application is running smoothly

Everybody is happy

Page 16: Agile Development of High Performance Applications

codecentric AG

CARE ABOUT PERFORMANCE

- Caring is fundamentally important

- Development teams need to extend their scope

- In Scrum teams need to be able to do all the work to get done

Page 17: Agile Development of High Performance Applications

codecentric AG

GOOD TOOLS

- Tool paralysis does not help

- Choose 1 or 2 good tools and learn them

- Tools should work everywhere

flickr.c

om/p

hotos/p

mto

rrone/2

381346935

Page 18: Agile Development of High Performance Applications

codecentric AG

CONTINUOUSLY TEST PERFORMANCE

- Find a good balance- Automated Checks

- Manual Tests

- Functional tests already provide data

- How about a load test every iteration?

Page 19: Agile Development of High Performance Applications

codecentric AG

INVESTIGATE SUSPICIOUS DATA

- Because you care- And you have the tools- And you have the data

- You should investigate findings

“When you have eliminated the impossible,whatever remains, however improbable,must be the truth”

- Sherlock Holmesflickr.com/photos/cayusa/2159980025

Page 20: Agile Development of High Performance Applications

codecentric AG

A REAL WORLD EXAMPLEChapter Three

Page 21: Agile Development of High Performance Applications

codecentric AG

TEAM CARES ABOUT PERFORMANCE

- Definition of Done includes a lot- spec, design, unit test, code, acceptance tests, documentation,

usability review, code review, stability tests, compatibility tests, interoperability test, load tests, security tests, performance tests…

- Get it right from the beginning- Do not pile up technical debt

- To go well you have to go slow

Page 22: Agile Development of High Performance Applications

codecentric AG

– 20% Slowdown due to debt

– Sprint 1– 15 Points delivered

– Sprint 2– 12 Points delivered

– Sprint 3– 9 Points delivered

– Sprint 4– 7 Points delivered

TECHNICAL DEBT / UNDONE WORK

11.04.2023 22

Wrong Definition of Done

– Sprint 1– 12 Points delivered

– Sprint 2– 12 Points delivered

– Sprint 3– 12 Points delivered

– Sprint 4– 12 Points delivered

Better Definition of Done

Page 23: Agile Development of High Performance Applications

codecentric AG

WHAT MAKES A GREAT TOOL

- Zero configuration a must for agile

- Very low overhead for clean results

- Single tool for all use cases

- Free!

Page 24: Agile Development of High Performance Applications

codecentric AG

APPDYNAMICS LITE DEMO

- Webcasts in our bloghttp://blog.codecentric.de/en/2010/08/easy-performance-analysis-with-appdynamics-lite/

Page 25: Agile Development of High Performance Applications

codecentric AG

AUTOMATED WORK

- Monitoring is not only great for production

- Runs in Continuous Integration environments

- Uses automated tests to run

- Provides Trends during iterations

Page 26: Agile Development of High Performance Applications

codecentric AG

- Continuous Integration Tools show where to look- Usually already providing information about where to look- Sometimes providing information about how to fix

EASY INVESTIGATION

11.04.2023 26

– JUnit Report

– [Run a debugger]

– Fix it

JUnit

– Business Transaction Overview

– Call Graph

– [Run a profiler]

– Fix it

AppDynamics

Page 27: Agile Development of High Performance Applications

codecentric AG

A JUNIT REPORT

Page 28: Agile Development of High Performance Applications

codecentric AG

DAILY HEALTH CHECK

Page 29: Agile Development of High Performance Applications

codecentric AG

SPOT ON ANSWER

Page 30: Agile Development of High Performance Applications

codecentric AG

FIND ANANOMALIES

Page 31: Agile Development of High Performance Applications

codecentric AG

INVESTIGATE WITH FULL CALL STACK VISIBILITY

Page 32: Agile Development of High Performance Applications

codecentric AG

ALL THE DATA YOU NEED

Page 33: Agile Development of High Performance Applications

codecentric AG

MANUAL WORK

- Manual load and scalability tests once an iteration

- Requires close to production configuration

Page 34: Agile Development of High Performance Applications

codecentric AG

BASIC LOAD TESTING

Page 35: Agile Development of High Performance Applications

codecentric AG

THE DEVOPS REVOLUTIONChapter Four

Page 36: Agile Development of High Performance Applications

codecentric AG

DEVOPS THINKS DIFFERENT

- Agile process provides high quality

- Test environments are slow, and often not real

- Done features go to production every day

- Use real users for testing

- Planned rollbacks integral part

com

mon

s.w

ikim

ed

ia.o

rg/w

iki/Fi

le:B

eta

-bad

ge.s

vg

Page 37: Agile Development of High Performance Applications

codecentric AG

DEVOPS AND PERFORMANCE

- In the cloud, the only real test is production

- Avoid premature optimization

- Requires great tools

flickr.com/photos/design-dog/1249337589

Page 38: Agile Development of High Performance Applications

codecentric AG

HIGH PERFORMANCE APPS GO LIVE EVERY DAY

Epilogue

Page 39: Agile Development of High Performance Applications

codecentric AG

- Non-Functional Requirements are known and taken care of

- Performance is monitored in development

- Anomalies are taken care of

- Pre-Release sanity check is performed

- Up- and Downgrade is planned

- New version can go into production

- Productive software is examined around the clock

SUMMARY

flic

kr.c

om

/photo

s/re

dux/4

740529728