Skip to content

Commit

Permalink
WIP: requirements
Browse files Browse the repository at this point in the history
  • Loading branch information
silopolis committed Dec 28, 2023
1 parent b72e015 commit 8580452
Show file tree
Hide file tree
Showing 5 changed files with 173 additions and 9 deletions.
147 changes: 147 additions & 0 deletions docs/project/requirements/architecture.md
Original file line number Diff line number Diff line change
@@ -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
15 changes: 15 additions & 0 deletions docs/project/requirements/principles.md
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions docs/project/requirements/specifications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Specifications
18 changes: 9 additions & 9 deletions docs/project/requirements/tech_requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.
Expand Down
1 change: 1 addition & 0 deletions docs/project/requirements/user_stories.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 8580452

Please sign in to comment.