Many organizations realize there are significant advantages to moving their business-critical applications to the public cloud. With competitive pressures becoming stronger all the time, the heat is on to make development cycles more agile and applications more dynamic.
One of the most famous companies running its business-critical apps in the public cloud is Netflix, which is currently running thousands of nodes on Amazon EC2.
“Netflix realized it could not innovate rapidly if it stayed in the data center,” says Boris Livshutz, senior engineer, AppDynamics. “Netflix needed the public cloud to drive explosive growth. Many companies have come to the same conclusion and are rushing to join Netflix in the cloud.”
But, you might ask, what are the best and least risky ways to embrace the public cloud and maximize the cloud’s much-touted benefits?
Livshutz offers some tips.
Public Cloud Deployment Tip #1. Use Performance Analytics
There is no easy way to predict your application’s performance on cloud resources. With such technical names as “small,” “medium,” and “large,” how can you even begin to estimate capacity needs for your application? The cloud is a mysterious place with computing resources that bear no resemblance to the systems in the data center, and a successful transition will require arduous analysis.
Livshutz recommends using analytics on top of Application Performance Management (APM) data.
“You can do all this in a few straightforward steps,” he says. “By comparing performance data from your current application to that from your test environment in the cloud, you can accurately estimate your cloud capacity requirements.”
Public Cloud Deployment Tip #2. Compare Data Center and Cloud Capacities
First, you need access to performance data from your APM system. Second, you need to test your app with simulated load on the cloud environment that you intend to use. Most importantly, your APM system must run on both old and new environments and record the performance characteristics.
The idea, says Livshutz, is to compare the capacity of a machine in a data center against the capacity of computing nodes in the cloud to discover just how many nodes you’ll need to match the performance of your data center.
“To do this, you compare the throughput of a single application running in your data center against the throughput for the new cloud environment,” he says.
The unit of measurement to use for this is RATU (Response Acceptable Throughput per computing Unit).
“Once you decide what response-time is currently acceptable for your application, you can find the largest load that meets this limit within, say, 2 standard deviations,” says Livshutz. “Then, divide this throughput number by the number of machines the application is running on. For simplicity, I’m assuming the hardware is uniform, but if it’s not then you can compute a weighted average. “
Public Cloud Deployment Tip #3. Measure Throughput
Now, as the application isn’t just one atomic unit, you’ll need to measure the throughput for each high-level transaction. You need to perform this calculation across all your business transactions to get an accurate result.
It is important to examine individual transactions to ensure every business facing part of your application is accounted for, he notes.
Calculate the RATU for each of your relevant business transactions and take the average. You can customize this process a bit by excluding some transactions or even by doing a weighted average based on the importance or volume of the business transaction.
Now run the same analysis (calculating the RATU) on your test environment in the cloud. To get accurate numbers, you should take a measurement over a long enough time to cover at least one full workload cycle, if not more. As a rule of thumb, use a month of data as that should cover most variations in the application’s lifecycle.
You should now have two numbers:
- RATU for the old data center environment
- RATU for your cloud
Simply divide the first by the second to see what percentage more cloud units you’ll need to achieve the same performance as your current environment.
Using Amazon’s elastic cloud (EC2) for an example, Livshutz says, “Say you have an asset tracking application, and have 100 large computers in your data center running the application. You can also run a test in the cloud of this same application, on 20 large- size ec2 nodes.”
Suppose you find out that the data center RATU is 10,000, while the RATU in the cloud is 1,000. Therefore: 10,000 divided by 1,000 = 10.
“This means you will need 10 times more cloud units than data center hardware units to achieve satisfactory throughput,” he says. “Since you are testing on 100 datacenter machines, you will need 1000 ‘large’ nodes if you want to achieve the same throughput when you migrate to the cloud. Make sure you have enough money for all those nodes before you start!”
You may be noticed that Livshutz’s tips require not only an APM system but one that has analytics as well.
That’s the key, says Livshutz. “Your APM solution needs to be built from the ground up for the challenges of cloud environments. If it’s not, it won’t be able to accomplish what you need — and your cloud initiative will be stuck in neutral.”