docs/en/framework/architecture/microservices/index.md
//[doc-seo]
{
"Description": "Explore microservice architecture and learn how it enhances modularity, scalability, and continuous delivery for efficient application development."
}
//[doc-nav]
{
"Next": {
"Name": "Microservice Solution Template",
"Path": "solution-templates/microservice/index"
}
}
"Microservices are a software development technique—a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. The benefit of decomposing an application into different smaller services is that it improves modularity. This makes the application easier to understand, develop, test, and become more resilient to architecture erosion. It parallelizes development by enabling small autonomous teams to develop, deploy and scale their respective services independently. It also allows the architecture of an individual service to emerge through continuous refactoring. Microservices-based architectures enable continuous delivery and deployment."
One of the major goals of the ABP is to provide a convenient infrastructure to create microservice solutions. To make this possible,
ABP Studio is a comprehensive desktop application that significantly simplifies microservice solution development and management. It provides powerful tools specifically designed for distributed systems:
The Solution Runner allows you to run all your microservices with a single click. You can create different profiles to organize services based on your team's needs. For example, team-1 might only need to run the Administration and Identity services, while team-2 works with SaaS and Audit Logging services. This approach saves resources and speeds up development by allowing each team to run only the services they need.
The Kubernetes Integration panel enables you to deploy your microservices to a Kubernetes cluster and manage them directly from ABP Studio. Key features include:
The Application Monitoring area provides a centralized view of all your running microservices:
ABP Studio's Solution Explorer makes it easy to add new microservices to your solution. Right-click on the services folder and select Add -> New Module -> Microservice. ABP Studio will:
One common advice to start a new solution is always to start with a monolith, keep it modular and split into microservices once the monolith becomes a problem. This makes your progress fast in the beginning especially if your team is small and you don't want to deal with challenges of the microservice architecture.
However, developing such a well-modular application can be a problem since it is hard to keep modules isolated from each other as you would do it for microservices (see Stefan Tilkov's article about that). Microservice architecture naturally forces you to develop well isolated services, but in a modular monolithic application it's easy to tightly couple modules to each other and design weak module boundaries and API contracts.
ABP can help you in that point by offering a microservice-compatible, strict module architecture where your module is split into multiple layers/projects and developed in its own VS solution completely isolated and independent from other modules. Such a developed module is a natural microservice yet it can be easily plugged-in a monolithic application. See the module development best practice guide that offers a microservice-first module design. All standard ABP modules are developed based on this guide. So, you can use these modules by embedding into your monolithic solution or deploy them separately and use via remote APIs. They can share a single database or can have their own database based on your simple configuration.
ABP provides a pre-architected and production-ready microservice solution template that includes multiple services, API gateways and applications well integrated with each other. This template helps you quickly start building distributed systems with common microservice patterns.
See the Microservice Solution Template documentation for details.
For a hands-on experience, follow the Microservice Development Tutorial that guides you through: