Review: Joyent Cloud runs closer to the metal

Through clever engineering, Joyent gives you faster startups and more speed than VM-based clouds

The world of cloud computing is dominated by Tyrannosaurus Rex-sized corporations like Google, Amazon, and Microsoft, big companies that have used their prowess and might to build giant data centers full of racks and racks of machines. Then there’s Joyent, a small but nimble competitor that might be called mammal-sized, if only for the sake of a metaphor. It deserves notice for shaking up the cloud marketplace with clever mods of the operating system layer that are producing great results.

The metaphor isn’t perfect because the technology here isn’t entirely new. Joyent might be called one of the last vestiges of Sun Microsystems. While Oracle ended up with control over Java and the Sun hardware, Joyent embraced OpenSolaris and welcomed some of the experts who knew what made the OS special. The company leveraged this talent to update Solaris and build a cloud that delivers great performance for Java, Node.js, and Docker containers.

Joyent’s version of Solaris is called SmartOS. It forms the foundation for Triton, a container hosting service, and for many of Joyent’s raw compute instances. Joyent will also load up images with Ubuntu, CentOS, Debian, and a few other operating systems, but SmartOS is the main attraction.

There aren’t as many options as you’ll find in the other clouds, but there are plenty of images that are preconfigured to run many standard services -- Nginx, MongoDB, Hadoop, and so on -- on SmartOS. You can start up a cluster fairly quickly without spending too much time remembering what’s different about Solaris.

joyent create

Joyent offers many of the popular options for creating an instance from a standard image.

Docker meets Solaris Zones

Joyent’s real focus these days is on Docker containers, not full instances, in part because Joyent engineers have managed to hack the SmartOS kernel and strip away a number of the layers that usually exist in the cloud. Instead of putting the container inside an OS running in a VM, Triton offers “native containers.” They’ve arranged for the SmartOS kernel to emulate the Linux kernel running Docker, a simpler process with fewer levels of indirection than hardware virtualization. (As the Fundamental Law of Computer Science states, programmers solve problems by inserting another layer that translates IP addresses, API calls, or whatever. Triton strips away some of these layers.)

It’s always dangerous to speak about speed with too much certainty. One app can perform amazingly quickly while another will sink into a swamp. Still our tests over the years have shown both Java performance and Docker performance to be very good on Joyent Cloud. When I was rerunning some of the tests for this article, I found that the performance was substantially better. Your mileage will vary, of course, but there’s reason to believe that Joyent is doing something right.

The most interesting aspect to Joyent’s container service may be the speed it offers at startup. The other clouds will offer to host your Docker container, but this usually means they’ll sell you an instance that’s preconfigured with some of the basics of Docker. It’s not a bad option, but you have to wait for the instance to start (and eventually stop). This can easily take several minutes -- maybe close to 15, if it gets busy. Google, for instance, has a 10-minute minimum for starting up an instance to discourage wanton starting and stopping by users taking the overhead into account.

Joyent’s cloud can start up Docker containers in seconds. The OS is already running underneath, and it only needs to do a bit of housekeeping to initiate the container. This means you can start to think in smaller slices of computing time. In my conversations, I found the Joyent engineers suggesting that they were getting close to being fast enough to allow their cloud to respond to an HTTP request by starting up the container.

joyent instance

Joyent's performance page for an instance reports CPU and memory usage.

The upshot is that Joyent lets you rethink your architecture to include containers that start up occasionally when they happen to be needed. If you’re rebuilding your apps to include many microservice calls, the opportunities for isolating these microservices in their own containers are enticing.

Storage and compute: Better together

Joyent is also starting to dig into the world of big data by adding compute capabilities to its object storage layer. As with the other clouds, you can park your data in Joyent’s object storage service, called Manta, with a simple REST API. Manta starts off making two copies, and you can add more replication to store more copies if you need them.

That’s all pretty standard. The difference is that Joyent has installed many common software tools in the nodes storing the data. The common architectural strategy is to split off the storage from the computation in a completely different service that may or may not be hosted nearby. (It’s not exactly clear why society has chosen that path -- it only increases latency and adds traffic to the network.) Joyent is ignoring that memo and offering what it calls “integrated compute.” You might think of it as “Hadoop but with Unix” because you specify the job as a JSON block full of Unix shell scripts.

Once you store your data, you can then start computing on it. Many of the standard tools like R, Python, and Node.js are already installed on the SmartOS instance that’s also storing your data. You simply need to trigger them. It’s much faster than waiting for the data to be fetched from another machine, which may be why Joyent can offer to charge only for each second you do some computation with no “provisioning, data movement, or scheduling latency costs.”

joyent docker image

You can drill down into the Unix commands for manipulating your Docker images from Joyent's Web UI.

Joyent doesn’t offer all of the extras you can find in the other clouds. There’s not much talk about machine learning, managed service APIs, or public data sets. You can’t turn to Joyent for help with displaying maps on your website or predicting travel times. The organism is smaller than some of the big reptiles that dominate the space. But you can run your code on what Joyent calls “bare metal.”

Bare metal is not the best metaphor because there are still some software layers in the way, but substantially fewer than you’ll find in the standard cloud configuration. That means faster performance and lower prices. It’s a simpler model, but it worked for the mammals.

Copyright © 2016 IDG Communications, Inc.

How to choose a low-code development platform