Monolithic Applications vs. Microservices
There is a constant need in the IT market to reassess new tools. In the case of software architectures, the choice between using Monolithic Applications or Microservices requires an analysis of the characteristics, advantages and disadvantages of each system.
In a simplified description, monolithic architecture is a single system, not divided. It is a software application in which different components are linked to a single program within a platform. In it, there is a dependency between the services of the same application. Microservices, on the other hand, are a type of software architecture that break up applications into independent services that communicate using well-defined APIs. It is a lighter application than that created in a single block or monolith.
Advantages and disadvantages
Monolithic architecture stands out for its ease of development, testing and maintenance; the existence of only one system; the horizontal form of climbing; low network traffic, since there is no communication between services. On the other hand, the disadvantages are the complexity of the code, which makes it difficult to execute quick changes; the lack of flexibility between programming languages; the fact that a change requires an entire application to be deployed and the wrong code can render the system inoperable.
Microservices stand out for their ease of implantation; flexible scalability; the technological diversity that allows the use of several programming languages; for autonomy, specificity; agility, objectivity and resilience, in addition to the ease of teams working on separate items. According to Martin Fowler and James Lewis (2014), the characteristics of this style of architecture in relation to the organization of business logic are automated deployment, intelligence at the ends and decentralized control of language and information. On the other hand, microservices have disadvantages such as the demand for more attention and time for their creation; response code replication (the pattern of one service can be repeated in others); the need for more complex management.
Despite the differences, it is possible to combine monolithic architecture and microservices where there are microservices or larger services consumed by monolithic architecture. Although the microservice architecture is very well evaluated, it is not necessarily the best option for all cases. Nor can it be said that the monolithic application is outdated. It should continue to be adopted whenever it is the architecture that best meets specific needs. The analysis prior to a choice must consider the possibilities of system breaks, maintenance facilities, cost-effectiveness of the change, as well as the training of the teams. The problem of software architecture goes beyond a notion of right and wrong because it involves different scenarios, circumstances and objectives that each modality of software can solve more effectively. The key to making the right choice is knowledge of the functionality and suitability of each of the systems.
https://aws.amazon.com/pt/microservices/
https://www.zappts.com/blog/arquitetura-monolitica-e-microsservicos/
https://blog.geekhunter.com.br/arquitetura-de-microsservicos-x-arquitetura-monolitica/