Amazon can make crucial changes on its e-commerce platform in seconds. Tesla can upgrade your car while you sleep. What digital unicorns can do in minutes, traditional companies might need months. The lightning-quick capabilities of born-digital businesses aren’t just the result of following a unique development methodology; they’re also possible because they’ve got a flexible, scalable and resilient enterprise architecture.

With large global corporations competing against the best digital businesses, they’re increasingly willing to adopt a much different approach to enterprise architecture in order to provide a differentiated quality of service to their customers. And today, this approach is most often dubbed “microservices.”

Let’s Get Micro

Microservices architecture is a manifestation of a longstanding trend of modularity in software. In fact, ever since the term “software” was introduced, modularity has been a key attribute. While nomenclature may change over time, the approach of composing an application into a set of discrete, independent, self-contained, network-connected components (i.e., microservices) is here to stay. 

But in the push to prove new ways of delivering software, we sometimes pay more attention to the methodology (i.e., Agile and DevOps) than the architecture itself. As traditional companies shift to digital, it’s important to build an architecture designed for constant change. Without it, the long-term pain of maintaining the IT landscape in the future would outweigh the benefits of a successful digital initiative.

10 Best Practices for Implementing Microservices

While the idea of microservices is certainly catching on, it can easily increase IT costs if not done well.  Here’s my top-10 list of best practices for successfully shifting to a microservices architecture.

  1. Hide the details. One of the founding principles of microservices design is to hide complexities and implementation details and expose only what’s needed by the service’s client. If unnecessary details are exposed, it’s difficult to control the various parts of the service, to the detriment of the entire architecture. Businesses should involve their architectural review board to ensure the proper controls are established at the scrum/pod level and that microservices principles are not lost in the design and development of the application.
  1. Ensure proper container design and administration. Although a microservices architecture doesn’t dictate the use of containers, most organizations prefer to use them because they provide execution isolation, which boosts server utilization. This makes it possible to run multiple microservices on a single physical server, which maximizes cost efficiency, performance and productivity.
  1. Tightly manage the microservices application lifecycle. Through proper lifecycle management, businesses can ensure successful integration testing and debugging, as well as high levels of application security. We worked with an insurance business to maintain different test versions of each of the microservices that it individually deployed before testing the end-to-end application. The business also implemented continuous security principles in its efforts to certify quality.
  1. Know when to provision dedicated on-demand compute resources. By making the distinction between dedicated and on-demand resources, businesses can ensure they deliver a superior customer experience. One of our healthcare clients, for example, made sure its microservices architecture and cloud administrative software could easily and securely move workloads between its on-premise and cloud environments, with the goal of providing a faster response to customers.
  1. Simplify the IT landscape. One of our financial services clients implemented microservices with the goal of building a resilient payment processing system. In addition to focusing on the current scope, the organization has simplified its enterprise IT systems, with several goals in mind: streamlining the infrastructure by adopting standardized cloud technologies; improving user experience by enhancing multi-channel interfaces; easing software administration by standardizing on the open source tools used for lifecycle management across the enterprise; and improving end-to-end business processes by recommending changes that go beyond the scope of the current project.
  1. Establish standards across development teams. When multiple teams work on different services independently, they need to establish and follow a common set of standards for areas like fault tolerance, logging and error handling. Nonstandard approaches will lead to repetition and inefficient coding practices.
  1. Accommodate hybrid environments. When businesses have a hybrid of monolithic and microservices applications, they can’t follow a one-size-fits-all development strategy. Instead, their development resources and administration processes need to be clearly segregated or integrated, depending on their requirements. Unlike adoption of Agile or DevOps, moving to microservices requires an architectural change that will impact interfaces with monolithic applications.
  1. Govern the use of open source tools. While it’s common to use popular open source microservices tools to deal with challenges such as security, monitoring, debugging and logging, adoption of these tools cannot detract from the performance or security of the architecture. Businesses need to establish an organizational approach for selecting and using these tools to ensure proper administration of ongoing microservices development. Many of our customers develop an organizational policy for the use of open source software, establishing formal repositories for approved versions of the software, spending the time to understand the open source software supply chain and, most importantly, establishing governance for exception processing.
  1. Assign responsibility for regulatory compliance. In the pursuit of microservices benefits such as modularity and reusability, regulatory requirements can be easily overlooked. In their efforts to develop a foreign exchange (FX) system, one of our European banking clients needed to ensure that the rules of the General Data Protection Regulation (GDPR) were properly implemented in every component of the microservices they developed or interfaced with. The bank used the opportunity to creatively design reusable control components that would help them across the corporation when implementing the rules in other applications.
  1. Minimize personalization. In the process of personalizing and customizing end-user experiences, organizations need to avoid compromising crucial functionality when integrating microservices. Generally speaking, personalization should focus more on the user value chain than on core functionalities. When businesses over-analyze user preferences, they increase the level of customization, which results in reduced flexibility. One of our healthcare clients ran a campaign to educate its user base on why extreme personalization was not implemented, explaining that the focus was improved flexibility and performance. This resulted in a better customer understanding and reduced customer complaints.

The demand for lower costs, higher quality, faster time to market and better customer experiences has continuously challenged the way IT solutions are architected. With new technologies, the current answer lies in microservices. Businesses that understand the nuances of this philosophical and technological shift will ensure they can compete far into the future.

Anbu Muppidathi

Anbu Muppidathi

Anbu Muppidathi is a member of Cognizant’s executive leadership team and is a senior leader in the company’s Digital Systems and Technology... Read more