Skip to content

Commit ad6f847

Browse files
committed
Updated Readme for version 3
1 parent 5543460 commit ad6f847

1 file changed

Lines changed: 93 additions & 115 deletions

File tree

README.md

Lines changed: 93 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -55,119 +55,93 @@ The goal was understanding **why production infrastructure is designed the way i
5555
- Built entirely using Terraform
5656
- Production-inspired AWS Networking
5757
- Infrastructure as Code
58-
- Kubernetes (k3s) based Deployments
58+
- Self-managed Multi-Node Kubernetes (k3s) Cluster
5959
- Docker Image Pipeline
6060
- GitHub Actions CI/CD
61-
- Auto Scaling Groups
62-
- External & Internal Load Balancers
63-
- Bastion Host
61+
- Dedicated Kubernetes Control Plane
62+
- Auto Scaling Worker Nodes
63+
- External Application Load Balancer
64+
- Kubernetes Ingress
6465
- Amazon RDS PostgreSQL
66+
- Redis StatefulSet
6567
- CloudWatch Monitoring
6668
- Remote Terraform State
6769
- Automated EC2 Bootstrapping using User Data
68-
- Kubernetes ConfigMaps
69-
- Kubernetes Deployments
70-
- Redis StatefulSet
70+
- SSM-based Cluster Join Automation
71+
- Separate Frontend & Backend Deployments
72+
- Namespace Isolation
7173
- Resource Requests & Limits
7274
- Liveness & Readiness Probes
73-
- Namespace Isolation
74-
- Multi Availability Zone deployment
7575

7676
---
7777

7878
# 🏗 Architecture
7979

8080
```
81-
Internet
82-
83-
84-
External Application Load Balancer
85-
86-
┌──────────────┴──────────────┐
87-
▼ ▼
88-
Frontend ASG Frontend ASG
89-
90-
k3s Cluster
91-
92-
Frontend Deployment
93-
94-
External Service
95-
96-
────────────────────────────────────────────
97-
98-
Internal Application Load Balancer
99-
100-
────────────────────────────────────────────
101-
102-
k3s Cluster
103-
104-
Backend Deployment
105-
106-
Redis StatefulSet
107-
108-
Amazon RDS PostgreSQL
81+
Internet
82+
83+
84+
External Application Load Balancer
85+
86+
87+
Kubernetes Ingress
88+
89+
90+
Multi-Node Kubernetes (k3s) Cluster
91+
92+
┌────────────┴────────────┐
93+
▼ ▼
94+
Frontend Deployment Backend Deployment
95+
│ │
96+
└───────────┬─────────────┘
97+
98+
Redis StatefulSet
99+
100+
101+
Amazon RDS PostgreSQL
109102
```
110103

111-
Every component is deployed inside a custom VPC distributed across multiple Availability Zones.
112-
113-
> **Current Version (v2.0):** Frontend and Backend are deployed in separate Kubernetes (k3s) clusters to preserve compatibility with the existing three-tier infrastructure. A future release will consolidate workloads into a single multi-node Kubernetes cluster before migrating to Amazon EKS.
114-
115-
---
116-
117104
# ☁ Infrastructure Components
118105

119106
| Service | Purpose |
120107
|----------|----------|
121108
| VPC | Network Isolation |
122-
| Public Subnets | Load Balancers & Bastion |
123-
| Frontend Subnets | Frontend Instances |
124-
| Backend Subnets | Backend Instances |
109+
| Public Subnets | Load Balancer & Bastion |
110+
| Application Subnets | Worker Nodes |
125111
| Database Subnets | PostgreSQL |
126112
| Internet Gateway | Public Connectivity |
127-
| NAT Gateway | Outbound Internet for Private Instances |
128-
| Route Tables | Traffic Routing |
113+
| NAT Gateway | Private Internet Access |
129114
| Security Groups | Network Security |
130-
| Bastion Host | Secure SSH Access |
131-
| Launch Templates | Instance Configuration |
132-
| Auto Scaling Groups | High Availability |
133-
| External ALB | Internet Traffic |
134-
| Internal ALB | Backend Communication |
135-
| Target Groups | Health Monitoring |
136-
| IAM Roles | Secure AWS Permissions |
137-
| CloudWatch | Monitoring |
138-
| RDS PostgreSQL | Persistent Database |
139-
| k3s | Kubernetes Distribution |
140-
| Kubernetes Deployments | Stateless Workloads |
141-
| StatefulSets | Persistent Workloads |
142-
| ConfigMaps | Runtime Configuration |
143-
| Services | Internal & External Networking |
115+
| Bastion Host | Secure SSH |
116+
| External ALB | Public Entry |
117+
| Control Plane | Kubernetes API |
118+
| Worker ASG | Kubernetes Workers |
119+
| IAM | Secure AWS Permissions |
120+
| SSM Parameter Store | Cluster Join Token |
121+
| RDS PostgreSQL | Database |
122+
| Redis | Cache |
123+
| Kubernetes | Orchestration |
124+
| Ingress | Traffic Routing |
125+
| ConfigMaps | Runtime Config |
144126

145127
---
146128

147129
# 🚀 Features
148130

