Upload
artempanasyuk
View
193
Download
6
Embed Size (px)
DESCRIPTION
Citation preview
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
About performance testing with NanoCloud
Artem Panasyuk
20/02/2014
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Why?
• Early design is a critical stage in product development. Choices made here has major influence on final product quality and price.
• Suppose development of a system that must satisfy some performance requirements. What is the right time to start performance testing?
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
How?
• K.I.S.S. - Keep It Simple and Straightforward -- Apollo project
• "Premature optimization is the root of all evil" -- Donald Knuth
• Use your time to design simple solution and validate that it works rather then complex with the belief that it will work.
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Performance vs. Functional
• Functional testing is an essential part of software development lifecycle:
o Test written once continues to work in the future
o Always compatible with latest version of codebase
o Owned and maintained by the whole DEV team
o Toolkit is highly automated
o Approved/required by management
• What about performance testing?
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Functional testing toolkit
• xUnit
• IDE
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Performance testing toolkit
• Bash/SSH/SCP/Ant/…
• IDE/JMeter/Grinder/…
• YourKit/JProfiler/VisualVM/…
• Zabbix/Geneos/…
• grep/vmstat/ifstat/iostat/top/…
• Excel/R/GNU Plot/AWK/…
• I’m sure you have own favorite tools
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Performance vs. Functional
• Common situations with performance testing:
o Tests are written ad hoc and short-lived
o Codebase is way ahead
o Owned and maintained by dedicated team member
o Toolkit implies lot of manual work
oManagement doesn't recognize benefits and can't accept time consumption
• How we can improve this?
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Try to simplify toolkit?
• IDE
• NanoCloud
• Only Java libraries
ViNode node = cloud.node("remote-node");
RemoteNodeProps.at(node).setRemoteHost("longmrdfappd1.uk.db.com");
node.exec(new Runnable() {
@Override
public void run() {
System.out.println("Hello from longmrdfappd1.uk.db.com");
}
});
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Solved with NanoCloud
• Ad-hoc performance testing
• NFR verification
• Performance regression testing
• Stress and failover testing
• Sizing and capacity planning
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Development workflow
• Performance test driven development (PTDD):
oWrite simplest functional code
o Benchmark it
o Improve based on test measurements
• Never optimize unless you can measure outcome
• Never speculate, measure and justify
Artem Panasyuk 20/02/2014
Big Systems/Big Data Meetup, Moscow
Links
• NanoCloud
• http://code.google.com/p/gridkit/wiki/NanoCloudTutorial
• ZooKeeper benchmark example
• http://gridkit.googlecode.com/svn/grid-lab/trunk/examples/zk-benchmark-sample/
• BTrace (Java dynamic profiling)
• https://kenai.com/projects/btrace
• Sigar (system monitoring on Java)
• https://github.com/hyperic/sigar
• XChart (java plotting library)
• http://xeiam.com/xchart.jsp