At first glance, microservices and containers seem more challenging to manage because of the thousands of isolated modules of code that accumulate over time. In reality, however, the secret to successfully deploying and managing these applications may lie in their very isolation.
Speaking at a recent Mendix World 2016 conference, Adrian Cockcroft, former cloud architect at Netflix and current technology fellow at the venture capitalist firm Battery Ventures, says that microservices in their simplicity create a much more robust IT environment.
The primary reason for this is twofold:
- Microservices, by definition, impose a “systems thinking” approach to building and deploying applications. Using this model enables IT management teams to create multiple levels of redundancy that route various calls and services around any component that isn’t available at any given time.
- Containers should spur a “you built it, you run it” approach in IT organizations. Instead of having separate IT operations teams supporting applications, Cockcroft says it’s critical that developers support their own code. Not only does that result in resolution of issues faster, but developers who are on the hook for supporting their own applications write much better code, Cockroft says. After all, they now have an incentive: Who wants to be awoken in the middle night to address some bug that wasn’t discovered earlier?
In fact, Cockroft adds, the whole point of DevOps is to simultaneously make developers responsible for supporting their own code while requiring IT operations teams to learn the programming skills required to support modern application deployments.
Cockcroft even goes so far as to suggest that the notion that monolithic applications are more robust than applications built using containers is an outright falsehood. The truth, says Cockcroft, is container applications better isolate services in a way that eliminates the entire application from going offline. In contrast, monolithic applications are a tangled mess of dependencies that have multiple single points of failure. To prove that point, Cockcroft developed a microservices simulator written in the Go programming language that he advises IT organizations to use to visualize how a microservices architecture functions.
Perhaps most important, microservices enables individuals to take charge of the destiny of a specific product. Rather than working on an element of a project that is centrally managed, each team working within the context of a microservices architecture is free to innovate within the context of a specific set of functions. Ultimately, that organization structure does more to accelerate the development of innovative capabilities than any mandate issued on high could ever hope to accomplish, Cockcroft says.