149131
- Infrastructure as Code
150132
- Automated Infrastructure Provisioning
151-
- Kubernetes-based Application Deployment
133+
- Self-managed Kubernetes Cluster
134+
- Auto Scaling Workers
152135
- Docker Image Automation
153-
- Automated EC2 Bootstrapping
154-
- Auto Scaling
155-
- Internal Load Balancing
156-
- External Load Balancing
157-
- Bastion Host
158-
- Private Networking
159-
- PostgreSQL Database
160-
- Kubernetes ConfigMaps
161-
- Kubernetes Deployments
136+
- GitHub Actions CI/CD
137+
- Kubernetes Ingress
138+
- Frontend & Backend Deployments
162139
- Redis StatefulSet
140+
- PostgreSQL
141+
- ConfigMaps
163142
- Namespace Isolation
164-
- Resource Requests & Limits
165-
- Health Checks (Readiness & Liveness)
166-
- GitHub Actions Pipelines
167-
- Remote Terraform Backend
143+
- Health Checks
168144
- CloudWatch Monitoring
169-
- Production-inspired Folder Structure
170-
- Infrastructure Automation
171145

172146
---
173147

@@ -179,12 +153,11 @@ Every component is deployed inside a custom VPC distributed across multiple Avai
179153
| IaC | Terraform |
180154
| Programming | Python |
181155
| Containers | Docker |
182-
| Container Orchestration | Kubernetes (k3s) |
156+
| Orchestration | Kubernetes (k3s) |
183157
| CI/CD | GitHub Actions |
184-
| Database | PostgreSQL & Redis |
185-
| Networking | VPC, ALB, NAT Gateway |
158+
| Database | PostgreSQL, Redis |
159+
| Networking | VPC, ALB, Ingress |
186160
| Monitoring | CloudWatch |
187-
| Version Control | Git & GitHub |
188161

189162
---
190163

@@ -203,24 +176,31 @@ aws-three-tier-architecture/
203176
│ ├── lessons_learned.md
204177
│ └── roadmap.md
205178
206-
├── kubernetes/
207-
│ ├── namespace.yaml
208-
│ ├── configmaps.yaml
209-
│ ├── deployment.yaml
210-
│ ├── service.yaml
211-
│ └── statefulset.yaml
179+
├── Backend/
180+
├── app.py
181+
├── requirement.txt
182+
└── Dockerfile
183+
184+
├── Frontend/
185+
├── app.py
186+
├── requirement.txt
187+
└── Dockerfile
188+
189+
190+
├── kubernetes-files/
191+
│ ├── base/
192+
│ ├── backend/
193+
│ ├── frontend/
194+
│ ├── redis/
195+
│ └── ingress.yaml
212196
213197
├── images/
214198
│ └── architecture.png
215199
216200
├── terraform_infra/
217201
│ └── scripts/
218202
219-
├── Dockerfile
220-
221-
├── app.py
222-
223-
├── requirements.txt
203+
├── docker-compose.yml
224204
225205
├── README.md
226206
@@ -232,41 +212,39 @@ aws-three-tier-architecture/
232212
# 🚧 Roadmap
233213

234214
## ✅ Version 1
235-
236-
- Terraform Infrastructure
237-
- Docker Deployment
215+
- Terraform
216+
- Docker
238217
- GitHub Actions
239-
- Auto Scaling
240-
- Load Balancers
218+
- ALB
241219
- RDS
242-
- CloudWatch
243220

244221
## ✅ Version 2
245-
246-
- Kubernetes (k3s)
247-
- Deployments
222+
- Kubernetes
248223
- StatefulSets
249224
- ConfigMaps
250225
- Namespace
251-
- Resource Limits
252226
- Health Probes
253-
- Automated Kubernetes Bootstrap
254-
255-
## 🔄 Version 2.1
256227

257-
- Secrets
228+
## ✅ Version 2.1
258229
- Ingress
259-
- Better Networking
260230

261-
## 🚀 Future Versions
231+
## ✅ Version 3
232+
- Single Multi-node Cluster
233+
- Control Plane
234+
- Worker ASG
235+
- SSM Cluster Join
236+
- Separate Frontend & Backend
237+
- Internal Service Discovery
262238

263-
- Single Multi-Node Kubernetes Cluster
239+
## 🚀 Future
264240
- Prometheus
265241
- Grafana
266-
- Amazon EKS Migration
267-
- GitOps (ArgoCD)
268-
- Horizontal Pod Autoscaler
269-
- Production Observability
242+
- EKS
243+
- ArgoCD
244+
- HPA
245+
- Metrics Server
246+
- Cluster Autoscaler
247+
- Centralized Logging
270248

271249
---
272250

@@ -282,7 +260,7 @@ aws-three-tier-architecture/
282260

283261
## 🤝 Acknowledgements
284262

285-
The initial three-tier AWS architecture was inspired by publicly available cloud architecture tutorials. This repository represents my own implementation, debugging process, infrastructure decisions, Kubernetes integration, and continuous evolution into a production-oriented platform.
263+
The initial AWS architecture was inspired by publicly available cloud architecture tutorials. The Kubernetes architecture, automation, debugging, design decisions and production evolution represent my own implementation.
286264

287265
---
288266

0 commit comments

Comments
 (0)