Skip to content

Commit 4a20f72

Browse files
committed
WIP: requirements
1 parent cd89fbe commit 4a20f72

File tree

4 files changed

+180
-0
lines changed

4 files changed

+180
-0
lines changed
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# Architecture
2+
3+
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.
4+
5+
6+
## Application
7+
8+
9+
### Proxy: Traefik
10+
11+
* Application router
12+
* High-availability by fault tolerance
13+
* Load-balancing by requests distribution
14+
ALB ?
15+
* Helm chart
16+
* Version
17+
18+
19+
### Application: FastAPI
20+
21+
* Python
22+
* Version:
23+
* Packaging
24+
* Project management? Poetry?
25+
26+
27+
### Databases: PostgreSQL
28+
29+
* Application is using the well known and battle-tested OSS PostgreSQL database management system.
30+
31+
FIXME pg version
32+
33+
* Use a specialized Kubernetes operator to manage the PostgreSQL cluster
34+
35+
Zalando's **postgres-operator** is chosen because...
36+
FIXME main reason(s) to choose it over alternatives
37+
38+
Alternative OSS solutions available are: ...
39+
FIXME list alternative solution considered
40+
41+
* Helm chart
42+
* Single read/write Master / Multi read-only slaves architectur
43+
44+
It provides both high availability and read load balancing, without the additional complexity of multi-master configuration, which the application doesn't require at the moment.
45+
46+
* Master failover
47+
48+
49+
## Infrastructure
50+
51+
52+
### Network
53+
54+
55+
#### Application Load Balancer (ALB)
56+
57+
58+
#### Virtual Private Cloud (VPC)
59+
60+
* VPC subnet
61+
62+
63+
#### Internet Gateways (IGW)
64+
65+
* Global egress
66+
67+
68+
#### Availability Zones (AZ)
69+
70+
* 3 availability zones for high availability
71+
72+
73+
#### NAT Gateways (NGW)
74+
75+
* Per AZ egress
76+
* In public subnet
77+
78+
79+
#### Subnets
80+
81+
82+
##### Public subnets
83+
84+
* Application access
85+
* Bastion access
86+
* NAT gateways ?
87+
88+
89+
##### Private subnets
90+
91+
* Database
92+
* Admin
93+
94+
95+
### Compute
96+
97+
#### Nodes
98+
99+
* EC2 compute nodes
100+
* Application nodes
101+
* Database nodes
102+
* Bastion node
103+
* Auto-scaling groups
104+
105+
106+
#### Orchestration: Kubernetes
107+
108+
#### Pods
109+
110+
##### ReplicaSets
111+
112+
* Traefik
113+
* Application
114+
* Database
115+
* cert-manager
116+
* Metrics server
117+
* bastion
118+
119+
##### DaemonSets
120+
121+
* Any ?
122+
123+
124+
### Storage
125+
126+
#### CSI
127+
128+
##### EBS
129+
130+
* For persistent storage needs (application data, logs, and monitoring metrics) AWS Elastic Block Storage (EBS) is used to provide persistent block devices to stateful pods
131+
* To integrate EBS with Kubernetes, the Container Storage Interface is leveraged by using the `aws-ebs-csi-driver` cluster addon from EKS which registers EBS volumes as a backend for K8s Persistant Volumes.
132+
133+
134+
135+
## CI/CD
136+
137+
### GitHub Actions
138+
139+
140+
#### Actions
141+
142+
#### Workflows
143+
144+
* Application
145+
* Infrastructure
146+
147+
148+
## Observability
149+
150+
### Log management (ELK/EFK)
151+
152+
### Metrics (Prometheus/Grafana)
153+
154+
### Event and alerting
155+
156+
157+
## Business continuity & Disaster Recovery
158+
159+
### TODO Recap HA features
160+
161+
### Backup
162+
163+
### Disaster Recovery
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Architecture principles
2+
3+
4+
## Microservices
5+
6+
Each functionality of the application has been broken down into autonomous, independent and specialized services.
7+
Each microservice is responsible for a specific part of the application, making it easy to maintain, deploy and scale each component individually.
8+
9+
Microservices communicate with each other via REST APIs, enabling flexible and decentralized communication.
10+
This architecture allows the application to benefit from greater scalability, resilience and ease of deployment of new features.
11+
12+
## The Twelve-Factor app methodology
13+
14+
15+
## Well-architected frameworks and industry best practices
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Specifications

docs/project/requirements/user_stories.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- Each story should clearly state the 'who', 'what', and 'why' to articulate the needs of different system components or stakeholders (even hypothetical ones).
88
- -->
99

10+
1011
## Functional user stories
1112

1213
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.

0 commit comments

Comments
 (0)