miniature soldier against very large shoe
PHOTO: James Pond

The microservices trend may be moving beyond being just another technology fad to becoming an important component of an enterprise strategy.

Though microservices can offer many benefits to the organizations that use them, like any new technology, they come with their own unique challenges. And, as is the case with any technology initiative, it is important to get ahead of the implementation challenges before you get too far along in the process.

Here’s a look at four common challenges, both technical and nontechnical, that you could face if you embark on a microservices implementation, along with suggestions for ways to overcome them.

1. Cultural and Organizational Change

Implementing microservices doesn't happen overnight. You can't decide to introduce microservices and expect all of your old ways of doing things to adapt on their own. A move to microservices requires cultural, process and organizational change, because it is a shift in mindset and in the way people work.

In a recent customer survey by my company Red Hat, respondents cited organizational and cultural change as one of the biggest challenges they are facing with regard to implementing microservices. Changing processes to make way for microservices means you have to get people to change the way they do their everyday jobs, which is not an easy endeavor.

Enterprises tend to be organized to support development processes that are currently in place, not the ones that will be in place. New technologies like microservices architectures impose a new way of developing solutions, and the way that teams had previously been organized may not support the new approach. In the case of microservices in particular, the old waterfall technique and the organization of teams by function go away, replaced by smaller teams working on microservices.

When enterprises try to roll out microservices in the old organizational style, it likely is not going to be as effective as having the support that comes with having the proper organizational structure in place. A way to mitigate this challenge is for companies to introduce a reorganization. This means restructuring the organization — and roles that individuals have in the organization — in a way that fits the new processes.

The challenge with reorganization also then becomes: What do we do with our existing applications? There will be some that still need to be supported, so it is important to find a happy medium, with the organization creating room for new techniques while also supporting important existing ones. I recommend moving existing applications into containers to help speed up the development process and benefit from scalability, DevOps pipelines, agility improvements and cloud portability. This setup can also facilitate a smoother journey into cloud-native application development without leaving your existing applications behind.

Related Article: Microservices Make Inroads: Reinventing Scalability

2. Managing Microservices

Managing microservices can be a major challenge, especially as the number of microservices increases. If you have just started with microservices and have only a handful of them, this may not be an issue in your organization just yet. However, as you continue developing more microservices, managing them can become unwieldy. Management in this case is considered the management of the entire microservices life cycle, including how they are implemented, tested, tracked, versioned, rolled out, maintained and retired. Not having a firm grasp on microservices management can lead to problems with development duplication, discoverability, usability and reusability, dependency, troubleshooting and traceability.

Developing microservices management tooling on your own, although a valid option, can be a complex and cumbersome proposition. Instead, I suggest looking to acquire a platform whose capabilities include microservices management. Start by evaluating various platforms, and choose the one that best fits your overall organizational needs and specific microservices requirements. If there are any gaps in the solution, I suggest engaging in in-house development to fill those gaps. A platform that includes capabilities that manage the life cycle of microservices can help to address any issues that can arise from having too many microservices out in “the wild.”

3. Diagnostics and Monitoring of Microservices

When a microservices approach is introduced, new ways of monitoring and troubleshooting may be needed in order to track and resolve unforeseen issues in production or during the development process. However, even though I believe this is a necessity when it comes to a proper microservices strategy, respondents to the Red Hat survey cited diagnostics and monitoring as one of the top challenges with microservices. In a microservices architecture, applications can be composed of or invoke multiple microservices. When a problem arises in the application, finding the root cause can be challenging if you do not have a platform or a means of monitoring and tracking the path a specific request took — e.g. how many and which microservices were traversed for a specific request coming from a user interface.

As with the management of microservices, designing and implementing your own diagnostics and monitoring tooling for microservices can be a daunting task. Instead, I suggest looking to acquire a platform that can provide built-in capabilities for the diagnostics and monitoring of microservices, such as logging, metrics, tracing and message correlation. Evaluate solutions to find one that fits your requirements for diagnostics and monitoring, and fill any gaps in the solution in-house. In addition, having a specific platform backed by vendor support, and engaging a third party to do the leg work of setting up monitoring tools, can ease the burden on internal teams. Microservices solutions are evolving and can add functionality based on innovative open-source technologies, so it can be a good idea to enlist the help of an outside vendor to keep up with the changes.

Related Article: Microservices Make Inroads: Replacing the CMS Monolith

4. Implementation Time and Resources for Microservices

Implementation time and finding the right resources for the development of microservices is the last of the top four challenges identified by respondents to the Red Hat survey. This challenge likely has more to do with the people implementing microservices than the technology itself. Microservices do not impose a technology or framework, in fact, the definition of a microservice is technology-agnostic. When doing microservices, organizations need to choose the right tools for the right tasks, and this leads to one or many languages and/or frameworks with which to develop microservices.

Learning new runtimes, frameworks and technologies can be both challenging and time-consuming. Another challenge is finding IT professionals capable of working with microservices. Because many of the runtimes are new, the pool of people with talent in those areas may be small.

When deciding on languages and frameworks for microservices, consider how to leverage the knowledge of the people you already have. Determining if there’s an intersection between the expertise your developers already have and the languages and/or frameworks you are evaluating will help you determine the level of investment you may need to dedicate for the retraining of your developers. On the other hand, if you choose a technology that your developers are already familiar with, you can likely leverage their experience in the development of microservices without having to invest in retraining.

You should also research the job market to get a sense of the supply of people who have expertise in the languages or frameworks that you are thinking of using for microservices. If qualified people are scarce, you may have difficulty filling jobs at reasonable rates. Additionally, if you are acquiring a microservices platform or solution from a vendor, you can use the vendor’s technical experts to train your own people and help you in your transformative journey into microservices and cloud-native application development.

Implementing microservices may seem like a daunting task, but if you break it up into steps, it will be much more manageable. Starting the process early, considering the need for retraining or organizational changes, securing third-party help for management and diagnostics, and budgeting for change can add up to successfully overcoming the challenges of implementing microservices.