Microservice v Monolith Architecture
Published: 2021-04-12 07:29:11

## What is Microservice Architecture?
Microservice architecture is architecture that structures an application into multiple different services which makes them much more maintainable and deployable. This is very useful when working with large applications because it increases the reliability and speed of deployment. Each service is responsible for a single task and by using APIs those services can work together to complete more complex issues. 
### Benefits of Microservice Architecture:
•	They are easier to scale up due to the fact that these services are all independent and are separated by service boundaries. The whole application does not need to be scaled for one service only that service is affected. 
•	 If one of the services were to fail, then it would not bring down the entire application because each service works independently from one another. 
•	Because all the services are independent it is much easier to add changes or to experiment without fear of destroying the entire application. Any mistake or error made only affects that one service.
•	It is easier to add new feature to Microservice Architecture. 
•	When deploying or redeploying a service it will not require redeploying the whole application, but just the service. 
•	Microservices make it easier to choose which programing language and database to use because they do not require a standard to control and maintain everything. 
### Drawbacks: 
•	Microservice architecture is a lot more complex and because of all the independent systems, connections must be made between modules and the databases. All of those connections need to be monitored and handled carefully. 
•	Because of how complex this architecture is in order to manage one you need people who have experience and expertise with Microservices. You also need a lot of people to manage one. 
•	All the applications that have an independent service have to be deployed individually. 
•	Since all the services are independent and deploy independently it is difficult to test solutions that use this architecture.
## What is Monolithic Architecture?
Unlike Microservice architecture Monolithic is a single large code base and all of the functions are in one place. This means that if there is a change or an update it will affect the entire application and developers make changes to the same system at the same time. Monolithic architecture is known as the standard method because it has been the main method for so long. 
### Benefits of Monolithic Architecture:
•	Much easier to test and debug that Microservice architecture because Monolithic is one unit.
•	It is much easier to update and make changes because it is all one application, and one change can affect the whole application. 
•	With Microservices you need to deploy each service separately, but with Monolithic is only requires one deployment because it is one system.  
•	Because Monolithic architecture was the standard method for so long most developers will know how to work with them.
### Drawbacks:
•	They are very difficult to scale up because it requires scaling up the entire application.
•	Changing anything in the system is difficult because everything will be affected so all changes need to be carefully planned and managed. 
•	Applying new technology to a system that uses Monolithic architecture will require having the entire code rewritten. 
## Conclusion
Many large companies are transferring from Monolithic to Microservice architecture. Companies like Google, Netflix, and Amazon. This is because Microservice offers them more flexibility and scalability than their previous Monolithic architecture. However, both are useful in their own regards and one is not better than the other. Whichever one a company should pick depends upon their current needs and how large the company or project is. Microservice is very complex and requires a large and experienced team in order to manage it but is much more scalable and adaptable. Monolithic architecture however only needs a small group to operate it and works much better with smaller and simpler projects which don’t have the size that Microservice architecture is built for. 
###Video
[What is Docker and Microservice Architecture?](https://youtu.be/FVzsPdJdOzM)
### Sources:
*[The What, Why, and How of a Microservices Architecture | by Hashmap | HashmapInc | Medium](https://medium.com/hashmapinc/the-what-why-and-how-of-a-microservices-architecture-4179579423a9)
*[What are microservices?](https://microservices.io/#:~:text=Microservices%20%2D%20also%20known%20as%20the,Organized%20around%20business%20capabilities) 
*[Microservices vs Monolith: which architecture is the best choice? (n-ix.com)](https://www.n-ix.com/microservices-vs-monolith-which-architecture-best-choice-your-business/)
*[What is monolithic architecture? - Definition from WhatIs.com (techtarget.com)](https://whatis.techtarget.com/definition/monolithic-architecture)