The Challenge of Deploying Micro Service Architecture
The concept of micro services architecture (or micro services) has emerged as a way to make it easier for software developers to strive for the best product for their customers.
And of course, especially for companies that want efficiency and productivity combined with agility and cost reduction.
Today, micro services can be inserted into the structure of a business to dynamize activities and generate flexibility through process division and rapid and integrated information flow.
All of this also contributes to the decentralization of services and gives more people access to effective solutions to solve similar problems.
In theory, it is quite simple: ensure that your services are being displayed with good granularity, without strong dependencies on each other, and that each service is useful, with a clear and indivisible function.
In practice, this can raise a number of other concerns.
So, in this article we will fall head over heels on how to deploy the Micro Service Architecture in your business!
The Micro Service Architecture
Traditionally, software is built as a closed structure with a beginning, middle and end. Or rather, backend and frontend.
This philosophy ends up generating very large pieces (monolithic architecture), usually focused on solving large needs and organizational problems. If you only wish to use Excel charting functions for some other application, you have to open Excel and load other unnecessary functionality at that time.
If you desire history details, we have already talked about the history of integrations here in this post.
Microservice Architecture, unlike previous Monolithic Architecture or even SOA architecture, stands out for exploring the idea of granularity, which facilitates the execution of the service itself and the adaptation to changes.
The idea is to split a particular system into actionable and modular services, so that joining small parts does a bigger job. Thus, microservices allow integration between various services and the insertion of various components into the system.
Moreover, you have more flexibility and the power to change functionality that went wrong or is not working well, without having to redo whole parts of a system or having to throw it all away, because the reality of your business has changed.
Thus, deploying the microservice architecture makes things even faster!
Breaking down applications into services
The most common way to scale an application is to run multiple identical copies of the application (through a load balancer), performing a process named decomposition, to solve common problems in monolithic architecture, implying that some services may be very small while others will be significantly larger.
With the three-dimensional concept, you can understand how micro services are useful in partitioning and scaling a monolithic application. We have three axes of scalability
- X: refers to horizontal scalability to extend application capacity and availability (each server performs an identical copy of the code);
- Z: Similar to the X axis, but requires the presence of a component that is responsible for routing requests to the appropriate server;
- Y: This is the third dimension of scalability, the horizontal, called functional decomposition, and is responsible for dividing the application into a series of services. Each service has a set of functions (order management, customer management, and so on).
Please keep in mind that while the Z axis divides similar elements, the Y axis splits distinct elements.
Deploying Micro Services depends on a good partitioning
System division or partitioning should be well thought out, but there are approaches that will help you deploy the micro service architecture within your business structure.
See some types of partitioning you can use:
- By verbs/use cases: The Checkout case, for example, where an order fulfillment service, or Checkout UI service, implements the interface with the people who use the system.
- By synonyms/features: As an example, consider that for merchandise catalog management, the company might have the Catalog Service. In this case, the service is responsible for all activities involving related resources/entities.
What is important is that each service has few responsibilities in accordance with the Single Responsibility Principle (SRP). That is, an exposed service must have a clear and unique role within the architecture.
If this is the case where a service has more than one responsibility, you should apply some partitioning as mentioned above.
Unix features are another example of service modeling, where each feature performs only one defined operation (but can be combined via shell script with other features to perform more complex activities). Over the years, this loose coupling has made it easier for several operating system variations to be released, such as Ubuntu, Fedora, Solaris, and many others.
The pros in the Micro Service Architecture
Deploying the micro service architecture in your business will bring different benefits to your business structure:
- Developers enjoy greater freedom to develop services independently;
- Automatic deployment through continuous and open source integration tools such as Hudson, Jenkins and others;
- The web container has a faster startup;
- Ability to use code written in different languages for different services, using a “official language” to communicate between them (such as Json or XML);
- Opportunity for developers to use the latest technologies;
- Architecture that is easy to understand and adaptable to change, which favors learning, contributing to greater staff productivity;
- Easy expansion and integration of micro services with outsourced services, through APIs, for example;
- Code organized according to business capabilities, giving more insight into customer offerings and needs;
- Necessary changes can be applied only to the specific service, without having to modify the entire application. Feature upgrades also become less complex;
- Optimized fault management (for example, if one service fails, others will continue to work).
Through micro services, one may identify failures and bottlenecks more efficiently, as partitioning favors a more detailed view of each service.
Adhering to the Micro Service Architecture
Many consider micro services as a way to deliver SOA through high granularity services. Micro Services enable you to develop business capabilities by distributing and organizing them in a functional way.
It is a logic that unites technology and business, focusing on giving more power and dynamism to a company.
This enables micro services to meet the goals of any architecture while reducing maintenance and building costs. Our API Management platform enables large companies to have an agile and secure architecture. If you wish to know more, feel free to talk to us.
So, what do you think about this architecture now? Also, check out this new content about the Event Driven Architecture.
For more information on deploying a Micro Service Architecture, check out our Free Webinar on the subject:
Pros and cons in the Micro Service Architecture
Also, check out the APIX video with the theme “Technical Trail | Micro Services battlefield best practices”: