I guess before we go talking about what are microservices and that other geeky stuff, we should start by talking about what is business agility. Agile like a cat at hunt, the concept of business agility came from agile project management in the software world. I think HRZone’s definition is my favorite:
“Business agility refers to distinct qualities that allow organisations to respond rapidly to changes in the internal and external environment without losing momentum or vision. Adaptability, flexibility and balance are three qualities essential to long-term business agility.”
Now, business agility has spread from the software world to the startup world and now it’s the “official” or actual objective of just about any company trying to be competitive in the twenty-first century. But that doesn’t mean that it gets any easier, especially for the software world. So many companies are dealing with technical debt and what LaunchAny’s founder James Higginbotham called “monolithic regret.” See, particularly companies that were perhaps the first to innovate and go online in the Nineties and early Noughts are saddled with what we call legacy software or the monolith. These involve the big releases that we always delay in updating our software on our PCs or Macs. Since everything has to work together these involve huge releases that take a lot of planning, time, money and, perhaps most importantly, testing to make sure that this one release doesn’t break it all.
Needless to say, legacy software and monolithic architecture are counterproductive for business agility and these companies that were the innovators ten, 15 or 20 years ago, are finding themselves held back by the same technology that drove their business toward success. You find you can’t live with the monolith and you can’t live without it either.
In comes microservices.
Microservices is the software architecture style where you choose to break complex applications down into small, independent processes. They work fully independently from each other, which means, instead of releasing a couple times a year, you can release a couple times a day. And because it’s all isolated, that means you can do whatever you want inside that microservice, allowing programmers to code in languages independent of the monolith, in whatever works best for them and the project.
One of the main drivers of microservices is containers, which wrap up a piece of software with everything it needs to run all tucked inside. The most popular container tool open-source software Docker is aptly named after the shipping industry, and thus is gives a great way to imagine it all—isolated shipping containers that can be launched as soon as they are ready without bugging anybody else, like that legacy software.
Software engineer Raül Pérez calls microservices the “divide and conquer” approach with small autonomous projects working together that gives ownership and independence to the individual developer. Microservices enables this agile software development without the collapse of current projects and services. It allows you to break that legacy software into pieces slowly and more logically.
The old-school legacy way does group code, just not on what it does. Higginbotham calls this the concern-based approach which “works really well when it’s doing really simple one thing—then we start having monolithic regret.” Microservices follows the module-based approach, “looking at things based on their area of concern or functionality like accounts, inventory, orders, shipping and so on.”
Essentially, microservices enables software developers to design for the specific needs of specific departments and use cases. Microservices enables the IT department to be in sync with an entire company’s vision and business strategy.
What other innovations or processes support business agility? Tweet them to us at @TefDigital!