For software development and architecture organizations, microservices-based deployments continue to be all the rage. The ability to operate in a highly flexible manner, rapidly delivering fast and focused software features both internally and externally, is very promising.
Indeed, your ability to unleash software, services, and computing rapidly to solve evolving problems can spell success or failure in today’s environment.
The concept behind microservices has its key roots back in 2002 at Amazon, but gained its best traction in 2014. And 2015 was the “Year of Microservices” for Java (ScottLogic). Continuing on the momentum of the prior 2 years, there’s no shortage of excitement in 2016. We continue to see emerging challenges, opportunities, and trends driving how enterprises adopt microservices.
If you’re looking to move your company’s legacy systems into the cloud, driven by microservices, this post will provide you a primer and update on the quickly evolving field.
And by heading down this path, you’ll be in good company. The top users of microservices include Amazon, Google, Netflix, Ebay, and more.
Most companies still aren’t ready for microservices
While the technology and skillsets are easier for companies to get their hands on, that doesn’t mean they’re ready. Integrating these technologies and practices into the larger business is where the trick really is. It takes cross-functional leadership and the ability to organize multiple departments around this concept.
I was fortunate to be in a company that was a very early adopter of the organizing around small software features. We had the entire business aligned to this model about a decade ago. Now this doesn’t mean we were deploying small bits of software rapidly or using microservices.
But it does mean we had the bigger business ready for this type of work. It was a great model and allowed us to hold each individual piece of software accountable to revenue (return on investment). We knew this one feature would cost X and deliver us Y. We could monitor it through the lifecycle. But we weren’t yet enjoying many of the other benefits and efficiency gained by microservices.
Here are the functions we had to rally around this concept in order to make it work. Everyone in this chain was thinking in terms of developing in minimal features.
- Project Governance and Management Office
- Product Management
The point is rapid software deployment…and specifically microservices…do not exist as a function of the Software Engineering groups alone.
This is a shift in the way the company operates and how it delivers features internally and externally. The entire company must be aligned. It starts at the leadership level.
What are the benefits of microservices?
While I’ve already touched on many of the benefits of having a microservices-oriented business, here are a few more to really drive the point home (these are a selection of the bigger list you’ll find over at javacodegeeks.com):
- Each microservice is focused on a specific business requirement.
- Microservices can be developed independently by small team of developers (normally 2 to 5).
- Microservices allow for easy and flexible deployment with Continuous Integration tools.
- Microservics are easy to understand, modify, and maintain.
- Microservice allows you to take advantage of emerging and changing technologies, without having to do a complete overhaul.
- Microservice scales on demand.
What are the current challenges with microservices?
While there is much good about microservices, there are plenty of challenges that still need to be ironed out and improved as they mature. The technologies and tools to monitor, trace, and perform quality assurance continue to improve, but that doesn’t mean we’re quite in the clear.
Here’s a list of challenges we commonly see:
- The broader company culture isn’t aligned and making the shift can be a real challenge. This is a CTO-level venture.
- Finding the right talent with solid experience is tough. Great developers are an extremely valuable asset, and landing them can be hard. If you want a great developer who also has solid real-world microservices experience, doubly so.
- Managing of microservices and keeping consistency across teams, keeping up with documentation, and detailing relationships of modules needs more attention than many are used to.
- There can be significant duplication of effort and reinvention across teams, if left unchecked.
- If a production problem occurs, finding the source of the problem is still a real challenge. Distributed systems with many interwoven connections remain difficult to troubleshoot.
What to do right with microservices
While organizations may say they’re operating with microservices, here are some items you really need to do properly to nail it. As you might guess, this has more to do with process and culture than it does technology.
- Be ruthless about well-defined modular structure and boundaries. Containers are small and must have strict definitions understood and adopted across the entire team.
- Keep deployments independent and autonomous. If things go wrong, broader system failures shouldn’t occur.
- Technology should be diverse. With microservices, you should embrace leveraging different technologies, programming languages, frameworks, and data techniques. There is not a need to unnecessarily restrict the technologies used.
- Manage consistency of deployments, practices, operations, and updates. Again, the management and process aspects are what set apart the best organizations using microservices.
So get your DevOps hat on…this is the process of delivering software and infrastructure changes rapidly. This is quick build, test, and release done frequently and reliably.
What are the technology shifts that have allowed for successful microservices?
Much of what has enabled the explosive growth of microservices is:
- Maturity of large, scalable, and secure cloud services, such as Amazon Web Services, which provide broad infrastructure capabilities to enable microservices containers, scalability, availability, fast 1-click deployments, and much more.
- The ability to package applications into small containers, as led by technologies such as Docker and Dropwizard. See more on Docker with AWS.
- Management tools and service providers for microservices have also continued to mature, bringing consistentcey, expertise, and speed to enterprise initiatives.
Most companies will see a strong shift toward microservices. This takes a cultural shift first–across the business–then the benefits will follow. In upcoming posts, we will drill into:
- Security concerns of microservices
- Privacy considerations of microservices
- How to convert legacy apps to cloud-based microservice alternatives
- Much more
What has been your experience with microservices deployments? What challenges have you seen?