The Ephemeral Life of Dockerized Microservices

When using the word ‘ephemeral’, it’s hard not to think of Snapchat these days, however the concept applies to the on demand computing pattern we promote here at with our task processing service IronWorker. At a glance, each Docker container in which a task runs is only alive for the duration of the process itself, providing a highly effective environment for powering applications that follow the microservices architectural style.
Continue reading “The Ephemeral Life of Dockerized Microservices”

Docker in Production — What We’ve Learned Launching Over 300 Million Containers

Docker in Production at

Earlier this year, we made a decision to run every task on IronWorker inside its own Docker container. Since then, we’ve run over 300,000,000 programs inside of their own private Docker containers on cloud infrastructure.

Now that we’ve been in production for several months, we wanted to take the opportunity to share with the community some of the challenges we faced in running a Docker-based infrastructure, how we overcame them, and why it was worth it.

Continue reading “Docker in Production — What We’ve Learned Launching Over 300 Million Containers”

How Docker Helped Us Achieve the (Near) Impossible

Docker Solved a Key Problem

Ever since we started, we’ve been trying to solve a problem: how to keep our IronWorker containers up to date with newer language runtimes and Linux packages. For the past two years, IronWorker has been using the same, unchanged run-time environment. That is until a couple of weeks ago when we released custom language environments.

Since the inception of our service, we have been using a single container that contained a set of language environments and binary packages – Ruby, Python, PHP, Java, .NET, and the other languages we support as well as code libraries such as ImageMagick, SoX, and others. Continue reading “How Docker Helped Us Achieve the (Near) Impossible”

Message Queues, Background Processing and the End of the Monolithic App (reposted from Heroku blog)

Here’s a post of ours on message queuing and background processing that we published on the Heroku blog the other day. Definitely worth checking out if you believe like us that distributed multi-tier architectures are the future of production-scale cloud applications. Guest Post on Heroku

Message Queues, Background Processing and the End of the Monolithic App

Platform as a Service has transformed the use of cloud infrastructure and drastically increased cloud adoption for common types of applications, but apps are becoming more complex. There are more interfaces, greater expectations on response times, increasing connections to other systems, and lots more processing around each event. The next shift in cloud development will be less about building monolithic apps and more about creating highly scalable and adaptive systems.

Continue reading “Message Queues, Background Processing and the End of the Monolithic App (reposted from Heroku blog)”

More Go Use in Production (Pivotal CF)

Travis Reeder, co-founder and CTO, was at DevBeat 2013 on Tuesday talking about’s use of Go language for our API services and backend functionality. (We use Ruby and other languages for workers and our app framework but Go has a special place here for things that need to run fast and handle high throughputs.)

The audience, many of whom were coming up to speed on Go, had a lot of great questions. A surprising number of hands went up when asked about using Go. A lesser but still impressive number raised their hands when asked about Go in production. (At the GoSF meetup we organized last week, not surprisingly, half the group’s hands went up on that question.) Continue reading “More Go Use in Production (Pivotal CF)”

7 Reasons Webhooks Are Magic

Around the office, I’m known as a bit of a webhook enthusiast. When asked what my favourite features of the platform are, our webhook support tend to top my list. (Did you know you can create a message or a task using webhooks, and use push queues as webhooks?)

I love the flexible, open architecture webhooks enable. They remind me of Unix pipes: pass in some data as a string, and any program that knows how to get the data out of the string automatically gains the ability to use that data. That’s so cool. But sometimes, I forget that not everyone knows how amazing webhooks are. I go to hackathons and show them to people, and can almost see their brain as it explodes. I watch people poll APIs or create convoluted connections, and I cry a little on the inside. Continue reading “7 Reasons Webhooks Are Magic”