I was approached by a Flatiron Coach who works in Employee Relationships about a company that was interested in my CV and wanted an interview. I really enjoyed the interview and was able to ask questions that gave great insight.
One question I asked was about the future of the company and the approach with their technology. The interviewer answered by speaking about one potential path, which was to adopt microservices. I didn’t know much about it but definitely did hear about and see this buzzword around. The interviewer kindly spoke more about it and why it can be beneficial for future growth. So, I decided to research more into microservices and the pros and cons of using them.
Micro. Services. What? 👀
Microservice architecture allows us to create highly scalable, flexible applications by breaking down the application into distinct services that implement specific business functions. These services, often referred to as “loosely coupled,” can then be built, deployed, and scaled independently.
Every individual service communicates with other services, through APIs, which permits them to be written in different languages or on different technologies (though many practitioners discourage it). This is not like a Monolithic architecture where services are intricately interlinked and are only scaled together.
Why Microservices? 🤔
In my research, I have seen that this architecture has become very popular due to its modular characteristics which allow for flexibility, scalability and development efficiency.
Microservices architecture has risen in popularity because its modular characteristics lead to flexibility, scalability, and reduced development effort. Cloud platforms also enable microservices and functions to be scaled from inactivity to high volume and back again while customers pay only for the compute capacity they use.
Summon The Benefits 🙌🏼
- Freedom to independently develop and deploy services.
- Can be developed by a fairly small team.
- Code for different services can be written in different languages.
- Easy integration and automatic deployment (using open-source continuous integration tools).
- Easy to understand and modify for developers, thus can help a new team member become productive quickly.
- Developers can make use of the latest technologies.
- Code is organised around business capabilities.
- When change is required in a certain part of the application, only the related service can be modified and redeployed.
- Better fault isolation: One microservice failing does not prevent the other services from working.
- Easy to scale and integrate with third-party services.
- No long-term commitment to fixed technology stacks.
Where There Are Pros, There Are Cons 🤕
- Due to distributed deployment, testing can become complicated and tedious.
- Increasing number of services can result in information barriers.
- Being a distributed system, it can result in duplication of effort.
- When number of services increases, integration and managing whole products can become complicated.
- In addition to several complexities of monolithic architecture, the developers have to deal with the additional complexity of a distributed system.
- Requires a lot more communication and cooperation between different teams (this may not always be so easy).
I hope this gives you a dive into the microservice architecture and see why it is a major buzzword in the tech world!