Divisa C


Joyent Is Great, but We've Switched to Amazon EC2

| Comments

At Understoodit, we’ve been hosting our node.js application on the Joyent cloud using two Small 1GB (1 vCPU) SmartOS machines for over four months. It’s snappy, reliable and costs us $124.10 a month.

But, a few holes have forced us to hosting on Amazon EC2.

I’ll explain why we chose Joyent in the first place (you should explore it too) and why we’ve switched to EC2.

Why choose Joyent:

  • Node & Joyent: Joyent has hired the key guys that developed Node including Ryan Lienhart Dahl (the creator a Node) and Isaac Schlueter (creator of the Node package manager and current project lead of Node) to give Node a sponsored house for it to grow. Joyent seems like the perfect place to host your node.js application.
  • Performance: A recent post by Matt Connolly shows the speed that Joyent provides. Talking with the guys from Joyent, they put a higher priority on performance and stability by using a “revamped infrastructure management platform”.
  • Customer Support: Within the first two days of provisioning my Joyent machine, I was greeted by a real person. Jeffery Bliss from Joyent was extremely knowledgable and an amazing help to provide me with some awesome details. He also included options outside of Joyent to help weigh my decision. And it was free.
  • Auto Scaling: If all goes well, you will have to scale your application by increasing your physical machine’s CPU speeds and RAM. With Joyent, you can do this on-the-fly without having to shutdown, provision or set up a new machine.
  • Data Analytics: Joyent teamed up with Nodefly and New Relic (application monitoring systems) that provide you with real-time application data. When you sign up with Joyent, you get exclusive access to both - for free.

These reasons back Joyent’s legitimacy in competing with, and in some cases, outdoing Amazon, but there were a host of reasons why we ended up deciding to switch to EC2.

Why we chose Amazon EC2:

  • It’s Cheaper: We have a staging environment that mirrors our production environment. With EC2 we can run our staging environment only when we are actually using it. In contrast, with Joyent, our machines must always be running (and billing). EC2 runs on a SAN (Storage area network) in which each machine is provisioned with a “virtual hard drive” and elastic IP address. In turn, you only pay for the time you have it up and costs as little as 2 cents an hour. Also, AWS provides you with some free services to get you started. It is always nice to get a taste before you pay.
  • We use their other services: Not only do we use AWS for EC2 but we also use Cloudfront as our CDN and look to take advantage of a few other offerings AWS provides. We also run our databases on Heroku Postgres which is on the Amazon network.
  • Multiple Locations: AWS allows you to provision VMs in Asia, North America, South America, Austrailia and Europe. We offer a custom version and being able to provision a machine closer to our clients is a big win. Dealing with a recent customer in the UK - we provided them a solution where their data was local (and not overseas) that was a huge selling point.
  • SmartOS is not Ubuntu: Joyent gives you the option to run Ubuntu, but their “house” OS is SmartOS, which has a learning curve. With SmartOS, I came across a few annoying nuances.

    • When trying to set up Stud for our SSL connections, I needed pull a specific version forked for SmartOS (thanks Stash). I thought I was in the clear, but inevitably ran into some privileges issues that were solved by this Solaris specific command:
          pfexec crle -l /usr/local/lib -u

      Not the end of the world - but it added some frustration to my installation.

    • I ran into another issue when trying to install the latest Haproxy with SSL (to get rid of Stud). The issue arises with the inability to install libssl-dev on SmartOS. I never found a workaround for this issue and it may have been the final deterrent for me.
    • Another issue I found was when trying to install syslog-ng to set up external logs through Loggly.
    • These issues made the experience of working with SmartOS more frustrating and added time to setting up the VMs. On second try, I’d likely just provision a Joyent machine with Ubuntu. Joyent does provide a SmartOS cheatsheet. Aside: An interesting article by Peter Wayner points out the advantages of SmartOS as a enterprise server.

Like any decision there are tradeoffs to both. For now, it makes sense for our business to use AWS EC2 as we are not at the stage to reap the benefits that Joyent provides. I do think that Joyent is pushing the boundaries of cloud computing by providing increasingly better performance, excellent customer support, and going up against a big player in AWS with a “we are out to get you” mentality. I will definitely be keeping a close eye on Joyent and explore their options again in the future.

Here is some further reading comparing AWS EC2 vs Joyent: