Engine Yard Blog RSS Feed

April 4, 2014: This Week at Engine Yard

Spent a fantastic week in Atlanta, attending GWOCon and visiting local customers and partners to talk tech and get feedback. We always want to know what you’re thinking and how our platform can make your life better and easier! It was awesome to see the excitement and interest in some of the feature sets we’re actively working on.

--Tasha Drew, Product Manager

Engineering Updates

AWS’s popular new instance families, the C3 and M3 instances, are now available on Engine Yard under our Early Access program. We’ve had the C3’s for a while, but have added some enhancements to how they perform, especially for databases. The M3’s are new on our platform, but have also benefited from these enhancements.

A bunch of other updates are chronicled in our regular release notes!

Go for Rubyists

Note: Here's another guest post from our friends at the Hybrid Group.

So you're a Ruby developer and you've heard about this cool new language called Go, but you don't know where to get started. You've read the bullet points and got a litle scared. Static typing? Compiling? Is this the 80's all over again?! Well sorta! Go gives us the power of concurrent operations with a built in GC, so we get the power of a compiled language, but the lazyness of a dynamic language. Interested yet? Let's get into the basics of the language and cut out all the uncessary exposition and look at some code.

Hello world

Here's the canonical "Hello world" in Go.

package main

import "fmt"

func main(){
  fmt.Println("Hello world!")

And its ruby equivalent

puts "Hello world!"

At first glance you may think "Wow that's verbose!", but if you have a c/c++/java background, this doesn't look too out of the ordinary. Now let's discect this program and firgure out what's going on.

Share Nothing, Scale Everything

In the previous post in this series, we explained how the shared-nothing architecture places additional constraints on cloud app developers. We also explained how embracing these constraints enables apps to have high scalability and high availability.

In this present post, we explain how to adapt an app for the cloud by removing any dependency on the file system, in order to make it compatible with a shared-nothing architecture.

Replacing the File System

A tower of filing cabinets set against the sky

Putting your file system in the cloud is asking for trouble...

If you’re deploying an existing app to the cloud, whether it’s an internal app or an off-the-shelf app, you may find that there are some points of contention.

The most common problem we have found is that apps designed for traditional hosting environments expect the file system to behave like a database. That is, they write out a file, and then expect that this file is going to exist at some point in the future.

This is a problem for languages like PHP, where many of the off-the-shelf apps have existed since long before the cloud was popular. These apps generally assume that you are only using one server, and that the master copy of your site lives on the server.

Unfortunately, this causes some problems. This model does not work when you want to scale across multiple servers, or when you want to keep the master copy of your site in a revision control system like Git.

Let’s take one example: WordPress. The default WordPress configuration requires write access to the wp-content directory on the local file system. If you log into the WordPress administration console and make some changes, WordPress may update a file on the local file system. But if you have multiple servers, none of the other servers have this updated config.

If, on the other hand, you re-deploy from Git, your configuration changes will be overwritten! You could try to use something like gitdocs to automatically propagate changes, but what happens when you have a merge conflict, or your local state becomes particularly byzantine? Your app could fail instantly, or it may even experience hidden corruption, failing later in such a way that makes it difficult to debug.

So what’s the solution?

Building a Better PHP — Part 3: Getting Started with Hack

Note: This is part 3 in our HHVM/Hack series, read part 1, part 2

We briefly looked at hack in part one of this series, but there is a lot more to it than type-hints.

Why Hack?

The main reason for Hack, is not to alleviate any number of small bugs that can creep into PHP code due to lack of strong typing, but instead to provide new language features and tooling to make developers lives better.

A primary goal of hack is to not [negatively] impact the developers workflow — especially the REPL; whereby we can edit code and refresh our browser to immediately see changes.

Using Hack

Note: Hack is only included with HHVM 3.0 or nightly builds after March 20th.

March 28, 2014: This Week at Engine Yard

Out of sheer, unapologetic envy for the meetup in NYC, "Papers we love," our lead data engineer Ines Sombra started a “Papers we love too!” meetup in San Francisco. Our inaugural meetup was Wednesday evening, and the NYC organizers joined us for an excellent presentation on “Dapper, a Large Scale Distributed Systems Tracing Infrastructure,” a much loved paper chosen and presented by Yammer infrastructure engineers Ryan Kennedy and Anjali Shenoy.

--Tasha Drew, Product Manager

Engineering Updates

MySQL has been tweaked to load time zone tables by default, per customer requests in our feature request forums. Is there something you’d love to have Engine Yard add to our platform? Ask us there, and it could just happen!

We’ve done most of the work necessary to release AWS M3s, and are continuing to improve our integration with C3s. Expect more in this space shortly!

A bunch of other updates are chronicled in our regular release notes!

Social Calendar (Come say hi!)

RubyConf Philippines, March 28-29: Attendees can visit the Engine Yard table to meet members of our support team who can answer a wide range of any technical and non-technical questions you may have about Engine Yard. Also, PJ Hagerty continues his fabulous world tour, and will be giving a talk on creating active user groups in your local Ruby community.

Great Wide Open, April 2-3, Atlanta, Georgia: Engine Yard’s lead data engineer, the one and only Ines Sombra, will be doing a two hour workshop covering Databases in the Cloud (first half relational, second half non-relational). A few of us will also be tagging along so be sure to stop by our table!

Interaction 14 Redux, April 3, Dublin, Ireland: Engine Yard will be hosting Dublin’s Interaction 14 Redux, with a series of four lightning talks covering highlights and themes from the conference as well as three brand new presentations from our Irish speakers who submitted their talks for the Interaction 14.

Ancient City Ruby, April 3-4, St. Augustine, Florida: Our most excellent deployment engineer, Evan Machnic, presents on how he juggles children and rubies without missing a beat -- or dropping anyone.

Articles of Interest

Blogger highscalability examines the Facebook/Occulus acquisition and suggests that Occulus made this deal for a very sensible reason: they need help scaling, in a big way, to launch VR.