Kubernetes and the Next Step for Evolutionary Architecture
Think back to 2012. How would you have architected a cloud environment back then? Docker, Kubernetes, and Amazon Lambda weren’t around yet. OpenStack and CloudFoundry were still new. Microsoft Azure was just beginning to expand beyond its roots as a .NET platform-as-a-service into infrastructure-as-a-service. Google wasn’t in the Infrastructure-as-a-Service (IaaS) game at all yet.
Flash forward five years to 2017 and everything was already different. Several IaaS providers and vendors have pivoted or are gone entirely. Amazon, Google, and Microsoft now dominate the space. Containerization is progressing at a rapid clip.
These sorts of revolutions are relatively rare. The first half of the 2010s was a period of experimentation while the second half was more about refinement and standardization. Since 2017, the industry has been standardizing on containers and Kubernetes, and serverless architecture looks like it’s here to stay. If there’s anything we’ve learned in 2020, it’s that anything can change utterly and unexpectedly.
Despite a stabilizing market, enterprises are still open to further change according to The New Stack’s recently-conducted Next Generation IaaS study. When 62 respondents were asked about the private cloud they know best, less than half said the provider is greatly meeting their future requirements. VMware vSphere and OpenStack were less likely to meet future requirements compared to the newer AWS Outpost and Azure Stack. While these are both proprietary cloud solutions, the study does not provide evidence that companies are purposefully standardizing on one cloud over another. In fact, respondents were asked about vendor-neutral, open source IaaS foundations, and 80% said the ability of such a project to compete with today’s commercial, proprietary offerings were at least moderately influential on their organization’s plans.
But no one wants to swap out architecture willy nilly. “The core level of your platform is difficult to replace even in an ideal situation,” said Ian Crosby, chief technology officer of consulting company Container Solutions.
Evolutionary architecture is emerging as a way to help development teams incorporate new technologies into applications, even if those applications weren’t designed with new technologies in mind.
“For a long time, the software industry followed the notion that architecture was something that ought to be developed and completed before writing the first line of code,” industry observer Martin Fowler wrote in his forward to “Building Evolutionary Architectures,” by Neal Ford, Rebecca Parsons, and Pat Kua, the Thoughtworks employees who coined the term “evolutionary architecture.”
“Inspired by the construction industry, it was felt that the sign of a successful software architecture was something that didn’t need to change during development, often a reaction to the high costs of scrap and rework that would occur due to a re-architecture event,” Fowler wrote.
Evolutionary architecture scraps that approach in favor of applying to architecture the same sort of thinking that goes into agile development and continuous delivery/continuous delivery. “We’re trying to move to the idea that architecture is something we do all the time,” Crosby said. “Instead you design for flexible systems so that as new technologies come in you can take advantage of those individual pieces.” That way, as business goals change, you can adopt technologies that support those goals without completely rearchitecting.
Walmart is one company working hard to make sure its architecture can support future applications of any sort. “We are always evaluating, adopting and adapting to new technologies across the board,” said Walmart Executive Vice President of Technology Platforms Koby Avital. The company uses a variety of public and private cloud infrastructures and has built its own cloud native platform to sit across all of those different clouds. “We also build development frameworks and an operational model that hides differences and streamlines the experiences over the demarcation lines between technologies to achieve a high level of developer productivity,” Avital said. “We envision this architecture to serve our evolving needs very well in the years to come.”
But should you do if you’re a smaller company looking to embrace continuous architecture without building your own multicloud platform and programming frameworks? Design for extensibility, Crosby said. “Design a core platform that you can extend as new use cases emerge that aren’t solved by the core,” he said.
Open source ecosystems are an important part of building extensible architectures. For one thing, projects like Kubernetes provide a strong model for how you can build a core platform that’s designed to be extended. For another, they can provide a good starting point that you can extend in conjunction with open source communities.
Indeed, Kubernetes makes a good base layer for building evolutionary architectures. “Kubernetes a platform for platforms in a lot of ways,” Crosby said. “You see different flavors and plugins coming out.”
The rise of Kubernetes is good news for those dizzied by the rapid changes in cloud technologies over the past few years. It’s becoming an industry-wide standard. “Every cloud provider has a Kubernetes offering,” Barker pointed out. “Even the OpenStack people have moved to a Kubernetes layer. You’re in a world now where Kubernetes is abstracting everything below it.”
That means, on the one hand, you won’t have to worry about Kubernetes going away any time soon. And, on the other, you’ll be ready for everything else that changes in the near future.