220
F. Firouzi and B. Farahani
Organizations including Netflix, eBay, and Amazon have resolved these issues
by embracing a microservice architecture that breaks applications into small sets of
interconnected services rather than bundling the application into a large, monolithic
structure. Each microservice works as a miniature application with its own business
logic and adapters. Note that at runtime, each instance of microservices can be
deployed in a Virtual Machine or a Docker container. Some microservices offers
an API used by other microservices or consumed by application users while other
microservices might implement a web UI. The main benefits of microservice
architecture include [28]:
• Load Balancing – Can better scale-out an application via advanced load balancing
• Quicker Development – Ability to develop faster, utilize siloed development
teams, and decrease dependence
• Versatile Deployment – Can deploy each piece without impacting other systems
• Simplicity – Ease of development and maintenance
• Content Caching – Improves performance and reduces the load on the application
• Troubleshooting – Easier to recognize service failures
In the following use cases, it would be better to use monolithic architecture
[28]:
• Small Teams – When you do not have enough developers experienced in and
knowledgeable of different programming languages.
• Building Minimum Viable Product (MVP) Versions – When you just need to
implement enough features very fast to satisfy your early requirements.
• Lack of DevOps – No multimillion-dollar investments to put toward software
development (Dev) and IT operations (Ops) or extra time to spend on complex
architecture.
• Deep Development Experience – You have extensive experience developing
strong frameworks like Node.js, Go, etc.
• No Bottlenecks –There are no apparent issues with future application performance or scalability.
On the other hand, microservice architecture is more suitable in the following
scenarios:
• Flexible Deadlines – Microservices require extensive research and planning.
• Diverse Team Experience – When your team members are experienced in and
knowledgeable of different programming languages.
• Have Scalability or Reliability Concerns – When your server-side applications
need to handle the load of millions of requests.
• Co-Located Teams – Development is spread across diverse departments located
in different time zones or geographical locations.
Précédent

- 227/647

Suivant