Skip to content

Commit 29d0527

Browse files
committed
WIP: requirements
1 parent cd89fbe commit 29d0527

File tree

5 files changed

+416
-0
lines changed

5 files changed

+416
-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

0 commit comments

Comments
 (0)