Using information found by Narcisa Zysman and Claudia Söhlemann we take a closer look at microservices architecture and learn about why it is being widely used and what are its limitations.
Uses:
Better fault isolation: If one microservice fails, others will likely continue to work.
Optimized scaling decisions: Scaling decisions can be made at a more granular level, allowing more efficient system optimization and organization.
Localized complexity: Owners of a service need to understand the complexity of only what is within their service, not the whole system.
Increased business agility: Failure of a microservice affects only that service not the whole application so enterprises can afford to experiment with new processes, algorithms, and business logic.
Increased developer productivity: It’s easier to understand a small, isolated piece of functionality than an entire monolithic application.
Better alignment of developers with business users: Microservice architectures are organized around business capabilities, developers can more easily understand the user perspective and create microservices that are better aligned with the business.
Future-proofed applications: Microservice architectures makes it easier to replace or upgrade the individual services without impacting the whole application.
Smaller and more agile development teams: Teams involve fewer people, and they’re more focused on the part of microservices they work on.
Limitations:
Can be complex: While individual microservices may be easier to understand and manage, the application may have significantly more components involved, which have more interconnections. These interdependencies increase the application’s overall complexity.
Requires careful planning: Because all the microservices in an application must work together, developers and software architects must carefully plan out how to break down all the functionality and dependencies. There can be data challenges when starting an application from scratch or modifying a legacy monolithic application. Also, multiple iterations can be required until it works.
Proper sizing is critical and difficult: If microservices are too big, might have all the drawbacks of monoliths. If it is too small, the complexity of the individual services is moved into the dependency maps, which makes the application harder to understand and manage at scale.
Third-party microservices: Third-party services can change their APIs (or dependencies) at any time and in ways that may break your application.
Downstream dependencies: The application must be able to survive failures of individual microservices, yet downstream problems often happen. Building fault-tolerance into an application built with microservices can be more complex than in a monolithic system.
Security Risks: Microservices growth in popularity, may increase an applications’ vulnerability to hackers and cybercriminals. Because microservice architectures allows the use of multiple operating systems and languages when building an application, there’s the possibility of having more targets for malicious intrusions. We are also unaware of the vulnerabilities of third-party services being used.
When complexity increases, we make sure it is warranted and well understood. Regularly examining interconnected set of microservices so the application does not crash. Learning about limitations helps us come up with such solutions which we can apply in our future work and when we work on LibreFoodPantry system.
Source:
https://www.castsoftware.com/blog/microservices-architecture-a-good-or-bad-approach
https://kruschecompany.com/microservice-architecture-for-future-ready-products/#Microservices_cons
From the blog CS@worcester – Towards Tech by murtazan and used with permission of the author. All other rights reserved by the author.