Buzzwords: Microservices, Containers and Serverless at Goto Chicago
It was an honor to give a talk on the future of Serverless at goto Chicago, an enterprise developer conference running from May 24 to 25, 2016. As you can see from the full room, containers, microservices and serverless are popular topics with developers, and this interest extends across a wide swath of back-end languages, from Java to Ruby to node.js. Unfortunately, the talk was not recorded, so I’m providing these notes (and my slide deck) for those who could not attend.
The Evolution of Deployed Applications
Before we look forward into the future of Serverless, let’s look back. We’ve seen a historical evolution in deployed applications at multiple different levels. Whereas before the unit of scale was measured by how many servers you could deploy, we’ve moved through rolling out virtual machines to the current pattern of scaling our containerized infrastructure. Similarly, we’ve seen a shift from monolithic architectures deployed through major releases to containerized, continuously-updated microservices. This paradigm is Iron.io’s “sweet spot,” and we’re leading the enterprise towards a serverless computing world.
Why Had the Industry Settled on N-Tier?
While there are many suggestions which rely on purely technical explanations, Martin Fowler cites[1] Conway’s Law in hypothesizing a cultural background to application architecture:
“Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.” -Melvyn Conway, 1967
Fowler illustrates these organizational divisions in a succinct diagram:
Diagram courtesy of Martin Fowler [source]
Application and Platform Evolution
Peter Wagner of wing.vc makes the point that changes in infrastructure lead to changes in the way applications are architected, which in turn creates a cycle of innovation process and infrastructure. As virtualization and cloud infrastructure gained popularity, deploying and scaling microservice-based applications became easier and less work-intensive. The trend towards container-centric infrastructure
Workloads: Legacy vs. Serverless
Let’s talk about the characteristics of serverless applications:
- Event-Driven
- Containerized
- Composable
- Workload-Aware
- Developer Empowerment
Download this Serverless White Paper
For a deeper dive into what building serverless experiences really means, download Ivan Dwyer’s white paper Serverless Computing: Developer Empowerment Reaches New Heights. In this paper, Ivan tackles a number of misconceptions about what Serverless means and outlines best practices for effective implementation of the serverless application architecture.