Microservices for Massive Software (Chapter 6 - Sommerville) Unit Testing Multicomponent Monolith Refactoring Advantages Choreography Multi-component Microservices excel at splitting components up into independent functions and programs that will not require the entire service to be changed when a single module needs to change Disadvantages Unit Testing By making every microservice independent from one another, it becomes much simpler to test a single aspect of a program. There's no longer the hassle of separating services that are deeply connected Monolith Refactoring Advantages Monoliths are the traditional way of creating programs. These rely on heavily-connected and dependent modules that lacks scalability in most cases -Massively scalable -Little to no dependency on other microservices -Can exist on a small scale too -Independency theoretically allows for optimal use of agile methods Choreography Why command every aspect when each service can handle itself? Choreography gives a pattern to each microservice to follow independently Disadvantages -Scalable, but just as much complex -Conversion from a macroservice is extremely difficult. -Not always needed, and sometimes dependency is a desirable trait. -Essentially, a microservice acts as its name implies. It serves as a microscaled function of some large program. -A good analogy would be something like creating classes within code, where certain subtasks are given to an individual entity where it makes the most sense. -The decoupling of structures helps retain productivity within expanded structures, where monoliths generally fall apart. As emphasized via the image below Martin Fowler References: 1. Vera-Rivera, F. H., Gaona, C., & Astudillo, H. (2021, September 8). Defining and measuring microservice granularity-a literature overview. PeerJ. Computer science. Retrieved December 7, 2022, from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8444086/ 2. Li, K., Ding, Y., Shi, Y., Wang, L., & Zhen, Z. (2020, August 1). Research and application of high-performance data storage and Transmission Technology in Microservice Environment. ResearchGate. Retrieved December 8, 2022, from https://www.researchgate.net/publication/343811700_Research_and_Application_of_High-Performance_Data_Storage_and_Transmission_Technology_in_Microservice_Environment 3.Auer, F., Lenarduzzi, V., Felderer, M., & Taibi, D. (2021, April 30). From Monolithic Systems to microservices: An assessment framework. Information and Software Technology. Retrieved December 7, 2022, from https://www.sciencedirect.com/science/article/pii/S0950584921000793 4.Syed, T. A., Long, J., Khatri, V., & Khuhro, M. (2021, January 13). An approach to break down a monolithic app into microservices. ResearchGate. Retrieved December 8, 2022, from https://www.researchgate.net/publication/353220480_An_Approach_to_Break_Down_a_Monolithic_App_into_Microservices