There is an old engineers proverb: ”Better, cheaper, faster – pick two.” When it comes to the mobile apps that rule our world, we are demanding all three every day.
Apps have to get better, improve our lives, and work 24/7, in all conditions.
It’s a complex problem. And complexity usually means cash, as in money out the window — money that big companies resent spending and that startups don’t always have.
Cloud computing, the hot market where companies can rent supercomputing power from the likes of Amazon, Microsoft, and Google, helps a little bit.
Even then, if you have a complexity problem, all you’re doing is compounding it, forever. And your Amazon Web Services bill will reflect it. Even with the cheaper economies of scale afforded by the cloud, it can still be prohibitively expensive for a startup to get off the ground.
So big tech companies like Amazon, Netflix, and PayPal have completely rethought how they build their products, using bleeding-edge technologies that they developed themselves to take one big problem and make it a lot of smaller ones.
At PayPal, for example, the “make a payment” button app is actually a separate, tiny app maintained and improved upon by a dedicated team. At sites like Amazon and Netflix, “user reviews” is a discrete app from “add to cart.” Different teams of programmers manage and maintain each one separately.
Developers call this new-age design philosophy “microservices,” since it takes one big piece of software and breaks it down into a bunch of component parts that are easy to update and maintain individually.
“The benefit is that PayPal is moving faster than ever,” says PayPal CTO James Bareese.
It’s not a new idea. But a perfect storm of new technology and old thinking is putting microservices within reach of the average joe for the first time. And developers are going nuts for it — Docker, a startup at the center of the microservices movement, is rumored to be valued at over $1 billion.
The monkeys and the monolith
Given enough time, most software ends up sprawling out as a huge, dense tangle of interconnected code that can make it incredibly hard to update or improve on. This usually results in what developers call a “monolithic codebase,” or “monolith.”
That’s not a term of endearment. A monolith is big, heavy, and hard to move. And when a monolith goes down, it goes down hard.
Under the traditional app architecture model, a bum update can send a whole app crashing down. That means weeks and weeks of careful coding and testing before it ever gets into your hands. And as apps get more complex, the update cycle gets slower.
“The pace of innovation wasn’t where we wanted it to be, as a company,” says PayPal’s Barrese.
With microservices, developers take a big app and break it down to a lot of little ones, like “get location” or “share on Twitter.” Each microservice is dealt with totally separately, and these apps only talk to each other via APIs (the “hooks” that programs use to connect with each other).
“The more you break that down, the easier it is to build and modify an application,” says Storm Ventures Managing Director Ryan Floyd, an investor who specializes in cloud infrastructure.
Essentially, you’re taking a big problem and reducing it to a lot of little ones. Updating a piece of the application is totally independent of the rest of the stack, meaning programmers can afford to move faster. And even if one of them goes down, there’s no cascading effect that would tip over an entire monolith.
A good metaphor here, says Augusto Marietti, CEO of API management company Mashape, is to imagine you’re driving a car. Even if the brakes go out, which is really bad, “it doesn’t break the whole car.” At least your engine is still working, right?
This means a lot of cloud savings, too. If you just need more compute capacity to back your database, or your payment processing page, you can funnel it just to that one decoupled service. The cloud, already super-efficient, can become a lot more affordable for even the smallest businesses to scale up.
“This trend will bring to enterprise computing a whole new set of cloud economics and cloud scale, and it will introduce entirely new kinds of businesses that simply were not possible earlier,” writes Andreeseen Horowitz partner Peter Levine in a blog post.
Time is a flat circle
The idea of microservices has been around for a while:
In 2011, a prominent programmer named Steve Yegge slammed his ex-employer Google in a famous memo, saying that it wasn’t nearly as good at building technology platforms as Amazon (where he also worked), going into depth about the e-bookstore’s microservices-based philosophy — though it wasn’t called that, yet.
“It is now fundamental to how they approach all designs, including internal designs for stuff that might never see the light of day externally,” Yegge wrote.
But the idea didn’t catch on at the time, because the tools for developers to manage all of those services and APIs just didn’t really exist yet. It was widely assumed that you had to be at Amazon scale to take advantage of Amazon innovation.
This is where Docker comes in: Its super-hot technology lets you take a bunch of code and wrap it up in what they call a “software container.” Write the code once, run it anywhere, Docker promises.
Docker makes it much easier for developers to manage all the different moving parts of an app and funnel in their updates, taking advantage of the same tricks and techniques as the big web companies to reduce complexity and get bigger, faster and more cheaply.
And the rise of Docker has created a whole new ecosystem for software to help manage and run those containers: Startups like Nginx, CoreOS, Rancher Labs, and Mesosphere are finding whole new opportunities in the container market.
In short, microservices speak to a rising trend: Using the tricks mastered by the big technology companies to help little tech companies grow. In the short term, there are going to be tremendous opportunities for new companies that can build the tools to help companies take advantage.
Storm Ventures’ Floyd says that he doesn’t have any investments in a microservices company, “but I wish I did.”