-
Notifications
You must be signed in to change notification settings - Fork 489
Technology used
This describes the technology and libraries used to build this application. I'm not going to describe in detail how the different components work. For that I refer you to the documentation of each component on the Internet.
.NET & ASP.NET Core
The application is built completely using .NET and ASP.NET Core. See https://dot.net for more info.
Entity Framework Core
For the CustomerManagementAPI and the VehicleManagementAPI database-access is implemented using Entity Framework Core code-first. See https://docs.microsoft.com/en-us/ef/core/index for more info.
Docker
Every service within the system and all infrastructural components (database, message-broker, mail-server) are run in a Docker container. In this solution, only Linux based containers are used. Docker Compose is used to compose the application and connect all the components. See https://www.docker.com/ for more info.
Kubernetes
Kubernetes is an alternative to Docker-Compose. It is a container orchestrator that can be used to deploy the containers on a (multi-machine) cluster and manage the entire solution. See https://kubernetes.io/ for more info.
Istio
Istio is used to build a service-mesh for the entire Pitstop application. It is an add-on for Kubernetes to handle all kinds of deployment scenario's (canary releasing, A/B testing, zero downtime deployments, etcetera) See https://istio.io/ for more info.
RabbitMQ
RabbitMQ is used as message-broker. I use a default RabbitMQ Docker image (including management) from Docker Hub (rabbitmq:3-management). See https://www.rabbitmq.com/ for more info.
SQL Server
The database server used to host all databases is SQL Server. In this sample application, I chose to use a single SQL Server instance for hosting all databases. In a production environment you could choose for a setup with multiple instances to enable fail-over scenarios in case of an emergency.
MailDev
To simulate sending emails, I use MailDev. This test-server acts as both an SMTP Server as a POP3 server and offers a website to see the mails that were sent. No emails are actually sent when using this test-server. I use the default MailDev Docker image from Docker Hub (djfarrelly/maildev). See https://github.com/djfarrelly/MailDev for more info.
Serilog
Serilog an open-source logging framework for .NET (Core). It supports semantic/structured logging. All components within the solution use Serilog for logging information and errors. Log information is sent to the Console and to a Seq server (described below). See https://serilog.net/ for more info.
Seq
Seq is a central log server that can aggregate logging from several different logging-frameworks (including Serilog). It supports structured logging and offers rich searching and filtering capabilities. All logging within the PitStop solution is sent to Seq. See https://getseq.net/ for more info.
Polly
Polly is used to make sure the services are resilient to outages of other services. It offers automatic retry or circuit-breaker logic that is used at every interaction with resources that could be down (database, message-broker, other services). It is used in the web application for retrying calls to the Web APIs and falling back to an off-line page when a call fails after a certain amount of retries. See https://github.com/App-vNext/Polly for more info.
Refit
Refit is used to simplify calling REST APis. See https://github.com/paulcbetts/refit for more info.
SwashBuckle
Swashbuckle is used for auto-generating Swagger documentation and a test-ui for the ASP.NET Web APIs. See https://github.com/domaindrivendev/Swashbuckle for more info.
Dapper
Dapper is used in several services as lightweight ORM layer. See https://github.com/StackExchange/Dapper for more info.
MSTest
MSTest is the Microsoft unit-testing framework. It is used in the WorkshopManagementAPI.UnitTests project.
Moq
Moq is a mocking framework. It is used in the WorkshopManagementAPI.UnitTests project. See https://github.com/Moq/moq4/wiki/Quickstart for more info.
Playwright
Playwright is a UI testing framework for driving a browser or application in an automated test. It is used in the UITest project. See the Playwright website for more info.
Table of contents
- Startpage
- Functionality
- Solution
- Running the application
- Repository