The technology demonstration app uses Entity Framework Core to manage 400GB of data from the StackOverflow Database in a clean and consistent manner
Read-write separation on application level:
- Separate connection strings for read and write databases
- Independent Read and write db contexts
- More efficient scaling on micro and macro levels
Employing Compiled Queries serves as an effective strategy to significantly boost the performance on the data retrieval side of the application.
- Unit tests - in-depth tests for complex domain logic
- Integration tests - api-level test with a separate database created dynamically using Docker
- Benchmark test - comparison of REST and GraphQL performance
- Mutation test - using stryker-net
REST - with Swagger documentation
GraphQL - using ChilliCream GraphQL Platform
gRPC - using Google.Protobuf
Spam detection is accomplished through a machine learning model trained on a large dataset of previous posts from a database. The project harnesses the power of the ML.NET library to efficiently analyze and identify spam, ensuring a high level of accuracy and reliability.
Feature flags provide a easy way to turn features on or off dynamically. FeatureFlagController.cs - demo edpoints FeatureFlags.cs - logic for the flags appsettings.json - set by "FeatureFlags" section in appsettings
- Download and install StackOverflow Database - version
2018-06
or newer - Go to Api/appsettings.json and set the connection strings to database
- Run database migrations
dotnet ef database update
- Run project and go to app url: http://localhost:5000/swagger/index.html
- Go to ModelBuilder/appsettings.json. Set
ConnectionString
to database andSaveModelPath
- (path to generate ML model) - Run
ModelBuilder
in release mode and wait for ML model to generate .zip file in specified location - Go to PredictionEngineApi/appsettings.json. Set
PredictionModelPath
(path and name of generated ML model) - Run project and go to app url: http://localhost:5001/swagger/index.html
- aa docker-compose -f elasticsearch-kibana-docker-compose.yaml up -d