13
Artem Panasyuk 20/02/2014 Big Systems/Big Data Meetup, Moscow About performance testing with NanoCloud Artem Panasyuk 20/02/2014

About performance testing with NanoCloud

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

Performance test with NanoCloud

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

Artem Panasyuk 20/02/2014

Big Systems/Big Data Meetup, Moscow

Q&A