FlexiSAF Brown Bag Series: Enter Microservices
In this brown bag session, Bulama Yusuf, one of FlexiSAF's Software Developers introduces people to the concept of Microservices. The talk examined what Microservices is, how they differ from monoliths and what are some of the pros and cons of Microservices.
What is Microservices?
According to one definition, "Microservice architectural style  is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies"
The Reality: How Microservices Works
From my experience, I've come to realise that building an application is one thing, maintaining it is another. More often than not, how a system is built affects how it gets maintained. Up until now, the known approach and best practice towards building software has been to build the whole system as single deployable unit… a BIG single deployable unit.Making changes to these big deployable units becomes painful and this is because one small change may require several changes to other parts of the system. In the same way, the whole system will have to be redeployed when minor modifications are made. Such systems are referred to as monoliths and monoliths cause a lot of pain to software development teams that have to maintain the system.[caption id="attachment_1737" align="aligncenter" width="850"]
Figure 1: Monoliths and Microservices[/caption]
Pros vs Cons of Microservices
Because of the much talked about advantages of microservices, some big enterprise players – like Amazon, Netflix, and eBay – have been convinced to begin their transitions. But just because something is all the rage around the industry, doesn’t mean it has no drawbacks.Altoros, a software company building complex applications, have summed up some of the plus & minuses of microservices:[caption id="attachment_1738" align="aligncenter" width="638"]
Pros of Microservices[/caption][caption id="attachment_1739" align="aligncenter" width="638"]
Cons of Microservices [/caption]Have you worked in both worlds? Do you have any of your own experiences you’d like to share?