While service oriented architectures have been popular for quite some time, microservices and SOA together can take the idea of modularity in enterprise applications to a completely new level. SOA is often concerned with interoperability across applications on the enterprise platform and serves as a systemic approach to breaking down the monolith. Microservices employs a similar approach within the various layers of the application itself. Together, they can form an extremely powerful partnership.
While some worry that a microservices based approach might introduce too many moving parts into the architecture, experience shows that this approach can indeed offer a great deal of value when the overall objectives of an application are kept in mind. Keeping it simple, and simply treating microservices as simple building blocks that makes the architecture work can make software development significantly easier.
The benefits of microservices
Simplicity is the watchword of this architecture. If a microservice is responsible for doing only one thing, it's easier to design it to do that one thing very well. In addition, if one service fails, the high level of modularity decreases the risk that it will cause a domino effect impacting surrounding services. Testing and deploying microservices and making changes should be easier as well since these services are largely decoupled from one another.
The driving force behind the development of microservices is utility for business. Having the flexibility to upgrade existing apps with targeted functionality is a key benefit of this architectural style. The independently deployable services have the potential to allow apps to be restructured piece by piece as new technology solutions become available. Each service may also be independently scaled, allowing resources to be directed at a specific function rather than scaling an entire application. The concept itself is largely language agnostic, so businesses can utilize the skill sets of their existing development teams to achieve their objectives, selecting the appropriate language or framework for each service.
Microservices are here to stay
This software architecture trend is gaining unstoppable force, according to Sid Sijbrandij, co-founder and CEO of GitLab. "There is a microservices revolution happening. People are splitting up more and more applications into microservices. You can argue whether that's a good thing or a bad thing, but the fact is that it's happening." With an increase in popularity, there is inevitable fallout.
The proliferation of microservices leads directly to an explosion in the number of applications. That means more repos, with the accompanying issue trackers, CI, CD, and wikis, etc. Sid and his team have offered a solution to this problem for the development community. "Using Git in the proper way leads to a big growth in the number of distinct repositories you have. It becomes more of a burden to integrate all the tools when setting up new CI projects in Jenkins. We think CI is something you should do for every project. But if you're going to have lots of projects, CI is something you should have as part of the tool itself. With GitLab, when you view your commits or merge requests, you can always link the relevant CI status, build architecture, etc."
As the number of apps increases, DevOps must truly come into its own as well. With so many small pieces being individually updated, the pace of change can be very rapid. Fortunately, microservices lend themselves to automated deployment, making them DevOps and CI friendly.
Who uses microservices, anyway?
Oliver White, product marketing mead at Lightbend (formerly TypeSafe), suggested that traditional enterprises are not the only organizations with a keen interest in microservices. "I have talked to companies that I would not have expected to start embracing this microservices based architecture. I think one of the more interesting stories I covered was William Hill (an online gaming company in the UK). They were focused on things like resilience, dynamic scalability for 100x for a few hours every day and then back down. They built their own platform using Scala, Akka, Play and other technologies like Docker."
One challenge this company faced was building a platform that offered on-the-fly micro-bets to cover in-event betting. The goal was to be able to offer very short lifetime bets via mobile push or through other delivery means during events that take into account recent activities. White gave an example, "If a horse you were betting on is suddenly now in second place, you'll have something pop up that would suggest, 'Would you like to double down?' They need to be able to send out potentially millions of these microbets that have maybe 15-30 second lifetimes."
For such short-lived activities, microservices are a natural solution. In fact, it's a safe bet that this architecture style will continue to make its way from the enterprise down to the smallest startups. And with applications becoming increasingly modular, big business will continue to benefit from the ability to make development lean, mean, and micro.
Have you integrated microservices into your SOA based systems? Let us know your experience.