Over the years Azure has evolved. First it was a host for stateless applications, using a range of Azure services. Then it became a host for virtualized infrastructures, supported by cloud hosted tools for big data and for storage. Now it’s supporting cloud-native distributed application development, using containers and tools like Kubernetes to manage your code.
In its earlier iterations, Azure didn’t need much in the way of new programming skills. Even as a stateless platform, you could use many of your existing .Net skills to build and deploy apps. But distributed systems, like those that run on Kubernetes, are very different. And while you can build apps using the same tools and techniques you always have, the underlying architectures and design patterns are quite different.
Brendan Burns, one of the original founders of the Kubernetes Project, is now a distinguished engineer on the Azure team. As part of that role, he’s working on a set of design patterns for Kubernetes-based applications that can help architects and developers move into the world of distributed application development, and he talked about these ideas at O’Reilly’s 2018 Oscon conference.
A pattern language for containers
As Burns noted, the history of programming is one of increasing abstraction, and of tools and patterns that guide developers. As a profession, you’ve taken steps from raw assembly language programming to Fortran and on to Donald E. Knuth’s seminal book series The Art of Computer Programming, then as your applications got bigger and bigger, you added object orientation and thought about design patterns.