A sandbox environment for experimenting with CI/CD inside a monorepo. Each project uses a Docker container, .NET Core 6.0, and EntityFramework Core 6.0. They are microservices responsible for individual Api endpoints and database storage. Each Api is described using SwaggerUI.
- Create monorepo directory structure
- Define .NET 6.0 microservices projects
- Create Docker configuration for containers
- Use Docker Compose for dev environment
- Define minimal Api structure
- Create SwaggerUI Api placeholder definitions
- Create React microservices catalogue project
- Install RabbitMQ / MassTransit broker for EventBus
- Develop databases, migrations, and seed data
- Optionally deploy microservices to Azure Web Apps
- Create Azure Kubernetes Services (AKS) orchestration with Terraform
- Publish Docker containers to Azure Container Registry (ACR)
- Publish Docker containers to Azure Container Registry (ACR) with AzureDevOps
- Optionally deploy containers to Azure Kubernetes Services (AKS) with AzureDevOps
- Optionally deploy containers to Azure Kubernetes Services (AKS)
- Create Apollo GraphQL with Swagger Apis as REST data sources
- Company.Course
- Company.Department
- Company.Employee
- Company.Notification
- Microservices.Catalogue
- Microservices.EventBus
Responsible for providing employees with a list of training courses that they can enroll into.
Groups employees into logical departments.
Defines the employees of the company.
Notifies the employees of any new training courses or to send reminders of courses that they are enrolled into.
A React application that is a developer tool for listing all the available SwaggerUI endpoints.
A RabbitMQ / MassTransit event layer that creates messages that are produced and consumed between the microservices.
Queue | Producer | Consumer | Description |
---|---|---|---|
course-created | Company.Course | Company.Notification | Prepare a notification email list of employees |
department-deleted | Company.Department | Company.Employee | Uncategorize employees from a deleted department |
employee-created | Company.Employee | Company.Notification | Sends a welcome email to a newly created employee |
employee-course-broadcast | Company.Employee | Company.Notification | Sends an email with details of a new course |
notification-list | Company.Notification | Company.Employee | Asks for the employee email addresses for broadcast |
All terms used are copyright to their original authors.