docs: added architecture

This commit is contained in:
ITQ
2025-12-17 19:19:09 +03:00
parent cd1d375f05
commit 11331a5c10
2 changed files with 92 additions and 0 deletions
+84
View File
@@ -0,0 +1,84 @@
# Architecture and Technologies
## Technologies Used
### PostgreSQL
PostgreSQL was selected as the primary database for its reliability, ACID compliance, and advanced features like JSONB support, which are useful for handling semi-structured data.
### Redis
Redis is used for caching and session management due to its in-memory data store capabilities, which provide extremely low-latency data access.
### MinIO
MinIO serves as the object storage solution, offering S3-compatible APIs. It is lightweight, performant, and ideal for storing large amounts of unstructured data.
### Docker and Docker Compose
Docker is used to containerize the application, ensuring consistency across development and production environments. Docker Compose simplifies the orchestration of multiple services during development.
### Nginx
Nginx is used as a reverse proxy and load balancer to distribute traffic efficiently and ensure high availability.
### Makefile
The Makefile is used to automate common tasks such as building, testing, and running the application, improving developer productivity.
## Services Architecture
### Auth Service
- **Responsibilities**: Handles user authentication and authorization.
- **Endpoints**: Defined in `auth.proto`.
### User Service
- **Responsibilities**: Manages user profiles and related data.
- **Endpoints**: Defined in `user.proto`.
### Competition Service
- **Responsibilities**: Manages competitions, including creation, updates, and participant management.
- **Endpoints**: Defined in `competition.proto`.
### Task Service
- **Responsibilities**: Handles tasks within competitions, including creation and updates.
- **Endpoints**: Defined in `task.proto`.
### Submission Service
- **Responsibilities**: Handles submissions made by users for tasks.
- **Endpoints**: Defined in `submission.proto`.
- **Additional Logic**: Sends messages to Kafka for downstream processing.
### Checker Adapter Service
- **Responsibilities**: Processes new submissions by running checks and validations.
- **Additional Logic**:
- Reads new submission messages from Kafka.
- Runs Kubernetes pods to execute the checker logic.
- Retrieves results and updates the database.
#### Results Service
- **Responsibilities**: Manages and retrieves results for tasks and competitions.
- **Endpoints**: Defined in `results.proto`.
#### Review Service
- **Responsibilities**: Handles reviews for submissions.
- **Endpoints**: Defined in `review.proto`.
#### Achievements Service
- **Responsibilities**: Manages user achievements and badges.
- **Endpoints**: Defined in `achievements.proto`.
### Communication and Workflow
- **Kafka**: Acts as the message broker for asynchronous communication between the `Submission Service` and the `Checker Adapter Service`.
- **Kubernetes**: Used by the `Checker Adapter Service` to dynamically run pods for executing submission checks.
- **PostgreSQL**: Centralized database for storing results and other persistent data.