- 1. Introduction
- 2. Important links
- 3. Third-party libraries and Architecture
- 4. Usage Guide
- 5. Development Notes
- TO-DO's
In this project I aim to build a microservice. This microservice should be extensible, scalable, cloud-native, containerized, well-tested, monitorable. Projects architecture heavily inspired by Clean Architecture blog post by Uncle Bob.
I tried to use
- Repository-Design
- Domain-Driven-Design patterns while developing code.
I made load test using Jmeter and here the results: result - will come
Used docker to create docker image and minikube to implement kubernetes-like service in local.
- Live Application - will come
- Jmeter Test Results - will come
- Swagger API Documentation - localhost:8080/swagger/index.html
- Prometheus Metrics - localhost:8080/swagger/index.html
- Router
- Database
- Swagger Documentation
- [Swaggo] (https://github.com/swaggo/swag)
- Logging/Monitoring
- [Zerolog - Zero Allocation JSON Logger] (https://github.com/rs/zerolog)
- Prometheus Golang Client
Clean Architecture
To demonstrate this I'll use this tool that auto-generate architecute.
- I'll not use any comments unless I think the code can unexpectedly behaves. Code needs to explain itself.
- It is assumed that default values are in yaml, and security-sensitive variables are defined in ENV.
- I made a choice about not getting involved to front-end side.
- The JSON decoder does not report an error if values in the source do not correspond to values in the target. For example, it's not an error if the source contains the field "status", but the target does not.
- Translate the comment before adding/taking to/from database
- Correct implementation of yaml/env
- Write Usage Guide and test the application using just usage guide
- Implement rabbit mq methods