Is it worth the effort to attempt to refactor existing, and likely monolithic, applications, as microservices, or is such time and effort better spent building new, more flexible and agile applications constructed from loosely coupled microservices?
It appears enterprise IT teams are having it both ways, a recent survey finds. Typically, microservices -- and accompanying containers -- are associated with newer, cloud-centric applications. But that's not the whole story. The survey, conducted by Red Hat among its Red Hat JBoss Middleware and Red Hat OpenShift customer base, finds 69 percent indicated that they are using microservices for both new applications and for re-architecting existing ones. "This data tells us that microservices offer value to users all along their IT transformation journey -- whether they are just looking to update their current application portfolio or are gearing up new initiatives," states Cesar Saavedra, author of the report.
For a sizable portion of IT managers, the benefits of using microservices were realized relatively quickly. One-third of the group, 33 percent, said they began to realize the benefits within two to six months of their implementations. These benefits were topped off with a greater realization of the agile and DevOps vision, in the form of continuous integration and continuous deployment (CI/CD). Improved scalability, faster time to market, higher developer productivity, and faster debugging and maintenance were other benefits seen as applications were broken down into bite-size microservices.
Microservices -- and by extension, containers -- are playing a huge role in re-orienting approaches to greater enterprise resiliency, just as the internet itself, and now blockchain, were designed in a highly distributed fashion to avoid disruption. Astasia Myers. a venture capitalist with Redpoint Ventures, for one, sees microservices playing a tole in the unfolding of "service meshes." No longer deployed in serial or point-to-point fashion, microservices and containers are enabling service meshes that "can help manage traffic through service discovery, routing, load balancing, health checking, and observability," Myers points out in a recent post. "Service meshes attempt to tame unruly container complexity. We haven't seen widespread deployment yet, but we do know of businesses running service meshes in production. Moreover, service meshes are not exclusive to microservices or Kubernetes environments and can be applied to VM and serverless environments as well."
Service meshes and their microservice and container components also enable a relatively new, hip-sounding thing called "chaos engineering," or, as Myers describes it, "the discipline of experimenting on a distributed system in order to build confidence in the system's capability to withstand turbulent conditions." In other words, intentionally throwing monkey wrenches into parts of distributed systems to see how things hold up. The concept of chaos engineering was refined by Netflix, and later practiced by Amazon, Google, Microsoft, and Facebook, Myers adds. "Chaos engineering experiments on a system to improve certainty in its ability withstand production issues," she writes. "While breaking systems can be fun, it may not always be productive or provide useful information. Chaos engineering embodies a broader scope of not just injecting failures but also other symptoms like traffic spikes, unusual request combinations, etc. to discover existing issues."
Of course, implementing or dissolving applications into orchestrated arrangements of loosely coupled microservices is not an overnight task. Challenges to implementing microservices requires working with managers and end-users across the enterprise to embrace the shareable and reusable services that are being offered, the Red Hat survey finds. Overcoming corporate culture and organizational challenges is the most pronounced challenge. Additional, more technical challenges include diagnostics and monitoring microservices, along with being to devote the time and resources needed to their building, testing and upkeep.
The Red Hat survey also shows that IT managers are mitigating these challenges through developing and implementing in-house microservices tooling, re-organizing their DevOps processes, and working more closely with vendors for advice and guidance. And perhaps eventually start injecting some chaos just to see how it all works out.
(Disclosure: I have conducted work for Red Hat, mentioned in this survey, as part of my work as an independent industry analyst in the past 12 months.)