Every enterprise is littered with Java applications. It's been on-premise for decades, and now it's moving to the cloud.
So which cloud vendors provide good homes for Java applications? Minecrab provides a way to have some fun testing each cloud provider while checking that Java performance doesn't stomp disk IO into a greasy spot.
Java is a programming language that has been used to create complex business logic for heavy workloads for nearly two decades. Java in the enterprise is not the sys admin favourite—its resource-hungry bytecode-running virtual machines (VMs) need serious feeding. Java is, however, loved by developers—ordinary coders can create extraordinary business systems with Java. And, really, who cares what sys admins think?
Java isn't just a programming language—it's a whole ecosystem of things named Java. This is partly because enterprise system development requires an enormous toolkit and partly because, ever since it was released by Sun Microsystems, Java has been wildly popular. Sun decided to ride the Java popularity wave by coming up with a cunning scheme to stick the word Java on everything it touched, including its desktop software, stock ticker symbol, and neighbourhood cats.
Java in the cloud
Since the enterprise is littered with Java applications, a successful migration of enterprise workloads from an on-premise computer room to a cloud computing service depends on picking a platform that will run Java applications well. For the big players, there is the mainframe with its fancy Java accelerators. What about the small players? Will a couple of EC2 machines do?
The curse of disk IO
Running a customer service written in Java is a real-time test that shows up weaknesses in VMs. Bare metal machines, with their fixed resources, are going to cope fine. VMs may fall victim to the Achilles heel in the world of virtualization: disk IO.
Uneven disk IO is an Infrastructure as a Service (IaaS) headache. If the enterprise databases have been virtualized and the DBA is crying, it's probably because of poor disk IO. It's not a problem you get with bare metal IaaS and on-premise systems because problems like usage peaks swamping SAN connections can be repaired. If an application running on a poor cloud hosting system has caused IO wait time to shoot through the roof, there is little that can be done.
How can an enterprise check the performance of a Java application in a cloud VM? What's a good general-purpose Java-based test of cloud IO?
Play Minecraft—it's for the good of the enterprise
Get a dozen testers together and run a resource-hungry centralized service to test your public cloud service. In other words, play a game of Minecraft with your friends.
Yes, that's right—that Mojang game with the 3D world to explore, blocks to break, and zombies to avoid. Mojang provide a free Minecraft server written in Java (Java is optimized for enterprise developers, not for lightweight systems). The Minecraft server uses about a gigabyte of memory and works the CPU and disk IO—the more players, the harder the VM works.
Why choose a game server for this Java-based test? Because the test feedback will be easy to interpret. If a batch process suffers poor performance, nobody notices. If a B2B application times out waiting for a reply, it's no big deal. If a game hangs for a few seconds, players go mental.
Start easy with Joyent Minecrab
The Minecrab project provides benefits to different types of users.
- From the player's point of view, Minecrab hides the complexity of cloud computing. The player needs to understand Minecraft, not cloud infrastructure.
- From a developer's point of view, Minecrab is an example of cloud automation. Digging into the scripts shows how the creators work with a code repository, cloud APIs, and process automation.
- From an operator's point of view, Minecrab provides an easy way of creating a Minecraft server on a public cloud VM. A 4 GB VM running SmartOS is created automatically. The only job left is to run iostat and watch the numbers, or use the portal and watch the graphs.
The biggest cost is testers' hours rather than billing dollars. A few hours testing the compute (i.e., playing a game) costs a few dollars, and a month's storage of a Minecraft world on Joyent's Manta system costs pennies.
There's no getting around hands-on evaluation
Java is a big deal, and it's not going away. Oracle—lords of the Java ecosystem—say there are nine million Java programmers in the world.
All public cloud computers should be able to cope with Java VMs, but some of them can't. If an enterprise team must evaluate performance, it's no good believing what cloud vendors say—they must test each cloud provider. Why not have some fun along the way, starting with Minecrab?
Nick Hardiman builds and maintains the infrastructure required to run Internet services. Nick deals with the lower layers of the Internet - the machines, networks, operating systems, and applications. Nick's job stops there, and he hands over to the designers and developers who build the top layer that customers use.