In case you haven’t heard, microservices are in. After seeking out a comprehensive definition of microservices, and then pitting microservice architecture against Monoliths, SOA and APIs, it’s time to ask the burning question, "Just why are mammoth brands like Amazon, Netflix and Google choosing to go with microservices over monolithic architectures?"
How Microservices Are Good For Big Business
According to Tim Hockin, Principal Engineer at Google Cloud, big brands have eyed the technical advantages of microservices over monoliths. “Decoupling [services using microservice architecture] gives developers more choice for what tools they use and how they update each microservice. You can test and version each piece independently and a security update or bug fix to one component doesn’t require retesting all the others,” he said.
Another nice side-effect of decoupling, Hockin explained, is that your performance characteristics are individually manageable. Thus, “If you need more front-end bandwidth to handle a traffic spike, you can simply add more replicas of your front-end, without touching your auth system, prediction engine or storage.” But with all that being said, Hockin was careful not to paint microservices as some sort of silver bullet for building applications.
Microservices offer a lot of advantages for larger applications, but they come with some caveats. Complexity is one big issue. A microservice-based app is naturally more complicated to manage than a traditional “monolith” because there are more moving pieces to monitor, aggregate, manage and update.
Failure handling is another challenge. Microservices naturally introduce many more failure modes than simple function calls. What happens if the network disconnects? What if the other service crashes? You have to address these [issues],” Hockin said.
Microservices Driving Growth
Former eBay CSO Greg Shepard, now CTO of Pepperjam, concurred with Hockin on the point that microservice architecture can, help boost a businesses growth strategy. He offered the example of Netflix, which has enjoyed success at a giant scale with microservices. “By taking a platform like Netflix and breaking it into multiple, discrete projects, you have the ability to scale your video encoding microservice independently of your streaming microservice,” he said.
“Each microservice has different characteristics such as video encoding service being a graphic processing unit (GPU) farm, whereas the streaming service is bandwidth heavy and geographically redundant that is just pushing the results of the encoding service. This results in cost savings, usually because you don't end up with 100 servers with the best of everything. [Without getting technical], it’s a smarter and more effective use of a company’s 'data pipes',” Shepard told CMSWire.
Finally, Shepard explained that because microservice systems are independent of each other, brands like Netflix, Google and Amazon can scale their staff and resources independently, and at the right times, enabling them to innovate at a pace they set and manage.
Related Article: Microservices Make Inroads: Replacing the CMS Monolith
Will Microservices Help Small Businesses?
Okay, so big brands have technical, operational and financial reasons for adopting microservice architecture. But do those same benefits stretch to small businesses When asked, Google’s Hockin thought a marriage between a small company and microservice architecture could work. “Smaller companies can benefit from microservices, but they may not benefit in the same way a large company does,” he said.
“A small team probably means the same people are working on most or all of the components, so there may be higher coupling between services, which can really accelerate development. For small teams, the independent testing and release cycles offered by a microservices architecture can be critical to minimizing development efforts. Thinking in terms of microservices also means they can leverage the wonderful open-source ecosystem of ready-made services,” Hockin said.
However, Hockin cited that the biggest downside to using microservices with small teams is the inherent complexity that a microservice architecture brings to the table. “For a small team, successfully managing complexity is critical. Each team member needs to understand more of the whole system than a larger team and microservices can exacerbate the problem. The ways microservices can interact is more complex and sometimes “emergent behavior,” or how those services interact with each other, can be difficult to understand,” Hockin explained.
Seattle-based YourBase Founder Yves Junqueira, previously a Site Reliability Engineer at Google for almost a decade, took a stronger stance against small businesses wandering down the microservices route. “The companies that benefit from microservices are those that need to innovate quickly and are planning to grow their development team past ten engineers or so. On the other hand, companies with products that rarely change would probably not see any benefit from microservices,” he began.
Junqueira went on to caution, that smaller teams should be very careful when planning to move to microservices. "It can take a lot of time and effort to make it work, and that effort is often better spent working on other projects,” he said. Delving deeper into the issue, he revealed that engineers often share horror stories with him about botched attempts to move to microservices. The failures are usually because they, “either got the design wrong, or migrating to the new infrastructure took forever, or they couldn’t hire people with the right kind of experience to execute the project.”
Needless to say, those issues would be even harder to overcome for a small company with smaller teams and considerably less financial power.