Microservice Solution: Overview
You must have an ABP Business or a higher license to be able to create a microservice solution.
In this document, you will learn what the Microservice solution template offers to you.
The Big Picture
Figure: Overall Diagram of the Solution (not all associations are shown, for the sake of simplicity)
Pre-Installed Libraries & Services
All the following libraries and services are pre-installed and configured for both of development and production environments. After creating your solution, you can change to remove most of them.
- Autofac for Dependency Injection
- Serilog with File, Console and Elasticsearch logging providers
- Prometheus for collecting metrics
- Grafana to visualize the collected metrics
- Redis for distributed caching and distributed locking
- Swagger to explore and test HTTP APIs
- RabbitMQ as the distributed event bus
- YARP to implement the API Gateways
- OpenIddict as the in-house authentication server.
Pre-Configured Features
The following features are built and pre-configured for you in the solution.
- Authentication is fully configured based on best practices;
- JWT Bearer Authentication for microservices and applications.
- OpenId Connect Authentication, if you have selected the MVC UI.
- Authorization code flow is implemented, if you have selected a SPA UI (Angular or Blazor WASM).
- Other flows (resource owner password, client credentials...) are easy to use when you need them.
- Permission (authorization), setting, feature and the localization management systems are pre-configured and ready to use.
- Background job system with RabbitMQ integrated.
- BLOB storge system is installed with the database provider and a separate database.
- On-the-fly database migration system (services automatically migrated their database schema when you deploy a new version)
- Infrastructure dependencies are configured via docker-compose for running the solution in local environment.
- Helm charts are included to deploy the solution to Kubernetes.
- Swagger authentication is configured to test the authorized HTTP APIs.
- Configured the Inbox & Outbox patterns for distributed event bus.
Fundamental Modules
The following modules are pre-installed and configured for the solution:
- Account to authenticate users (login, register, two factor auth, etc)
- Identity to manage roles and users
- OpenIddict (the core part) to implement the OAuth authentication flows
In addition these, Feature Management, Permission Management and Setting Management modules are pre-installed as they are the fundamental feature modules of the ABP.
Optional Modules
The following modules are optionally included in the solution, so you can select the ones you need:
- Audit Logging (with its own microservice)
- Chat (with its own microservice)
- File Management (with its own microservice)
- GDPR (with its own microservice)
- Language Management
- OpenIddict (Management UI)
- SaaS (Multi-Tenancy) (with its own microservice)
- Text Template Management
UI Theme
The LeptonX theme is pre-configured for the solution. You can select one of the color palettes (System, Light or Dark) as default, while the end-user dynamically change it on the fly.
Other Options
Microservice startup template asks for some preferences while creating your solution.
Database Providers
There are two database provider options are provided on a new microservice solution creation:
- Entity Framework Core with SQL Server, MySQL and PostgreSQL DBMS options. You can switch to anther DBMS manually after creating your solution.
- MongoDB
UI Frameworks
The solution comes with a main web application with the following UI Framework options:
- None (doesn't include a web application to the solution)
- Angular
- MVC / Razor Pages UI
- Blazor WebAssembly
- Blazor Server
- MAUI with Blazor (Hybrid)
The Mobile Application
If you prefer, the solution includes a mobile application with its dedicated API Gateway. The mobile application is fully integrated to the system, implements authentication (login) and other ABP features, and includes a few screens that you can use and take as example. The following options are available:
- None (doesn't include a mobile application to the solution)
- MAUI
- React Native
Multi-Tenancy & SaaS Module
The SaaS module is included as an option. When you select it, the multi-tenancy system is automatically configured. Otherwise, the system will not include any multi-tenancy overhead.