Microservices, Hyper-Complexity, and Automation Or: How Not to Build a Person
Microservices, Hyper-Complexity, and Automation
Or: How Not to Build a Person
Imagine building a human being one DNA codon at a time. Sure, you might be able to build a pretty awesome individual. But it would take a long, long time. And you’d only be able to build one. Worse yet, if you didn’t get your person exactly right on your first try, it would take you another long, long time to come up with Version Two.
Unfortunately, this is exactly the position many companies are putting themselves in with microservices.
Yes, microservices theoretically enable companies to adaptively recombine their digital DNA to build the increasingly awesome apps. But without better automation, they won’t be able to do so very quickly—or very reliably.
Hyper-Complex DevOps
Microservices introduce significant additional complexities into the DevOps lifecycle. Each microservice has its own data mappings, APIs, latency/performance dependencies, etc. So, while microservices may offer genuine advantages in terms of adaptability and re-use, they also multiply the total number of discrete DevOps tasks—especially vis-à-vis test/QA—by at least one full order of magnitude.
This is a serious problem for shops that aren’t sufficiently well-automated, because any task—or, as is much more often the case, any handoff between tasks—that is not well-automated will quickly turn into a bottleneck.
The resulting adverse consequences of insufficiently automated microservices DevOps can thus include slow delivery, excessive cost, and mistakes. Worse yet, chronic bottlenecking will likely create a pervasive organizational disincentive that fundamentally undermines the microservices initiative itself.
What Automation Entails
Thorough, effective DevOps automation is, of course, more easily aspired to than achieved. To implement the kind of end-to-end DevOps automation required for microservices success, organizations have to get three things right:
- Process mapping. Effective automation requires an exhaustive definition of process. This exercise is not for the faint of heart—because most organizations have many pockets of ad hoc process at various points in the DevOps cycle. Test/QA tends to be especially variable based on factors such as the delivery pressure teams are under at any given time.
- Automation technology. Development teams often use scripting and other technologies to automate various DevOps tasks. An overly fragmented automation environment, however, can be difficult to orchestrate and manage. So the move to microservices may necessitate a more holistic integrated automation environment.
- Leadership and culture. A well-automated DevOps process alone is insufficient for microservices success, because it is unfortunately not true that “if you build it, they will come.” On the contrary, a strong leadership commitment is essential for changing the way people work.
The application economy is putting development organizations under intense pressure to be more productive and responsive to ever-changing market dynamics. Microservices offer one possible way to respond to that pressure. But microservices won’t work without a much more rigorous approach to DevOps automation. IT leaders may therefore want to focus on automation first and microservices second, instead of the other way around.
Unless, that is, you only want to build one app using microservices—and then maybe build a slightly better one a few months later.
Great insigt! But automation is a moving target. There is no such thing as "completely automated". All human systems are controlled centrally by brain using nervous system. Microservices are not dependent centrally on anything for functioning.
Good insight. Be it Agile Methodology to drive effective SDLC management or be it tooling to enable end-to-end DevOps automation or be it a Microservicres driven architecture pattern to build adaptable apps/software/platforms, they all are enablers of speed & velocity at various levels - People, Process & Technology respectively. Any long-term business digital transformation strategy would require an enterprise to have a holistic view and address all these levels - one is incomplete without the other. Each of these enablers are meant to complement the other and effectively address rapid & constant change in their respective area (level). I think the order in which each of these should be addressed would differ in case of each enterprise and would either depend on an enterprise's maturity at each of those levels or the evolution stage of a particular key initiative within an enterprise.
You can't really split a human body! Can you?
Excellent info !!
The human body is made up of numerous systems; skeletal, endocrine, cardiovascular etc. We've evolved over millions of years from more basic predecessors based on selection. Unfortunately, with a complex system you don't have much choice but to split out the components. Monoliths are totally fine for certain applications but as soon as you start doing anything more advanced you have no choice but to split things out. Depending on where you start from I'm not sure the decision to sort out automation first is the right choice. If starting from scratch you will usually build out automation as you build out the service. If moving from monolith to micro services you'd choose an area, split that out, and build your automation for that new piece.