diagnosability versus the cloud, redwood shores 2011-08-30
DESCRIPTION
In our increasingly virtualized environments, it's ever more difficult to diagnose application defects—especially performance defects that affect response time or throughput expectations. Runtime diagnosis of defects can be an unbearably complicated problem to solve once the application is sealed up and put into production use. But having excellent runtime diagnostics is surprisingly easy if you design the diagnostic features into the application from its inception, as it is being grown, like you would with any other desired application feature.TRANSCRIPT
Diagnosability versus The Cloud
Cary MillsapMethod R Corporationcary.millsap@method-‐r.com / @CaryMillsap
OTN Architect Day, Redwood Shores10:00a–10:30a Tuesday 30 August 2011
1985–19871988–19891990–19921993–19951996–19992000–20032004–20082009–20102011–
0 25 50 75 100
Teaching Consulting Business Method Software
Cary Millsap
Q What does
The Cloudmean to you?
Somebody else’s capital expenditure.Somebody else’s hardware.Somebody else’s so8ware.Somebody else backs it up.Somebody else upgrades it.Somebody else fixes it when it breaks....
Q What does
Diagnosabilitymean to you?
You can find problems efficiently.
You can fix problems efficiently.
What is “easy to diagnose”?
It’s easy to diagnose when it’s easy to answer…
Which system?Which program?
...Which line of source code?
Q How many of you areperformance people?
Here’s how you can tell...
Q Do you prefer a fast system?
Or a slow system?
Then you’re a performance person.
To do implement a successful application system,(whether in The Cloud or otherwise, but especially in The Cloud)
there is a list of specific technical tasksthat you have to do well.
I will talk about one of those today.
One goal of The Cloud is to hide detail.
But...
If the details of where time is being spentare concealed from your technical people,it’s a problem.
(You do still have technical people, right?)
Some of diagnosability’s natural enemies:
n-‐tier architectures
multiplexing architecturesconnection pooling, session pooling, ...
service-‐X architecturesX ∈ {bus, oriented, …}
The Cloud
http://en.wikipedia.org/wiki/File:ESB.svg
SOA
http://en.wikipedia.org/wiki/File:SOA_Metamodel.svg
http://en.wikipedia.org/wiki/File:Cloud_computing.svg
No matter how your software fits together, to manage performance, you must be ableto follow how time flows through all the code that services your requests.
http://en.wikipedia.org/wiki/File:Restaurant-‐UML-‐SEQ.gif
The sequence diagram helps youconceptualize time flow...
The key to accounting for time flow:
Instrumentation
Instrumentation is codethat marks each task so you can
1. identify it2. measure its time
The Oracle Database gets it right.
mark...dbms_session, dbms_application_info, OCIAttrSet, setEndToEndMetrics, ...
measure...dbms_monitor, ASH, AWR, ADDM, ...
http://www.method-‐r.com/downloads/doc_details/72-‐mastering-‐performance-‐with-‐extended-‐sql-‐trace
Diagnosability begins with the Oracle Database’s superb tools for marking tasks.
My message…
1/6
No matter how much you test, you can’t know how an application is going to behave until after you’re using it in production.
2 /6
You can reduce your operational costs significantly if you can make your application easy to diagnose.
3 /6
The Oracle Database has superb diagnostic hooks built in, but your application has to be designed to use them.
4 /6
If you’re using prepackaged software, diagnosability is a feature on which you need to insist.
5 /6
If you’re building your own software, diagnosability is not that difficult; it’s just another software feature.
6 /6
Forethought and understanding about instrumentation saves you money and yields better performance and availability.
Instrumentation saves you money and yields better performance and availability.
http://method-‐r.com
http://carymillsap.blogspot.com
http://twitter.com/CaryMillsap