What are the advantages of 'microservices' introduced by large companies such as Netflix and Amazon?

'Microservices ' introduced by IT companies such as Amazon, Netflix, Uber, and LINE have been attracting attention in recent years as software architectures suitable for modern development environments. Backblaze , a cloud storage service provider, explains the mechanism, advantages and disadvantages of such microservices.

What Are Microservices?

Over the years in large and complex software development, most code has been designed from scratch as one large module in which the various services of a product work closely together. This software architecture , called monolithic , has long been the mainstream in software development. However, in monolithic, all services are in one module, so there was a problem that maintenance was low and upgrade was difficult.

Microservices, on the other hand, are a method or architecture that divides and links the elements that make up an application into independent small service groups rather than as a single large module. In microservices, each function is divided into reusable units, basically executed as a stand-alone process, and each is linked and provided as one application.

Known as a pioneer of microservices, Netflix rebuilt traditional monolithic applications in 2008 after a serious database failure and service stagnation, with a fragmented architecture for each small service. I implemented it.

The term 'microservices' became popular after the blog post 'Microservices ' was published in 2014, and the term 'microservices' did not exist yet in 2008. In recent years, Uber, Amazon, LINE, etc. have been running services in a microservice environment and have been receiving a lot of attention.

BackBlaze cites the following advantages of such microservices:

1: Can encourage and support code reuse
Extensive libraries already exist for the various microservices that make up an application. Developers can access this library to integrate the required functionality into their applications.

2: The logic module can be separated to simplify the architecture and improve reliability.
Dividing the entire service into simple modules greatly facilitates initial design, implementation, product updates, enhancements, bug fixes, and enhances service reliability.

3: Can adapt to environments such as DevOps and agile
With microservices, services can be updated simply by fine-tuning small microservices, so it is easy to adapt to development environments such as DevOps where development staff and operation staff work together, and agile that repeats trial and error in a short period of time. As a result, it is possible to reduce the time it takes to bring services and new features to market, and to continue improving services through continuous updates.

4: In essence scalable
By implementing microservices using a container management platform such as

Kubernetes, it is possible to perform processing such as scaling , failover, and load balancing that increase or decrease the processing capacity according to demand.

5: Useful for cloud support of applications
When migrating traditional applications to the cloud, rebuilding the architecture from monolithic to microservices can reduce costs in a pay-as-you-go model.

In this way, while microservices have many advantages, 'to move from a monolithic architecture to microservices, it is necessary to change not only the software construction method but also the functions of the software development team itself.' BackBlaze points out that there are also disadvantages such as 'when introducing a service, there is a complexity that did not exist in a monolithic architecture.'

If you already have a simple or monolithic implementation that meets the needs of your company or customer, there is no reason to move to microservices. Rather, forcing the move to microservices can add unnecessary complexity to the product and negatively impact the project. Therefore, it seems that you should consider migrating to microservices only after problems such as updates and maintenance occur.

BackBlaze also states that when providing microservices in the cloud, the provider should be decided by considering the following points.

1: Integration / Partner Network
One of the risks of moving to the cloud is the

lock- in situation where it is difficult to switch providers. Backblaze recommends that you research your provider's partner network and how to switch to avoid being trapped in a single cloud ecosystem.

2: Interoperability and API compatibility
It's also important that the cloud provider you're considering prioritizes an open ecosystem and provides an architecture-compatible API.

3: Safety
Features such as ransomware, data corruption protection, and object locking to prevent data changes should also be considered when choosing a cloud provider.

4: Infrastructure as Code (IaC)
If your cloud provider supports IaC, you can scale your storage to meet your needs without having to manually manage your processes.

5: Price transparency
BackBlaze said it's important to understand the pricing systems offered by cloud providers and find a provider that meets your organization's needs.

in Software,   Web Service, Posted by log1h_ik