mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
2.6 KiB
40 lines
2.6 KiB
6 years ago
|
# Microservice Demo Solution
|
||
|
|
||
|
*"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**."*
|
||
|
|
||
|
— [Wikipedia](https://en.wikipedia.org/wiki/Microservices)
|
||
|
|
||
|
## Introduction
|
||
|
|
||
|
One of the major goals of the ABP framework is to provide a [convenient infrastructure to create microservice solutions](Microservice-Architecture.md).
|
||
|
|
||
|
This sample aims to demonstrate a simple yet complete microservice solution;
|
||
|
|
||
|
* Has multiple, independent, self-deployable **microservices**.
|
||
|
* Multiple **web applications**, each uses a different API gateway.
|
||
|
* Has multiple **gateways** / BFFs (Backend for Frontends) developed using the [Ocelot](https://github.com/ThreeMammals/Ocelot) library.
|
||
|
* Has an **authentication service** developed using the [IdentityServer](https://identityserver.io/) framework. It's also a SSO (Single Sign On) application with necessary UIs.
|
||
|
* Has **multiple databases**. Some microservices has their own database while some services/applications shares a database (to demonstrate different use cases).
|
||
|
* Has different types of databases: **SQL Server** (with **Entity Framework Core** ORM) and **MongoDB**.
|
||
|
* Has a **console application** to show the simplest way of using a service by authenticating.
|
||
|
* Uses [Redis](https://redis.io/) for **distributed caching**.
|
||
|
* Uses [RabbitMQ](https://www.rabbitmq.com/) for service-to-service **messaging**.
|
||
|
* Uses [Kubernates](https://kubernetes.io/) to **deploy** & run all services and applications.
|
||
|
|
||
|
The diagram below shows the system:
|
||
|
|
||
|
![microservice-sample-diagram](../images/microservice-sample-diagram.png)
|
||
|
|
||
|
### Source Code
|
||
|
|
||
|
You can get the source code from [the GitHub repository](https://github.com/abpframework/abp/tree/master/samples/MicroserviceDemo).
|
||
|
|
||
|
### Status
|
||
|
|
||
|
This sample is still in development, not completed yet.
|
||
|
|
||
|
## Microservices
|
||
|
|
||
|
### Identity Service
|
||
|
|
||
|
...
|