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.
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.
