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

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

Minecrab is a project
hosted on GitHub that automates the work of managing a Minecraft server. Minecrab uses the public cloud services of Joyent
to create, manage, and destroy Minecraft
worlds.

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?