Introduction to Infrastructure
作者:Trần Quốc Huy

1. Introduction
1.1. Vấn đề: Làm sao triển khai hệ thống phân tán ổn định, dễ mở rộng?
1.1.1. Starting Example: Triển khai app đơn lẻ → thủ công, không mở rộng
1.1.2. khám phá chuỗi công nghệ và khái niệm giúp đưa một hệ thống phân tán từ dòng code... thành một sản phẩm chạy thực sự trong môi trường PRODUCTION
1.1.3. Bắt đầu từ máy ảo, đến container, đến cả orchestration!
2. Virtualization
2.1. Khái niệm: Tạo máy ảo chạy nhiều OS trên 1 máy vật lý
2.2. Loại hypervisor:
2.2.1. Type 1: Chạy trực tiếp trên phần cứng (ESXi)
2.2.2. Type 2: Chạy trên OS (VirtualBox)
2.3. Ưu điểm: phân lập, tận dụng tài nguyên
3. Virtualization Solutions
3.1. VMware, VirtualBox
3.2. loud-based: AWS EC2, Google Compute Engine
4. Virtualization Limitations
4.1. Khởi động chậm
4.2. Ngốn RAM/CPU do chạy full OS
4.3. Không tối ưu cho microservice & scale
5. Infrastructure as Code (IaC)
5.1. Khái niệm: Định nghĩa hạ tầng bằng code (YAML, HCL)
5.2. Lợi ích: Tự động hóa, versioning, audit dễ dàng
6. IaC Solutions
6.1. Terraform (đa nền tảng)
6.2. AWS CloudFormation
6.3. Pulumi (IaC bằng TypeScript, Go…)
7. IaC Limitations
7.1. Cần CI/CD tốt
7.2. Dễ mắc lỗi syntax hoặc logic
7.3. Debug lỗi hạ tầng phức tạp
8. Containerization
8.1. Khái niệm: Đóng gói app + dependency thành container
8.2. Ưu điểm: nhẹ, khởi động nhanh, nhất quán giữa môi trường
8.3. Containerization Solutions
8.3.1. Docker
8.3.2. Podman
8.3.3. containerd
9. Containerization Limitations
9.1. Quản lý phức tạp khi nhiều container
9.2. hiếu tự động scale, recover, networking
10. Container Orchestration
10.1. Khái niệm: Tự động quản lý container
10.2. Thành phần chính:
10.2.1. Cluster
10.2.2. Node
10.2.3. Pod
10.2.4. Service
10.2.5. ConfigMap/Secrets
11. Container Orchestration Solutions
11.1. Kubernetes (K8s)
11.2. AWS ECS / EKS
11.3. Google GKE
11.4. Docker Swarm (nhẹ)
12. Conclusion
12.1. Lộ trình triển khai hạ tầng:
12.1.1. Thủ công → VM → IaC → Container → Orchestration
12.1.2. Mỗi bước giải quyết bài toán cụ thể
12.1.3. Nắm vững để chọn công cụ phù hợp với nhu cầu hệ thống