Joyent Cloud review
The sales pitch for servers in the cloud has always leaned on the word "commodity." You push a button, and voilà, a root password is yours within minutes. The machines in the cloud may not be exactly what you would order if you were filling out a P.O. for your own metal box, but they're probably close enough. The number of options may not be great, but you can choose among enough standard sizes and enough standard operating systems to get approach the ideal. In return for limiting your options, you can click a few buttons and run a machine in less than 180 seconds.
Joyent is a commodity cloud provider, but with a twist. Joyent Cloud offers many of the same basic machine options and standard distro choices you'll find on Amazon and other clouds, but you can also try what Joyent has waiting behind door number two. In addition to Linux and Windows VMs, the company builds custom machines with not-as-common operating systems and calls them appliances. If you decide to go with Joyent's machines, you might find they can be dramatically faster than the commodity server next door, at least when performing standard tasks like answering requests for basic Web pages or data from a database.
The not-so-secret sauce that Joyent is pitching is called SmartOS. You may know it as Illumos or more likely as Solaris, its most prominent name. Around the time that Sun merged with Oracle, a number of engineers from the Solaris team decamped for Joyent. They forked some code from the OpenSolaris project, called it SmartOS, and began renting cloud servers running the new operating system. The name changes aren't sticking very well because the SmartOS documentation will occasionally refer to the operating system as Solaris. But it's not worth getting caught up in the name. If you liked Solaris and mourned the death of Sun, this is your chance to keep the flame for just a few cents an hour. Nostalgia has never been cheaper.
But the reasons for choosing SmartOS have little to do with your fond memories of the '90s and the heady days of Sparc chips. Many continue to believe that Solaris is a great choice for an enterprise server, especially one with multiple cores. The file system, ZFS, offers a better transactional system that only locks in the disk changes when the data is completely written. The OS also offers a feature to segregate users, called "zones," that dramatically lowers the resource requirements behind the good fences that make good neighbors.
If you choose a Joyent SmartOS server from the cloud, you get all these features and a few more like DTrace, a debugging tool that can help you pinpoint what's slowing down your software. DTrace will let you watch the latency of writes to disk and make sure you're getting your money's worth from the platform.
Turning Solaris into a cloud operating system has paid off. Joyent emphasizes that its virtualisation technology is so tightly integrated with SmartOS that SmartOS guests are connected directly to the device drivers of the machine. There's no virtualization layer in between.
Joyent's virtualisation tool also boasts a few other neat tricks. You can, for instance, resize your virtual machine without rebooting it - assuming the underlying server has room to spare. Joyent also promises that the virtual machine can use the extra capacity temporarily in a burst mode.
Virtual bare-metal performance
Joyent crows that its machines often perform better than others because of the thinness of the virtualization layer, which it calls "bare-metal performance." The company suggests it's especially useful when systems are running virtual machines such as Java, PHP, and Node.
To test this out, I created a low-end, 512MB machine at both Joyent and Rackspace. Joyent charges 3 cents per hour for such a machine, while Rackspace charges 2.2 cents. I ran a number of DaCapo benchmarks for Java. The SmartOS came with Java 1.6 already installed. I had to install OpenJDK 1.6 on the CentOS box I built at Rackspace.
Most of the benchmarks ran between two and three times faster on the Joyent box. Some that used a heavy amount of IO -- such as the luindex benchmark that builds a Lucene index -- ran slightly more than three times faster. The avrora benchmark that simulates microcontrollers ran at about the same speed on both servers.
At the beginning, the Joyent box was often slower than the Rackspace box on the multithreaded benchmarks because it created 24 threads. Why? SmartOS poked around in the machine and decided it could run 24 threads because it was running on a 24-processor machine. When I limited the benchmark to one thread, the Joyent machine sped up dramatically (see table below). Even for the multithreaded tests, the Linux-based Rackspace machine automatically chose one thread.
These results show that for all of the talk about commodity servers, there are plenty of differences between the off-the-shelf machines. It pays to spend some time testing your particular application, then tuning it -- the operating system, the level of disk access, and the level of network access can affect the speeds dramatically. What may be good for one application may not benefit another.
Fast ride in a Web machine
Joyent is not relying on SmartOS alone. The company also offers pre-loaded "appliances." When you click through the options for your brand-new box, you'll see a number of machines that come ready to run packages such as Node.js, Percona, Riak, and MongoDB. You push the button and get a machine with all of the files in the right places, so you can start running the services immediately. These can certainly save you time starting up, but they're not as simple as they could be. After you push the start button for a Node box, for instance, you still get to log in and do everything with the command line.
You don't need to run Node.js and SmartOS to want to use Joyent. Joyent Cloud offers all the standard distros at prices that seem, on the face, to be 15 to 25 percent cheaper than Amazon Web Services. On paper, at least, the machines appear to be basically the same with equivalent specs.
But as the simple tests above show, the same basic box with the same specs can perform wildly better or worse depending upon how it interacts with the hypervisor. The amount of RAM, the number of CPUs, and the amount of disk space can't capture the effect of using SmartOS as a virtualization layer. Joyent's engineers claim their machines will run some software dramatically faster. They even like to claim they run Windows faster than Windows. Of course you should test your code before you believe.
Like some other clouds, Joyent offers open source to assuage the worries of the IT manager who fears being locked into the technology. You can download SmartOS and Node.js if you want to move your servers from the Joyent Cloud. Joyent will also host a "private cloud" for you in its data center. Joyent does the hosting and the provisioning of the SmartOS. You write the checks.
In the end, Joyent is offering a different kind of commodity than most of the IaaS cloud providers. Joyent is selling you a machine, just like they are, but Joyent's appliances are engineered to deliver Web pages and database storage as a service. Joyent has worked extensively on streamlining the connection between the incoming HTTP request and the bare metal. All that stands in between are Node and SmartOS, and both can be incredibly efficient in the right hands.
Joyent is essentially commodifying at a higher level: the HTTP processing level. If you're looking to process lots of basic requests, then you'll be attracted to a simple stack like the Node.js appliance. If you're looking on a cleanly engineered machine built on one of the more secure and well-engineered operating systems, you'll want to look at SmartOS. They're not the standard commodity tools, but that's not bad if you're looking for something more.