diff --git a/docs/project/requirements/architecture.md b/docs/project/requirements/architecture.md new file mode 100644 index 0000000..ee8b7e9 --- /dev/null +++ b/docs/project/requirements/architecture.md @@ -0,0 +1,147 @@ +# Architecture + +Un schéma d'implémentation détaillé sera établi pour décrire l'architecture globale de l'infrastructure, y compris les différents composants, leur interaction et leur déploiement. + + +## Application + + +### Proxy: Traefik + +* Application router +* High-availability by fault tolerance +* Load-balancing by requests distribution + ALB ? +* Helm chart +* Version + + +### Application: FastAPI + +* Python + * Version: + * Packaging +* Project management? Poetry? + + +### Databases: PostgreSQL + +* Helm chart +* Version +* Master/slave for high availability and read load balancing +* Master failover + + +## Infrastructure + + +### Network + + +#### Application Load Balancer (ALB) + + +#### Virtual Private Cloud (VPC) + +* VPC subnet + + +#### Internet Gateways (IGW) + +* Global egress + + +#### Availability Zones (AZ) + +* 2 availability zones for high availability + + +#### NAT Gateways (NGW) + +* Per AZ egress +* In public subnet + + +#### Subnets + + +##### Public subnets + +* Application access +* Bastion access +* NAT gateways ? + + +##### Private subnets + +* Database +* Admin + + +### Compute + +#### Nodes + +* EC2 compute nodes + * Application nodes + * Database nodes + * Bastion node +* Auto-scaling groups + + +#### Orchestration: Kubernetes + +#### Pods + +##### ReplicaSets + +* Traefik +* Application +* Database +* cert-manager +* Metrics server +* bastion + +##### DaemonSets + +* Any ? + + +### Storage + +#### CSI + +##### EBS + +* FIXME + + +## CI/CD + +### GitHub Actions + + +#### Actions + +#### Workflows + +* Application +* Infrastructure + + +## Observability + +### Log management (ELK/EFK) + +### Metrics (Prometheus/Grafana) + +### Event and alerting + + +## Business continuity & Disaster Recovery + +### TODO Recap HA features + +### Backup + +### Disaster Recovery diff --git a/docs/project/requirements/principles.md b/docs/project/requirements/principles.md new file mode 100644 index 0000000..91c5cbe --- /dev/null +++ b/docs/project/requirements/principles.md @@ -0,0 +1,15 @@ +# Architecture principles + + +## Microservices + +Each functionality of the application has been broken down into autonomous, independent and specialized services. +Each microservice is responsible for a specific part of the application, making it easy to maintain, deploy and scale each component individually. + +Microservices communicate with each other via REST APIs, enabling flexible and decentralized communication. +This architecture allows the application to benefit from greater scalability, resilience and ease of deployment of new features. + +## The Twelve-Factor app methodology + + +## Well-architected frameworks and industry best practices diff --git a/docs/project/requirements/specifications.md b/docs/project/requirements/specifications.md new file mode 100644 index 0000000..247b185 --- /dev/null +++ b/docs/project/requirements/specifications.md @@ -0,0 +1 @@ +# Specifications diff --git a/docs/project/requirements/tech_requirements.md b/docs/project/requirements/tech_requirements.md index 651f961..8643536 100644 --- a/docs/project/requirements/tech_requirements.md +++ b/docs/project/requirements/tech_requirements.md @@ -19,6 +19,15 @@ ### Functional Requirements +#### High Performance Asynchronous API Service (FastAPI) + +- **Requirement**: Develop APIs capable of handling high concurrency. +- **Details**: + - Use FastAPI for its asynchronous features. + - Ensure APIs are scalable and can handle simultaneous requests efficiently. + - Implement proper error handling and validation in API endpoints. + + #### Containerized Microservices Architecture (Kubernetes) - **Requirement**: Implement a scalable and resilient containerized microservices architecture. @@ -37,15 +46,6 @@ - Automate deployment to different environments (staging, production). -#### High Performance Asynchronous API Service (FastAPI) - -- **Requirement**: Develop APIs capable of handling high concurrency. -- **Details**: - - Use FastAPI for its asynchronous features. - - Ensure APIs are scalable and can handle simultaneous requests efficiently. - - Implement proper error handling and validation in API endpoints. - - #### Database High Availability (PostgreSQL) - **Requirement**: Ensure data integrity and availability with database replication and failover. diff --git a/docs/project/requirements/user_stories.md b/docs/project/requirements/user_stories.md index 3337fd0..6b79119 100644 --- a/docs/project/requirements/user_stories.md +++ b/docs/project/requirements/user_stories.md @@ -7,6 +7,7 @@ - Each story should clearly state the 'who', 'what', and 'why' to articulate the needs of different system components or stakeholders (even hypothetical ones). - --> + ## Functional user stories Theses stories try to capture the functional requirements pertinent to the architecture and operation of a robust, scalable, and secure microservices application in a cloud environment.