In the three years I’ve been at AppDynamics, there has been a huge uptick in microservices adoption across countless enterprises in every major industry. And while I’ve seen adoption everywhere, truthfully many enterprises are still in the experimentation phase and have yet to deploy microservices at scale in production. The reason? A successful migration isn’t easy. It takes a thoughtful approach. Here are three tips that can apply to every organization as they embark on a (successful) microservices journey.
Don’t Bite Off More Than You Can Chew
As a technologist, you want the opportunity to write code from scratch and not be beholden to the past. This approach is a lot more fun, partially because it frees you from the messy complexities of legacy systems. But in business, that’s usually not how it works.
Most of the customers are large enterprises and have a much more complex journey. The enterprise would like take a wholesale change approach, if it could. But reality gets in the way and it has to do things gradually.
You have to test along the way. You don’t get the freedom and flexibility to say, “I’m gonna go dark for 18 months, rewrite my systems from scratch, bring them back up, and they’re all gonna be lovely and good.” Rather, you must take a more gradual approach, which enables you to make incremental improvements much more quickly.
The point of microservices is agility. You’ll reach your goals faster by not trying to take one monolithic application and break it up into 30 microservices right off the bat. The wiser approach is to take one piece of that monolithic app, and get it up and running as a microservice. Once that’s working, move onto the next piece.
Once you’ve designed, built, and deployed a new microservice, it’s critical to watch how users interact with it. Instead of hitting the old code, they’re hitting the new service now. Is the service responding the way it’s supposed to? Is it delivering the same responsiveness, data accuracy, resource consumption, and cost effectiveness? Monitoring allows you to determine whether your microservice migration is successful, which helps with future planning as well.
This process can be repeated for the other parts of your system, too.
Don’t Live in Isolation
When discussing microservices, it’s essential to consider the culture needed to build them. Enterprises often have this idealized view: take a DevOps team, build a service in isolation without worrying about all of the other pieces, and suddenly you’ll have the ability to act with agility and velocity.
The challenge, of course, is that no organization lives in complete isolation. You need to work with other people, teams, and businesses. Your services need to work with other services. And more often than not, you must address problems other than your own.
You want to say, “I understand what my service is doing. It takes these inputs and provides these outputs.” But if you encounter an error without a clear understanding of what the user was trying to do as part of the larger application, it’s very hard to fix the problem.
So instead you find yourself asking, “How did I get to this state? Why was this data, which I wasn’t expecting, passed to me? How do I deal with this?”
When evaluating tools for your microservice environments, make sure they’re designed to support collaboration, strong relationships, and a free flow of information between your development teams and the software they’re building.
Monitor User Experience, Not Systems
Don’t forget that your microservice is part of an application with a purpose.
Say you’ve built a user authentication or identification service. You may want to limit your responsibility to accurately and securely authenticate and identify the user. But what’s the broader purpose of your effort?
Maybe the larger ecosystem you’ve built is an e-commerce platform: It supports the user checking out, adding to cart, and so on. What language are you using to describe how this system is being used? Your monitoring should focus on that language — and making sure that everyone is aware of the customer experience.
It’s more than simply monitoring the underlying technology: “Is the infrastructure up? Was this pod deployed? Is this container connected to storage correctly?” That’s all stuff you must deal with as details, but you really need to understand the user impact and the broader application impact in order to know why something needs fixing.
So again, from a team and cultural perspective, always align to the business objective. Always make sure that what you’re building is going to serve those needs. Then, the technology follows. Don’t be so enamored with whatever technology you’re using that you fail to meet the business objective.
There are no signs of microservices adoption slowing down, especially for enterprises that are fighting to remain agile and ahead of the competition. If you’re smart about your migration, microservices can provide an easier, less time-consuming way to deliver digital experiences or migrate applications from legacy systems to cloud servers. So it’s well worth the time to take a step back and plan a thoughtful approach.