For this assignment the .Net Core framework was chosen as base platform given it's cloud and multiplatform nature. Since one of the non-functional requirements was scalability, the API is Docker-friendly allowing the solution to be put into a Kubernetes Pod for simple and effective horizontal scalability.
- OpenAPI valid schema allowing easy discoverability and scaffolding of API services (Available via /swagger/v1/swagger.json).
- API explorer frontend to visualize and interact with the API's resources (Available via /swagger endpoint).
- HTTPS protocol support (using a self-signed certificate).
- Logger service infrastructure.
- .NET Core 2.1 or superior.
- The id field of the diff comparison was assumed to be an Integer.
- Clone the solution repository.
- Open a console and go to the solution root folder.
- Enter "dotnet build".
- Clone the solution repository.
- Open a console and go to the solution root folder.
- Enter "dotnet test".
- Clone the solution repository.
- Open a console and go to the solution root folder.
- Enter "dotnet run --project Waes.CodeAssignment.ScalableWeb.Api\Waes.CodeAssignment.ScalableWeb.Api.csproj".
- To view all API's resources, open the browser and go to: https://localhost:5001/swagger or http://localhost:5000/swagger.
- You should have Docker installed in your system.
- Clone the solution repository.
- Open a console and go to the "Waes.CodeAssignment.ScalableWeb.Api" folder inside the solution root folder.
- Enter "docker build -t waes-api ." into the console.
- Enter "docker run -d -p 60888:80 -p 44360:443 --name myapp waes-api" into the console.
- To view all API's resources, open the browser and go to: https://localhost:44360/swagger or http://localhost:60888/swagger.
- Inject and call appropriate ILogger methods from controller actions for easy and simple tracing/debugging/auditing.
- Create a new generic interface IDiffService allowing comparisons for different types of objects.
- Create a robust CI/CD pipeline containing quality gates for tests code coverage.