Lộ trình DevOps Cơ Bản

Tự do Công nghệ & Kỹ thuật Hỗn loạn

🚀 Triết lý Cập nhật

Chương trình này được nâng cấp để không chỉ xây dựng nền tảng mà còn thúc đẩy sự tự do sáng tạokhả năng chống chịu của hệ thống. Chúng tôi trao quyền cho học viên lựa chọn công nghệ IaC phù hợp với kỹ năng lập trình của họ và bổ sung tuần thứ ba tập trung vào đánh giá ngang hàng (peer review) và thực hành Kỹ thuật Hỗn loạn (Chaos Engineering), giúp xây dựng các hệ thống có khả năng phục hồi sau sự cố.

Ba Trụ cột Mới của Lộ trình

1. Nền tảng Vững chắc

Nắm vững Linux, Mạng, Lưu trữ, Container và đặc biệt là Giám sát & Quan sát (Monitoring & Observability).

2. Tự do Công nghệ

Tự do lựa chọn công cụ IaC (Terraform, Pulumi, AWS CDK) để tận dụng kỹ năng lập trình sẵn có.

3. Kỹ thuật Hỗn loạn

Chủ động phá vỡ hệ thống một cách có kiểm soát để học cách xây dựng ứng dụng có khả năng phục hồi.

📚 Tuần 1: Nền Tảng Vững Chắc (Chi tiết)

Ngày 1: Làm chủ Giao diện Dòng lệnh (CLI) & Hệ điều hành Linux

Trọng tâm:

Mục tiêu không phải là học thuộc lòng tất cả các lệnh Linux, mà là nắm vững các lệnh thiết yếu cho việc chẩn đoán và vận hành ứng dụng. Lập trình viên không cần trở thành một quản trị viên hệ thống (SysAdmin), nhưng họ cần có khả năng "khám bệnh" cho ứng dụng của mình khi nó đang chạy trên một máy chủ Linux.

1. Cấu trúc Thư mục Linux (Filesystem Hierarchy Standard)

Trước khi học lệnh, điều quan trọng là phải hiểu "bản đồ" của hệ thống Linux. Hầu hết các bản phân phối Linux tuân theo một cấu trúc thư mục chuẩn:

  • /bin & /sbin: Chứa các file thực thi (lệnh) thiết yếu của hệ thống.
  • /etc: Chứa các file cấu hình cho toàn bộ hệ thống (ví dụ: cấu hình nginx).
  • /home: Chứa thư mục riêng của từng người dùng.
  • /var: Chứa các file dữ liệu biến đổi, quan trọng nhất là /var/log (chứa các file log).
  • /tmp: Chứa các file tạm thời, sẽ bị xóa khi khởi động lại.
2. Các lệnh Linux thiết yếu cho DevOps
Chức năng Lệnh Mô tả
Quản lý File & Thư mục ls, cd, pwd, cp, mv, rm, find Liệt kê, thay đổi, sao chép, di chuyển, xóa và tìm kiếm file/thư mục.
Xử lý Văn bản & Logs cat, less, tail -f, grep, awk Xem, theo dõi, tìm kiếm, lọc và trích xuất thông tin từ văn bản/log.
Quản lý Tiến trình ps aux, top, htop, kill Xem, giám sát và chấm dứt các tiến trình đang chạy.
Mạng ping, curl, ss -tuln, nslookup Kiểm tra kết nối, tải dữ liệu, hiển thị port đang lắng nghe, phân giải DNS.
Hệ thống df -h, du -sh, free -m Kiểm tra dung lượng đĩa, dung lượng thư mục, và bộ nhớ RAM.
Quyền chmod, chown, sudo Thay đổi quyền, chủ sở hữu, và thực thi lệnh với quyền quản trị.
3. Mục tiêu thực hành

Bài tập: Thao tác với hệ thống file

  1. Tạo một thư mục tên là devops_practice trong thư mục /tmp.
  2. Bên trong thư mục đó, tạo một file tên là app.log.
  3. Ghi dòng chữ "Application started successfully" vào file app.log.
  4. Kiểm tra quyền của file app.log.
  5. Tạo một script tên là cleanup.sh có nội dung xóa thư mục devops_practice.
  6. Cấp quyền thực thi cho file cleanup.sh và chạy nó để dọn dẹp.
4. Biến Môi Trường (Environment Variables)

Biến môi trường dùng để lưu cấu hình, đường dẫn và thông tin quan trọng của ứng dụng, giúp tách biệt cấu hình khỏi mã nguồn.

  • printenv — Hiển thị tất cả biến môi trường.
  • echo $PATH — Xem giá trị của biến cụ thể.
  • export APP_ENV=production — Tạo biến môi trường tạm thời trong shell hiện tại.
5. Quản Lý Dịch Vụ (systemd & service)

Các dịch vụ nền như nginx, mysql, hay docker được quản lý bởi systemd.

  • sudo systemctl status nginx — Kiểm tra trạng thái dịch vụ.
  • sudo systemctl restart nginx — Khởi động lại dịch vụ.
  • systemctl list-units --type=service --state=running — Liệt kê các dịch vụ đang chạy.
6. Nén & Giải Nén File

Khi làm việc với log hoặc backup, bạn cần biết cách nén dữ liệu để tiết kiệm dung lượng:

  • tar -czvf backup.tar.gz /var/log — Nén thư mục thành file .tar.gz.
  • tar -xzvf backup.tar.gz — Giải nén file .tar.gz.
  • gzip app.log / gunzip app.log.gz — Nén hoặc giải nén file đơn lẻ.
7. SSH & Làm Việc Với Remote Server

SSH cho phép kết nối và điều khiển máy chủ từ xa — một kỹ năng cơ bản cho bất kỳ DevOps nào.

  • ssh user@203.0.113.10 — Kết nối tới server từ xa.
  • scp file.txt user@203.0.113.10:/tmp/ — Sao chép file từ local lên server.
  • ssh user@203.0.113.10 "ls -l /var/www" — Chạy lệnh trực tiếp trên server từ xa.
8. Bài Tập Mở Rộng

Bài tập: Mở rộng thao tác CLI

  1. Tạo biến môi trường APP_MODE=development và in ra giá trị của nó.
  2. Nén file app.log thành app.log.gz và so sánh dung lượng trước/sau.
  3. Khởi động lại dịch vụ nginx (nếu có) và xem log trong /var/log/nginx/error.log.
  4. Sử dụng scp để gửi file app.log.gz sang thư mục /tmp/ của máy chủ từ xa.

Ngày 2: Giải mã Mạng (Networking)

1. Các khái niệm Mạng nền tảng

Để hiểu mạng trên đám mây, trước tiên chúng ta cần nắm vững các khái niệm nền tảng. Đây là những khối xây dựng cơ bản cho mọi hệ thống mạng hiện đại.

Địa chỉ IP (Internet Protocol)

Là một địa chỉ logic, duy nhất được gán cho mỗi thiết bị tham gia vào mạng máy tính. Nó có hai chức năng chính: định danh (cho biết thiết bị đó là ai) và định vị (cho biết thiết bị đó ở đâu trên mạng).

  • Public IP: Là địa chỉ có thể được truy cập trực tiếp từ Internet. Mỗi địa chỉ Public IP là duy nhất trên toàn cầu.
  • Private IP: Là địa chỉ chỉ được sử dụng trong một mạng nội bộ (LAN, VPC). Các dải IP này không thể được định tuyến trên Internet và có thể được tái sử dụng ở các mạng khác nhau.
    • Lớp A: `10.0.0.0` - `10.255.255.255`
    • Lớp B: `172.16.0.0` - `172.31.255.255`
    • Lớp C: `192.168.0.0` - `192.168.255.255`
DHCP (Dynamic Host Configuration Protocol)

Là một giao thức quản lý mạng được sử dụng để tự động cấp phát địa chỉ IP và các thông tin cấu hình mạng khác (như Subnet Mask, Default Gateway, DNS Server) cho các thiết bị. Thay vì phải cấu hình thủ công cho từng máy, DHCP Server sẽ quản lý và cấp phát một cách tự động, giúp tránh xung đột IP và đơn giản hóa việc quản trị.

Switching (Chuyển mạch) - Giao tiếp trong cùng một mạng (Layer 2)

Là quá trình chuyển tiếp các gói tin giữa các thiết bị trong cùng một mạng cục bộ (LAN) hoặc cùng một Subnet trên đám mây. Switch sử dụng địa chỉ MAC (địa chỉ vật lý) để xác định chính xác thiết bị cần gửi đến, đảm bảo gói tin chỉ đến đúng người nhận thay vì gửi cho tất cả mọi người.

Mạng LAN/Subnet: 192.168.1.0/24
💻
1.10
💻
1.20
SWITCH
💻
1.30
💻
1.40

Mô tả: Máy 1.10 muốn gửi dữ liệu cho 1.30. Gói tin đi đến Switch, Switch đọc địa chỉ MAC đích và chuyển thẳng đến cổng kết nối với máy 1.30.

Routing (Định tuyến) - Giao tiếp giữa các mạng khác nhau (Layer 3)

Là quá trình tìm đường đi và chuyển tiếp các gói tin giữa các mạng khác nhau. Router sử dụng địa chỉ IP để quyết định đường đi tốt nhất cho gói tin. Trên đám mây, VPC Route Table đóng vai trò của Router, chứa các quy tắc để định tuyến traffic (ví dụ: traffic đến `0.0.0.0/0` sẽ được gửi đến Internet Gateway).

Mạng A: 192.168.1.0/24
Mạng B: 10.10.0.0/24
Switch A
Switch B
ROUTER

Mô tả: Máy tính ở Mạng A muốn nói chuyện với máy tính ở Mạng B. Gói tin phải đi qua Router để được định tuyến sang đúng mạng đích.

NAT (Network Address Translation)

Là kỹ thuật cho phép nhiều thiết bị trong một mạng riêng (sử dụng dải IP private) có thể giao tiếp với Internet thông qua một hoặc một vài địa chỉ IP công khai (public). NAT "dịch" địa chỉ IP private của gói tin đi ra thành địa chỉ IP public và làm ngược lại với gói tin trả về. Trên đám mây, NAT Gateway là một dịch vụ quản lý thực hiện chức năng này, giúp các máy chủ trong private subnet có thể kết nối ra ngoài nhưng vẫn được bảo vệ.

Firewall (Tường lửa)

Là một hệ thống an ninh mạng, hoạt động như một rào cản giữa một mạng an toàn (ví dụ: mạng nội bộ) và một mạng không an toàn (ví dụ: Internet). Nó giám sát và kiểm soát lưu lượng mạng ra vào dựa trên một bộ quy tắc bảo mật đã được định nghĩa trước.

🌐
Internet
FIREWALL
Rules: Allow Port 443
💻
Private Network

Định hướng Rules:

  • Inbound (Đi vào): Các quy tắc áp dụng cho traffic đi từ bên ngoài vào mạng/máy chủ. Ví dụ: Cho phép traffic từ Internet vào cổng 443 (HTTPS).
  • Outbound (Đi ra): Các quy tắc áp dụng cho traffic đi từ bên trong mạng/máy chủ ra ngoài. Ví dụ: Cho phép máy chủ kết nối ra ngoài đến mọi địa chỉ trên cổng 443 để cập nhật phần mềm.
Network ACL (Access Control List)

Là một lớp tường lửa tùy chọn cho VPC, hoạt động ở cấp độ Subnet. Nó hoạt động như một bộ lọc cho traffic đi ra và đi vào một hoặc nhiều subnet. NACL là stateless (không trạng thái), có nghĩa là các gói tin trả về cũng phải được cho phép một cách tường minh trong các quy tắc.

VPC
NACL
Subnet
💻 💻
Load Balancing (Cân bằng tải)

Là quá trình phân phối đều lưu lượng mạng hoặc ứng dụng đến một nhóm các máy chủ ở phía sau (backend pool). Load Balancer hoạt động như một "cảnh sát giao thông", đảm bảo không có máy chủ nào bị quá tải, giúp tăng độ tin cậy và tính sẵn sàng của ứng dụng.

🌐
Traffic
LOAD BALANCER
💻
Server 1
💻
Server 2
💻
Server 3
VPN & Direct Access

Đây là các giải pháp để tạo kết nối riêng tư và an toàn giữa mạng tại chỗ (on-premises) và môi trường đám mây:

  • VPN (Virtual Private Network): Tạo một "đường hầm" được mã hóa qua Internet công cộng. Đây là giải pháp linh hoạt, chi phí thấp để kết nối an toàn.
  • Direct Access (ví dụ: AWS Direct Connect): Tạo một kết nối mạng vật lý, riêng biệt, chuyên dụng giữa trung tâm dữ liệu của bạn và đám mây. Giải pháp này cung cấp băng thông cao, độ trễ thấp và ổn định hơn so với VPN.
2. Sơ đồ Luồng truy cập Web điển hình
Người dùng
CDN
DNS
Load Balancer
Web Server (EC2)
3. Mục tiêu thực hành

Bài tập: Thiết kế Security Group

Cho một kiến trúc gồm 1 Web Server và 1 Database Server. Hãy thiết kế 2 Security Group (một cho web, một cho db) với các quy tắc (rules) sau:
1. Web SG: Cho phép traffic HTTP/HTTPS từ mọi nơi. Cho phép traffic SSH chỉ từ IP của bạn.
2. DB SG: Chỉ cho phép traffic trên cổng 5432 (PostgreSQL) từ Web SG.

4. Công cụ chẩn đoán mạng thực tế

Khi làm việc với các hệ thống trên cloud hoặc máy chủ, khả năng "bắt mạch" vấn đề mạng là kỹ năng thiết yếu. Dưới đây là các công cụ và lệnh phổ biến giúp bạn kiểm tra, theo dõi và gỡ lỗi kết nối mạng:

Công cụ Cú pháp Chức năng
ping ping google.com Kiểm tra kết nối đến một địa chỉ IP hoặc tên miền (ICMP).
curl curl -I https://example.com Gửi yêu cầu HTTP để kiểm tra phản hồi từ server.
traceroute traceroute 8.8.8.8 Theo dõi đường đi của gói tin qua các router trung gian.
netstat / ss ss -tuln Liệt kê các cổng đang mở và dịch vụ đang lắng nghe.
nslookup nslookup example.com Kiểm tra bản ghi DNS và tên miền.
5. Khái niệm nâng cao trong mạng đám mây
  • Subnet Public & Private: Subnet Public có route đến Internet Gateway, còn Subnet Private thì không (chỉ đi qua NAT Gateway).
  • VPC Peering: Kết nối trực tiếp giữa hai VPC, cho phép các máy chủ giao tiếp với nhau bằng IP nội bộ mà không cần qua Internet.
  • Transit Gateway: Dịch vụ giúp kết nối nhiều VPC, VPN, hoặc mạng on-premises lại với nhau theo mô hình trung tâm.
  • Elastic IP: Là một địa chỉ IP tĩnh công khai có thể gán cho EC2 hoặc NAT Gateway — giúp giữ nguyên IP khi khởi động lại máy chủ.
  • Security Group vs Network ACL:
    • Security Group: Hoạt động ở cấp độ Instance, có trạng thái (stateful).
    • Network ACL: Hoạt động ở cấp độ Subnet, không có trạng thái (stateless).
6. Bài tập mở rộng

Bài tập: Phân tích kết nối mạng

  1. Sử dụng lệnh ping để kiểm tra xem máy của bạn có thể truy cập đến 8.8.8.8 (Google DNS) hay không.
  2. Dùng traceroute google.com để xem dữ liệu đi qua bao nhiêu router trung gian.
  3. Dùng curl để kiểm tra phản hồi HTTP từ một website bất kỳ và xác định mã trạng thái (200, 403, 404,...).
  4. Liệt kê các port đang mở trên hệ thống bằng ss -tuln hoặc netstat -tuln.
  5. Kiểm tra bản ghi DNS của một domain bằng nslookup hoặc dig.
7. Thực tế: Mạng nội bộ & Internet trong Cloud

Kịch bản mô phỏng:

Bạn có 2 EC2 trong cùng một VPC:

  • EC2-A: Thuộc Public Subnet, có Public IP.
  • EC2-B: Thuộc Private Subnet, chỉ có Private IP.

Thử thực hiện:

  1. Từ laptop của bạn, SSH vào EC2-A.
  2. Từ EC2-A, SSH vào EC2-B qua Private IP.
  3. Giải thích tại sao bạn không thể SSH trực tiếp vào EC2-B từ Internet.

Ngày 3: Giải mã Lưu trữ (Storage)

Trọng tâm:

Hiểu rằng không có một loại lưu trữ nào là "tốt nhất" cho mọi trường hợp. Việc lựa chọn đúng loại hình lưu trữ (Block, Object, hay File) cho từng thành phần của ứng dụng là chìa khóa để tối ưu hiệu năng và chi phí.

1. Các loại hình lưu trữ chính
Block Storage (Lưu trữ khối)

Khái niệm: Dữ liệu được chia thành các khối (block) có kích thước cố định, được quản lý bởi hệ điều hành. Nó hoạt động như một ổ đĩa thô (raw disk) được gắn vào máy chủ.

Tương tự như: Ổ cứng vật lý (SSD/HDD) trong máy tính của bạn.

Đặc điểm: Độ trễ rất thấp, hiệu năng I/O (IOPS) cao, phù hợp cho các tác vụ cần truy xuất dữ liệu nhanh và thường xuyên thay đổi.

Trường hợp sử dụng: Cài đặt hệ điều hành, cơ sở dữ liệu (PostgreSQL, MySQL, Oracle), các ứng dụng yêu cầu hiệu năng cao.

Object Storage (Lưu trữ đối tượng)

Khái niệm: Dữ liệu được lưu trữ dưới dạng các đối tượng (object), mỗi đối tượng gồm dữ liệu, metadata và một mã định danh duy nhất. Nó không có cấu trúc thư mục phân cấp.

Tương tự như: Một kho chứa file khổng lồ, không giới hạn trên Internet (như Google Drive/Dropbox nhưng ở quy mô lớn hơn).

Đặc điểm: Khả năng mở rộng gần như vô hạn, độ bền dữ liệu cực cao, chi phí lưu trữ rẻ. Truy cập thông qua API (HTTP/HTTPS).

Trường hợp sử dụng: Lưu trữ file tĩnh cho website (ảnh, video, CSS, JS), backup, logs, build artifacts, và data lake.

File Storage (Lưu trữ file)

Khái niệm: Cung cấp một hệ thống file có thể được truy cập và chia sẻ bởi nhiều máy chủ cùng một lúc thông qua mạng.

Tương tự như: Một ổ đĩa mạng chia sẻ (Network Drive) trong công ty.

Đặc điểm: Hỗ trợ các giao thức mạng tiêu chuẩn như NFS (cho Linux) và SMB (cho Windows), cho phép nhiều client cùng đọc/ghi.

Trường hợp sử dụng: Các ứng dụng cần một không gian lưu trữ chung như máy chủ web chia sẻ nội dung, hệ thống quản lý nội dung (CMS), thư mục home của người dùng.

2. So sánh dịch vụ lưu trữ: Cloud vs. On-Premise
Loại hình AWS Azure GCP On-Premise phổ biến
Block EBS (Elastic Block Store) Azure Disk Storage Persistent Disk SAN (Storage Area Network)
Object S3 (Simple Storage Service) Azure Blob Storage Cloud Storage MinIO, Ceph Object Gateway
File EFS (Elastic File System) Azure Files Filestore NAS (Network Attached Storage)
Phần 2: Giám sát & Quan sát (Monitoring & Observability)

Trọng tâm:

Chuyển từ tư duy "hệ thống chạy là được" sang "tôi có hiểu tại sao hệ thống đang chạy (hoặc không chạy) hay không?". Giám sát giúp bạn biết khi nào có sự cố, còn Quan sát giúp bạn hiểu tại sao có sự cố.

2.1. Giám sát Hạ tầng (Infrastructure Monitoring)

Giám sát hạ tầng là nền móng của mọi hệ thống quan sát hiện đại. Mục tiêu không chỉ là biết một server còn “sống”, mà phải có cái nhìn toàn cảnh về sức khỏe, hiệu năng, tính sẵn sàng của toàn bộ hệ thống: máy chủ vật lý, cloud VM, container, network, storage, load balancer...
Việc monitor kỹ lưỡng các chỉ số này giúp phát hiện sớm sự cố, chủ động mở rộng/tối ưu, đảm bảo dịch vụ luôn ổn định và an toàn.

Các chỉ số quan trọng cần giám sát toàn hệ thống:

Bảng tổng hợp chỉ số Infrastructure Monitoring
Nhóm chỉ số Mục tiêu giám sát Ý nghĩa & ứng dụng
CPU CPU Usage (%), Load Average, Steal Time Phát hiện quá tải, bottleneck xử lý, phát hiện tiến trình bất thường hoặc thiếu tài nguyên vật lý (VM/cloud).
Memory (RAM) Usage, Free, Swap, Cache Phát hiện rò rỉ bộ nhớ (memory leak), nguy cơ crash, ứng dụng bị kill do OOM.
Disk / Storage Disk Usage, Free Space, IOPS, Throughput, Latency, SMART Health Cảnh báo sắp đầy, phát hiện bottleneck đọc/ghi, phát hiện ổ đĩa sắp lỗi hoặc degraded.
Network Bandwidth In/Out, Packet Loss, Errors, Connection count, Latency Phát hiện nghẽn mạng, downtime, lỗi vật lý, tấn công (DDoS) hoặc sự cố hạ tầng cloud.
Process & Service Health Process Uptime, Restart Count, Health Check Theo dõi tiến trình quan trọng (db, web server...), phát hiện service crash hoặc restart bất thường.
Cloud Resource & Quota CPU credits, Resource Quota, Scaling Events Giám sát các ngưỡng quota, phát hiện tự động scale (hoặc không scale kịp) trong môi trường cloud.
Container/Kubernetes Node/Pod Status, Resource Usage, Restart Count Theo dõi toàn trạng thái cluster, pod bị out-of-memory, node mất kết nối, cân bằng tài nguyên container.
Load Balancer & Uptime Health Checks, Active Connections, Error Rate Giám sát gateway vào hệ thống, phát hiện downtime/cân bằng tải bất thường, đảm bảo uptime dịch vụ đầu cuối.

Lưu ý: Nên cấu hình alert tự động theo từng ngưỡng hợp lý. Cần có dashboard tổng hợp để mọi thành viên (DevOps, vận hành, phát triển, quản lý) đều có thể nhìn thấy tình trạng hệ thống ngay khi cần.

Bảng so sánh công cụ Giám sát Hạ tầng
Công cụ Mô hình Điểm mạnh Điểm yếu
Prometheus + Grafana Mã nguồn mở Rất linh hoạt: Có thể giám sát mọi thứ từ server vật lý đến Kubernetes.
Mô hình Pull: Chủ động lấy metrics từ các target.
Hệ sinh thái lớn: Rất nhiều exporter có sẵn.
Phải tự cài đặt, quản lý và lưu trữ dữ liệu. Không có giải pháp logging tích hợp sẵn.
Zabbix Mã nguồn mở Tất-cả-trong-một: Cung cấp giám sát, cảnh báo, dashboard trong một sản phẩm.
Mạnh về giám sát mạng: Rất tốt cho các thiết bị mạng truyền thống.
Giao diện người dùng hơi cũ. Khó mở rộng và ít linh hoạt trong môi trường cloud-native so với Prometheus.
Dịch vụ Cloud (CloudWatch, Azure Monitor, GCP Monitoring) Dịch vụ quản lý Tích hợp sâu: Tự động thu thập metrics từ các dịch vụ cloud khác.
Dễ sử dụng: Không cần cài đặt, dễ dàng thiết lập cảnh báo.
Vendor Lock-in: Khó giám sát các hệ thống ở cloud khác hoặc on-premise.
Chi phí: Có thể trở nên đắt đỏ ở quy mô lớn.
2.2. Giám sát Dịch vụ (Service Monitoring)

Theo dõi trạng thái và hiệu năng của các dịch vụ đang chạy, tập trung vào trải nghiệm của người dùng cuối. Mục tiêu là trả lời câu hỏi: "Dịch vụ của tôi có đang hoạt động đúng như mong đợi không?".

Các chỉ số giám sát dịch vụ quan trọng
Loại Dịch vụ Các chỉ số quan trọng (Golden Signals) Mục tiêu / Ý nghĩa
Web / API Servers Latency (Độ trễ) Thời gian phản hồi của request (p95, p99). Giúp đo lường trải nghiệm người dùng.
Traffic (Lưu lượng) Số lượng request mỗi giây (RPS). Cho thấy mức độ bận rộn của hệ thống.
Error Rate (Tỷ lệ lỗi) Tỷ lệ các lỗi HTTP 4xx và 5xx. Giúp phát hiện các vấn đề về code hoặc hạ tầng.
Saturation (Độ bão hòa) Mức độ "bận rộn" của dịch vụ (ví dụ: số lượng kết nối đang hoạt động).
Databases Query Latency Thời gian thực thi các truy vấn. Giúp phát hiện các truy vấn chậm.
Connections Số lượng kết nối đang hoạt động. Giúp phát hiện nguy cơ cạn kiệt kết nối.
Replication Lag Độ trễ giữa database chính và các bản sao. Quan trọng cho tính toàn vẹn dữ liệu.
2.3. Giám sát Hiệu năng Ứng dụng (APM)

APM là việc sử dụng các công cụ để "nhìn sâu" vào bên trong mã nguồn của ứng dụng khi nó đang chạy. Hãy tưởng tượng nó như một "debugger trong môi trường production". Thay vì chỉ biết ứng dụng bị lỗi (từ logs) hoặc chạy chậm (từ metrics), APM cho phép bạn:
Truy vết giao dịch (Transaction Tracing): Theo dõi hành trình của một request từ đầu đến cuối, qua nhiều service khác nhau, xem chính xác thời gian bị tiêu tốn ở đâu (ví dụ: trong hàm A, trong câu query B).
Phân tích hiệu năng: Tìm ra các "nút thắt cổ chai" như các câu truy vấn database chậm, các lời gọi API bên ngoài tốn thời gian.
Phát hiện lỗi chi tiết: Cung cấp đầy đủ thông tin ngữ cảnh (stack trace, giá trị biến) khi một lỗi xảy ra, giúp dev sửa lỗi nhanh hơn rất nhiều.

Bảng so sánh công cụ APM & Theo dõi lỗi
Công cụ Tập trung chính Điểm mạnh Điểm yếu
Datadog Nền tảng quan sát hợp nhất Cung cấp giải pháp tất-cả-trong-một (logs, metrics, traces), giao diện đẹp, mạnh mẽ. Chi phí rất cao.
New Relic APM Rất mạnh về phân tích hiệu năng ứng dụng, transaction tracing chi tiết. Chi phí cao, giao diện có thể hơi phức tạp.
Sentry Theo dõi lỗi (Error Tracking) Rất xuất sắc trong việc bắt, nhóm và cung cấp ngữ cảnh cho các lỗi trong code. Có gói miễn phí tốt. Không phải là một giải pháp APM đầy đủ, yếu hơn về tracing.
2.4. Quản lý Log (Log Management)

Là quá trình thu thập, tập trung hóa, phân tích và lưu trữ các file log từ tất cả các thành phần trong hệ thống (ứng dụng, máy chủ, database...). Một hệ thống quản lý log tốt giúp bạn dễ dàng tìm kiếm và chẩn đoán sự cố khi chúng xảy ra.

Bảng so sánh công cụ Quản lý Log
Công cụ Mô hình Điểm mạnh Điểm yếu
ELK Stack Mã nguồn mở Rất mạnh mẽ và linh hoạt, tìm kiếm toàn văn bản xuất sắc. Phức tạp để cài đặt và vận hành, tốn nhiều tài nguyên.
Grafana Loki Mã nguồn mở Được thiết kế để tiết kiệm chi phí và dễ vận hành, tích hợp tốt với Prometheus. Khả năng tìm kiếm không mạnh bằng Elasticsearch.
Dịch vụ Cloud (CloudWatch Logs, Azure Monitor Logs, GCP Logging) Dịch vụ quản lý Tích hợp sâu với hệ sinh thái cloud, dễ sử dụng, không cần quản lý hạ tầng. Chi phí có thể cao, khó tập trung log từ nhiều nguồn khác nhau.
Datadog/Splunk Dịch vụ (SaaS) Dễ sử dụng, nhiều tính năng thông minh, phân tích mạnh mẽ. Chi phí rất cao.
2.5. Tổng kết: Các lớp Giám sát

Một hệ thống giám sát hoàn chỉnh bao gồm nhiều lớp, từ cơ bản đến nâng cao.

  • Tối thiểu cần có: Giám sát hạ tầng (CPU, RAM, Disk) và giám sát uptime của các dịch vụ chính.
  • Lý tưởng: Thu thập metrics từ cả hạ tầng và dịch vụ, tập trung hóa log, và sử dụng APM cho các thành phần quan trọng nhất.
  • Toàn diện (Observability): Kết hợp cả 3 trụ cột (Metrics, Logs, Traces) để có một cái nhìn sâu sắc và toàn diện về hệ thống, cho phép bạn đặt bất kỳ câu hỏi nào và tìm ra câu trả lời.
Mục tiêu thực hành:

Bài tập: Thiết kế Kiến trúc Lưu trữ & Giám sát

Cho một ứng dụng thương mại điện tử có các thành phần sau: một cụm máy chủ web, một cơ sở dữ liệu sản phẩm, một hệ thống lưu trữ ảnh sản phẩm, và một hệ thống lưu trữ log giao dịch. Hãy:
1. Đề xuất loại hình lưu trữ (Block, Object, File) cho từng thành phần và giải thích lý do.
2. Với mỗi thành phần, hãy đề xuất ít nhất 2 chỉ số quan trọng cần được giám sát (ví dụ: với DB, cần giám sát CPU và số lượng kết nối).

3. Mục tiêu thực hành:

Bài tập: Thiết kế kiến trúc lưu trữ

Cho một ứng dụng thương mại điện tử có các thành phần sau: một cụm máy chủ web, một cơ sở dữ liệu sản phẩm, một hệ thống lưu trữ ảnh sản phẩm, và một hệ thống lưu trữ log giao dịch. Hãy đề xuất loại hình lưu trữ (Block, Object, File) cho từng thành phần và giải thích ngắn gọn lý do lựa chọn của bạn.

Ngày 4: Container hóa với Docker & Giới thiệu Kubernetes

Trọng tâm:

Hiểu Docker để đóng gói các ứng dụng riêng lẻ và hiểu Kubernetes là công cụ để điều phối, quản lý các container đó ở quy mô lớn.

1. Các thành phần cốt lõi của Container
  • Container Image & Runtime: Image là bản thiết kế tĩnh. Runtime (ví dụ: `runc`) là công cụ chạy các container từ image.
  • Container Networking: Docker cung cấp các driver mạng để quản lý giao tiếp.
    • `bridge` (mặc định): Tạo một mạng riêng ảo cho các container trên cùng một host. Các container có thể giao tiếp với nhau qua tên.
    • `host`: Xóa bỏ sự cô lập mạng, container chia sẻ trực tiếp không gian mạng của host. Hiệu năng cao nhưng kém an toàn.
    • `overlay`: Cho phép các container trên các host khác nhau có thể giao tiếp với nhau, cần thiết cho các hệ thống điều phối như Docker Swarm hoặc Kubernetes.
  • Container Storage: Để lưu trữ dữ liệu bền vững:
    • `Volumes`: Docker quản lý, là cách được khuyến khích để lưu trữ dữ liệu. Dữ liệu được lưu trong một phần của hệ thống file của host do Docker quản lý.
    • `Bind Mounts`: Ánh xạ trực tiếp một file hoặc thư mục trên host vào container. Linh hoạt nhưng phụ thuộc chặt chẽ vào cấu trúc thư mục của host.
2. Nguyên tắc vàng khi viết Dockerfile
  • Giữ image nhỏ gọn: Bắt đầu với một base image tối giản (`node:18-alpine`), chỉ `COPY` những file cần thiết, và sử dụng `.dockerignore`.
  • Tận dụng Cache: Sắp xếp các chỉ thị từ ít thay đổi đến thay đổi thường xuyên. Ví dụ: `COPY package.json` trước, `RUN npm install`, sau đó mới `COPY . .`.
  • Sử dụng Multi-stage builds: Dùng một stage để build ứng dụng và một stage khác chỉ chứa các file đã build để chạy.
  • Chạy với người dùng không phải root: Tạo một người dùng riêng và chuyển sang người dùng đó (`USER node`) để tăng cường bảo mật.
3. Docker Compose: Chạy ứng dụng đa container

Là công cụ để định nghĩa và chạy các ứng dụng Docker đa container. Với một file YAML duy nhất, bạn có thể cấu hình tất cả các service, network, và volume của ứng dụng.

Best Practices:

  • Sử dụng biến môi trường (`.env` file) để quản lý các cấu hình nhạy cảm, không hardcode trong file `docker-compose.yml`.
  • Tách các file compose cho các môi trường khác nhau (ví dụ: `docker-compose.yml` cho dev, `docker-compose.prod.yml` cho production).
  • Đặt tên rõ ràng cho các service, network, và volume.
4. Giới thiệu về Kubernetes (K8s)

Khi ứng dụng của bạn phát triển và cần chạy hàng trăm, hàng nghìn container trên nhiều máy chủ, việc quản lý thủ công trở nên bất khả thi. Đây là lúc Kubernetes, một hệ thống điều phối container (container orchestration), phát huy tác dụng.

  • Khái niệm: K8s là một nền tảng mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng container hóa.
  • Thành phần chính: Node (máy chủ worker), Pod (đơn vị nhỏ nhất, chứa một hoặc nhiều container), Service (cung cấp một endpoint ổn định cho Pods), Deployment (quản lý vòng đời của Pods), Control Plane (bộ não của cluster).
  • Điểm mạnh: Tự động mở rộng (auto-scaling), tự phục hồi (self-healing), khám phá dịch vụ (service discovery), cân bằng tải.
  • Điểm yếu: Rất phức tạp, đòi hỏi thời gian học hỏi lớn, khó thiết lập và vận hành nếu không có kinh nghiệm.
  • Khi nào dùng K8s? Khi bạn cần chạy ứng dụng ở quy mô lớn, yêu cầu tính sẵn sàng cao, và muốn có một kiến trúc microservices linh hoạt. Không nên dùng cho các ứng dụng đơn giản hoặc khi đội ngũ chưa sẵn sàng cho sự phức tạp của nó.
  • Định hướng nghiên cứu sâu: Minikube (để chạy K8s local), `kubectl` (công cụ dòng lệnh chính), các khái niệm về Pod, Deployment, Service.
5. Mục tiêu thực hành:

Bài tập: Chạy ứng dụng đa container

Sử dụng `docker-compose`, hãy viết một file `docker-compose.yml` để chạy một ứng dụng WordPress hoàn chỉnh, bao gồm 2 service: `wordpress` (sử dụng image chính thức) và `db` (sử dụng image MySQL hoặc MariaDB). Cấu hình để WordPress có thể kết nối đến database và dữ liệu của cả hai được lưu trữ bền vững.

Ngày 5: Giới thiệu về Tự động hóa

Trọng tâm:

Giới thiệu về "Tại sao" (Why) và "Cái gì" (What) của hai trụ cột quan trọng nhất trong DevOps, tạo nền tảng cho tuần thực hành thứ hai.

1. Infrastructure as Code (IaC)

IaC là việc quản lý và khởi tạo hạ tầng thông qua các file định nghĩa có thể đọc được bởi máy, thay vì cấu hình thủ công. Lợi ích chính là khả năng tự động hóa, quản lý phiên bản và tính nhất quán.

Terraform

Điểm mạnh:

  • Hệ sinh thái lớn, hỗ trợ hầu hết các nhà cung cấp đám mây.
  • Cộng đồng mạnh mẽ.
  • Quản lý trạng thái (state) rõ ràng.

Điểm yếu:

  • Ngôn ngữ HCL cần thời gian để làm quen.
  • Logic phức tạp (vòng lặp, điều kiện) có thể khó viết.
Luồng hoạt động
Viết code HCL
`init`
`plan`
`apply`

Security Best Practices:

  • Lưu trữ state từ xa (Remote State): Không bao giờ lưu file `terraform.tfstate` trên máy local hoặc commit vào Git. Sử dụng backend như S3, Azure Blob Storage để lưu trữ an toàn, cho phép khóa (locking) và làm việc nhóm.
  • Quản lý Secrets: Sử dụng các công cụ quản lý bí mật như Vault, AWS Secrets Manager thay vì hardcode trong code.
  • Tuân thủ Nguyên tắc Quyền Tối thiểu (Least Privilege): Cấp cho Terraform quyền vừa đủ để thực hiện công việc, không cấp quyền admin.
Pulumi & AWS CDK

Điểm mạnh:

  • Tận dụng ngôn ngữ lập trình quen thuộc (TypeScript, Python...).
  • Dễ dàng viết logic phức tạp, unit test.
  • Tái sử dụng code tốt hơn.

Điểm yếu:

  • Hệ sinh thái và cộng đồng nhỏ hơn Terraform.
  • Cần bước biên dịch/transpile.
Luồng hoạt động
Viết code TS/PY
`compile`
`up`/`deploy`
Cloud API

Security Best Practices:

  • Quản lý cấu hình và bí mật: Sử dụng hệ thống quản lý cấu hình tích hợp của Pulumi hoặc các dịch vụ của nhà cung cấp đám mây.
  • Review code: Áp dụng quy trình review code nghiêm ngặt như với code ứng dụng, vì logic phức tạp có thể dẫn đến các thay đổi hạ tầng không mong muốn.
2. Continuous Integration/Continuous Deployment (CI/CD)

CI/CD là một phương pháp tự động hóa các giai đoạn trong vòng đời phát triển phần mềm, từ việc build, test đến triển khai.

  • CI (Tích hợp liên tục): Tự động hóa việc hợp nhất, xây dựng và kiểm thử mã nguồn để phát hiện lỗi sớm.
  • CD (Phân phối/Triển khai liên tục): Tự động triển khai ứng dụng sau khi qua giai đoạn CI.
  • Pipeline as Code: Toàn bộ quy trình CI/CD được định nghĩa dưới dạng mã nguồn (ví dụ: file YAML của GitHub Actions), cho phép quản lý phiên bản và review.

Ngày 6: Kubernetes nâng cao & Helm

Trọng tâm:

Hiểu các khái niệm nâng cao trong Kubernetes, học cách quản lý các ứng dụng phức tạp với Helm, và triển khai multi-container apps trên cluster.

1. Kubernetes nâng cao
  • ConfigMap & Secret: Lưu cấu hình và thông tin nhạy cảm riêng biệt, không hardcode vào container.
  • Namespaces: Phân tách môi trường dev, staging, production trong cùng cluster.
  • Horizontal Pod Autoscaler (HPA): Tự động scale số lượng Pod dựa trên CPU/Memory hoặc custom metrics.
  • Ingress Controller: Quản lý route HTTP/HTTPS từ bên ngoài vào cluster, hỗ trợ SSL, path routing.
  • Persistent Volume (PV) & Persistent Volume Claim (PVC): Quản lý lưu trữ bền vững cho container, tách biệt với lifecycle của Pod.
2. Helm - Package manager cho Kubernetes
  • Khái niệm: Helm giúp deploy ứng dụng K8s phức tạp bằng cách sử dụng chart (tập hợp file YAML + template).
  • Lợi ích: Quản lý version, dễ dàng rollback, tách config ra ngoài, triển khai multi-environment.
  • Best Practices:
    • Sử dụng `values.yaml` để quản lý config cho các môi trường khác nhau.
    • Chia chart thành subcharts cho microservices lớn.
    • Thường xuyên kiểm tra với `helm lint` và dry-run (`helm install --dry-run`).
3. Thực hành:

Bài tập: Triển khai ứng dụng WordPress trên Kubernetes

Sử dụng Helm, triển khai WordPress với database. Sử dụng PersistentVolume để lưu trữ dữ liệu, thiết lập Ingress để truy cập ứng dụng từ trình duyệt. Thử scale Pod WordPress lên 3 replicas và quan sát tự động cân bằng tải.

Ngày 7: Terraform & Infrastructure as Code (IaC)

Trọng tâm:

Hiểu Terraform để định nghĩa hạ tầng AWS bằng code, triển khai tự động, quản lý version hạ tầng và tái sử dụng modules.

1. Terraform cơ bản
  • Khái niệm: Terraform là công cụ IaC để provision cloud resources trên AWS, GCP, Azure và nhiều nhà cung cấp khác.
  • Components:
    • Provider: AWS, Azure, GCP...
    • Resource: EC2, S3, VPC, RDS...
    • Module: Nhóm resource có thể tái sử dụng.
    • State file: Lưu trữ trạng thái hiện tại của hạ tầng (`terraform.tfstate`).
  • Các lệnh chính: `terraform init`, `plan`, `apply`, `destroy`.
2. Best Practices Terraform
  • Sử dụng Remote Backend (S3 + DynamoDB lock) để team có thể chia sẻ state an toàn.
  • Tách hạ tầng thành modules cho từng service hoặc môi trường.
  • Luôn review `terraform plan` trước khi apply.
  • Sử dụng variables và outputs để tái sử dụng hạ tầng.
  • Version Terraform và provider nên cố định để tránh breaking changes.
3. Thực hành:

Bài tập: Triển khai hạ tầng WordPress trên AWS bằng Terraform

Tạo VPC, public/private subnets, Security Group, EC2 instance, RDS database. Sử dụng Terraform modules để tách các phần VPC, EC2, RDS. Triển khai tự động và đảm bảo hạ tầng có thể scale.

Ngày 8: CI/CD & Monitoring cho Container/K8s

Trọng tâm:

Thiết lập pipeline CI/CD cho Docker/Kubernetes, tích hợp monitoring và alerting để quản lý hệ thống production.

1. CI/CD với GitHub Actions
  • Build: Build Docker image, chạy unit tests, static code analysis.
  • Security Scan: Dùng Trivy hoặc Snyk để quét vulnerabilities.
  • Deploy: Push image lên registry (Docker Hub/ECR), deploy lên Kubernetes bằng Helm hoặc `kubectl apply`.
  • Multi-environment: Tách dev, staging, production bằng branches hoặc workflow matrix.
2. Monitoring & Alerting
  • Metrics: CPU, Memory, Pod status, Node status.
  • Tools: Prometheus + Grafana, CloudWatch, ELK Stack.
  • Alerting: Thông báo qua Slack, Email, hoặc PagerDuty khi vượt ngưỡng.
  • Best Practices: Logging tập trung, dashboards trực quan, alerts có threshold hợp lý.
3. Thực hành:

Bài tập: CI/CD cho WordPress trên Kubernetes

Tạo workflow GitHub Actions tự động build Docker image, push lên registry, deploy lên cluster K8s với Helm. Thiết lập Prometheus + Grafana để theo dõi Pod, CPU/Memory, và tạo alert khi một Pod bị crash hoặc CPU > 80% trong 5 phút.

Ngày 9: Terraform - Infrastructure as Code nâng cao

Trọng tâm:

Học cách sử dụng Terraform để quản lý hạ tầng một cách tự động, reproducible và version-controlled. Bao gồm cả kiến thức cơ bản, nâng cao, mô hình thực tế và bài tập thực hành.

1. Kiến thức cơ bản về Terraform
  • Provider: Kết nối Terraform với nhà cung cấp cloud (AWS, GCP, Azure...). Ví dụ: provider "aws" { region = "ap-southeast-1" }
  • Resource: Các thành phần hạ tầng (EC2, S3, VPC...). Ví dụ: resource "aws_instance" "web" {...}
  • Variables & Outputs: Dùng để tái sử dụng, dễ cấu hình và lấy thông tin hạ tầng. Ví dụ: variable "instance_type" { default = "t3.micro" }
  • State File: Terraform lưu trạng thái hạ tầng trong terraform.tfstate, cần bảo vệ và chia sẻ an toàn nếu team làm việc chung.
  • Lệnh cơ bản:
    • terraform init - khởi tạo Terraform project
    • terraform plan - xem trước thay đổi
    • terraform apply - áp dụng thay đổi
    • terraform destroy - xóa hạ tầng
2. Kiến thức nâng cao
  • Modules: Tái sử dụng các resource group, giúp hạ tầng chuẩn hóa và dễ quản lý.
  • Remote Backend: Lưu state trên S3 kết hợp DynamoDB lock để team có thể làm việc đồng thời mà không xung đột.
  • Workspaces: Tách môi trường dev, staging, production mà không cần nhiều folder riêng biệt.
  • Data Sources: Lấy dữ liệu từ hạ tầng hiện có mà không tạo mới, ví dụ: data "aws_ami".
  • Terraform Cloud / Enterprise: Quản lý workflow, CI/CD, policy enforcement, collaboration.
  • Lifecycle & Depends_on: Kiểm soát thứ tự tạo resource, tránh lỗi dependency khi deploy.
3. Thực tiễn & Best Practices
  • Sử dụng terraform fmtterraform validate để chuẩn hóa và kiểm tra file Terraform.
  • Luôn version hóa code Terraform trong Git.
  • Tránh hardcode giá trị nhạy cảm, sử dụng variable hoặc AWS Secrets/SSM.
  • Tách các phần hạ tầng lớn thành module: ví dụ VPC module, EC2 module, RDS module.
  • Kiểm soát resource names và tags để dễ quản lý multi-environment.
  • Áp dụng CI/CD: Terraform plan -> review -> apply tự động trên môi trường staging trước production.
4. Bài tập thực hành

Bài tập 1: Triển khai VPC với Terraform

Tạo một VPC với 2 public subnet và 2 private subnet, NAT Gateway, Internet Gateway. Đặt Security Group cho phép SSH từ IP cá nhân và HTTP/HTTPS cho web server.

Bài tập 2: Triển khai EC2 + RDS Module

Sử dụng module riêng cho EC2 và RDS. EC2 có thể truy cập RDS trong private subnet. Lưu cấu hình như instance type, database password trong variables. Thực hiện terraform plan -> apply và kiểm tra kết nối.

Bài tập 3: Multi-environment với Workspaces

Tạo 2 workspace: dev và prod. Cấu hình dev với EC2 t3.micro, prod với EC2 t3.medium. Triển khai hạ tầng trên cả 2 workspace và so sánh outputs.

Ngày 10: Terraform + Kubernetes + CI/CD - Workflow hoàn chỉnh

Trọng tâm:

Kết hợp IaC với Terraform, triển khai ứng dụng container hóa trên Kubernetes và tự động hóa CI/CD để có một hệ thống production-ready với monitoring và alerting.

1. Kiến thức tổng quan
  • Terraform: Tạo và quản lý hạ tầng cloud (VPC, Subnet, Security Groups, EKS Cluster, RDS...) một cách reproducible.
  • Kubernetes: Triển khai, scale và quản lý ứng dụng container trên cluster. Pods, Deployments, Services, Ingress, Persistent Volumes.
  • CI/CD: Tự động hóa build, test, scan và deploy ứng dụng lên cluster K8s, giảm lỗi thao tác thủ công và tăng tốc độ release.
  • Monitoring & Alerting: Giám sát ứng dụng và hạ tầng, gửi thông báo khi có sự cố (CPU, Memory, Pod crash, lỗi 5xx).
2. Workflow thực tế
  • Bước 1: Triển khai hạ tầng với Terraform
    • Tạo VPC, Subnet (public & private), Internet Gateway, NAT Gateway.
    • Triển khai EKS Cluster trên nhiều AZ, Security Group cho worker node.
    • Triển khai RDS database trong private subnet, kết nối với ứng dụng container.
    • Sử dụng Terraform modules, variables, remote state để tái sử dụng và version hóa.
  • Bước 2: Container hóa ứng dụng
    • Viết Dockerfile tối ưu, multi-stage build, user không root.
    • Chạy local test với Docker Compose trước khi deploy lên cluster.
  • Bước 3: Triển khai lên Kubernetes
    • Sử dụng Helm để deploy ứng dụng multi-container, thiết lập Service, Ingress và Persistent Volume.
    • Tối ưu scaling với HPA, đảm bảo replicas >= 2 cho high availability.
    • Sử dụng ConfigMap & Secret để lưu config và thông tin nhạy cảm.
  • Bước 4: CI/CD với GitHub Actions
    • Pipeline build Docker image, chạy test, scan vulnerabilities (Trivy/Snyk).
    • Push image lên Docker Registry hoặc ECR.
    • Deploy lên K8s cluster tự động bằng Helm.
    • Thử nghiệm rollback: khi deployment thất bại, quay lại version trước.
  • Bước 5: Monitoring & Alerting
    • Triển khai Prometheus + Grafana để giám sát metrics (CPU, Memory, Pod status, RDS connections).
    • CloudWatch + SNS alert cho EKS node, Pod crash, CPU > 80%, hoặc error 5xx.
    • Thiết lập dashboard trực quan, alert có threshold hợp lý để giảm false positive.
3. Best Practices
  • Tách Terraform module cho từng phần: networking, compute, database, EKS cluster.
  • Version hóa Docker image, tag theo commit hash hoặc semver.
  • Triển khai CI/CD từng bước: build -> test -> scan -> deploy, có approval step cho production.
  • Sử dụng namespaces trong Kubernetes để phân tách dev/staging/prod.
  • Persistent Volume cho dữ liệu bền vững, tránh mất dữ liệu khi Pod bị xóa.
  • Monitoring & Alerting phải liên tục cải tiến dựa trên sự cố thực tế.
4. Bài tập thực hành

Bài tập 1: Triển khai hạ tầng hoàn chỉnh

Sử dụng Terraform để tạo VPC, EKS Cluster, RDS database. Tách module cho networking, compute và database. Triển khai trên 2 môi trường: dev & prod bằng workspaces.

Bài tập 2: CI/CD cho ứng dụng multi-container

Viết GitHub Actions workflow: build Docker image, scan vulnerabilities, push registry, deploy bằng Helm lên EKS. Triển khai WordPress hoặc một ứng dụng microservices với ít nhất 2 container.

Bài tập 3: Monitoring & Alerting

Triển khai Prometheus + Grafana trên cluster. Thiết lập alert khi Pod crash hoặc CPU > 80%. Kiểm tra alert bằng cách scale Pod hoặc tạo load giả lập.

Bài tập 4: Rollback & Recovery

Thử thay đổi config gây lỗi deployment, quan sát CI/CD rollback tự động. Đảm bảo ứng dụng vẫn sẵn sàng và dữ liệu không mất.

Cuối Tuần 1: Củng cố & Đánh giá

Bài thi lý thuyết ngắn được thiết kế để kiểm tra xem học viên đã xây dựng được một mô hình tư duy (mental model) đúng đắn về cách các thành phần hạ tầng hoạt động và tương tác với nhau hay chưa.

🛠️ Tuần 2: Lab Tự do Sáng tạo - Dự án Capstone

Giới thiệu

Tuần thứ hai là nơi bạn áp dụng toàn bộ kiến thức nền tảng đã học vào một dự án thực tế. Thay vì làm theo các bước có sẵn, bạn sẽ được trao quyền tự do lựa chọn một trong các mô hình kiến trúc dưới đây để triển khai một sản phẩm/ứng dụng của riêng mình. Mục tiêu không chỉ là "chạy được", mà là xây dựng một hệ thống hoàn chỉnh, tuân thủ các nguyên tắc tốt nhất về bảo mật, khả năng mở rộng và tự động hóa.

1. Các Mô hình Kiến trúc Tham khảo trên AWS

Mô hình 1: Serverless với Lambda và API Gateway

Mô hình này loại bỏ hoàn toàn việc quản lý máy chủ. Mã nguồn của bạn được thực thi trong các hàm Lambda, được kích hoạt bởi các sự kiện như một request HTTP đến API Gateway. Dữ liệu thường được lưu trữ trong các cơ sở dữ liệu serverless như DynamoDB.

Điểm mạnh:

  • Chi phí tối ưu (trả tiền theo lần sử dụng).
  • Tự động mở rộng gần như vô hạn.
  • Không cần lo về vá lỗi HĐH hay quản lý máy chủ.

Điểm yếu:

  • Có thể gặp vấn đề "khởi động lạnh" (cold start).
  • Khó gỡ lỗi và giám sát hơn.
  • Giới hạn về thời gian thực thi và tài nguyên.
Sơ đồ Kiến trúc
👤
User
🔀
API Gateway
λ
Lambda
🗂️
DynamoDB
Mô hình 2: EC2 Basic với Auto Scaling

Đây là mô hình IaaS (Infrastructure as a Service) truyền thống. Ứng dụng của bạn chạy trên các máy ảo (EC2 instances). Để đảm bảo tính sẵn sàng cao và khả năng mở rộng, các máy ảo này được đặt trong một Auto Scaling Group, phía sau một Load Balancer. Cơ sở dữ liệu thường là một dịch vụ quản lý như RDS.

Điểm mạnh:

  • Toàn quyền kiểm soát môi trường vận hành.
  • Linh hoạt, phù hợp với mọi loại ứng dụng.
  • Hệ sinh thái công cụ hỗ trợ trưởng thành.

Điểm yếu:

  • Phải tự quản lý HĐH, vá lỗi bảo mật.
  • Chi phí có thể cao hơn nếu không tối ưu.
  • Việc mở rộng có độ trễ (thời gian khởi động máy ảo mới).
Sơ đồ Kiến trúc
👤
User
🚦
Load Balancer
Auto Scaling Group
💻
EC2
💻
EC2
🗃️
RDS Database
Mô hình 3: Container với ECS (Fargate)

Mô hình này trừu tượng hóa việc quản lý máy chủ. Bạn chỉ cần cung cấp một Docker image và định nghĩa các tài nguyên cần thiết (CPU, memory). ECS (sử dụng Fargate) sẽ tự động khởi tạo và quản lý hạ tầng để chạy các container của bạn.

Điểm mạnh:

  • Không cần quản lý máy chủ (với Fargate).
  • Tích hợp sâu và mượt mà với hệ sinh thái AWS.
  • Dễ học và sử dụng hơn Kubernetes.

Điểm yếu:

  • Kém linh hoạt và mở rộng hơn Kubernetes.
  • Phụ thuộc vào nhà cung cấp (vendor lock-in).
Sơ đồ Kiến trúc
👤
User
🚦
Load Balancer
ECS Service (Fargate)
📦
Task 1
📦
Task 2
🗃️
RDS Database
Mô hình 4: Điều phối Container với EKS (Kubernetes)

Đây là mô hình mạnh mẽ và linh hoạt nhất để chạy các ứng dụng container ở quy mô lớn. EKS là dịch vụ Kubernetes được quản lý của AWS, giúp đơn giản hóa việc vận hành một cluster Kubernetes. Bạn có toàn quyền kiểm soát và tận dụng được hệ sinh thái khổng lồ của Kubernetes.

Điểm mạnh:

  • Tiêu chuẩn ngành, tránh vendor lock-in.
  • Hệ sinh thái cực kỳ lớn và mạnh mẽ.
  • Linh hoạt và khả năng mở rộng tối đa.

Điểm yếu:

  • Rất phức tạp để học và vận hành.
  • Chi phí vận hành có thể cao hơn.
  • "Overkill" cho các ứng dụng đơn giản.
Sơ đồ Kiến trúc
👤
User
🌐
Ingress/LB
EKS Cluster
Service
📦
Pod 1
📦
Pod 2
🗃️
Database

2. Yêu cầu Triển khai (Deployment Requirements)

Sau khi chọn một mô hình kiến trúc, bạn cần triển khai ứng dụng của mình lên đó và phải đáp ứng tất cả các yêu cầu dưới đây. Đây là cơ hội để bạn áp dụng kiến thức từ Tuần 1 vào một bài toán thực tế, có tính thử thách cao.

  1. Infrastructure as Code (IaC): Toàn bộ hạ tầng phải được định nghĩa bằng code (Terraform, Pulumi, hoặc CDK) và được lưu trữ trong một kho chứa Git. Không được phép tạo tài nguyên thủ công trên giao diện AWS.
  2. Bảo mật Mạng (Network Security): Phải thiết kế VPC với cả public và private subnets. Các thành phần nhạy cảm (như database) phải được đặt trong private subnet. Security Groups phải được cấu hình theo nguyên tắc quyền tối thiểu (chỉ mở những port thực sự cần thiết).
  3. Quản lý Bí mật (Secrets Management): Nghiêm cấm hardcode bất kỳ thông tin nhạy cảm nào (mật khẩu database, API keys) trong mã nguồn. Phải sử dụng một dịch vụ quản lý bí mật như AWS Secrets Manager hoặc Parameter Store.
  4. Khả năng Mở rộng & Sẵn sàng cao (Scalability & High Availability): Kiến trúc phải được thiết kế để có khả năng tự động mở rộng và chống chịu lỗi. (Ví dụ: sử dụng Auto Scaling Group, ECS Service với số lượng task mong muốn > 1, hoặc triển khai trên nhiều Availability Zones).
  5. CI/CD Toàn diện: Thiết lập một pipeline CI/CD hoàn chỉnh trên GitHub Actions. Pipeline phải tự động kích hoạt khi có commit mới, bao gồm các bước: build, test, quét lỗ hổng bảo mật cho Docker image (ví dụ: dùng Trivy), và cuối cùng là deploy lên môi trường của bạn.
  6. Giám sát & Cảnh báo (Monitoring & Alerting): Phải cấu hình để thu thập các metrics và logs cơ bản (ví dụ: CPU Utilization, 5xx Errors, logs ứng dụng) vào CloudWatch. Thiết lập ít nhất một CloudWatch Alarm để gửi thông báo (ví dụ: qua email) khi một ngưỡng quan trọng bị vi phạm (ví dụ: CPU > 80% trong 5 phút).
  7. Tài liệu hóa (Documentation): Cung cấp một file `README.md` rõ ràng, giải thích về kiến trúc đã chọn, các quyết định thiết kế quan trọng, và hướng dẫn chi tiết cách để người khác có thể triển khai và chạy lại dự án của bạn.

💥 Tuần 3: Đánh giá & "Game Day" Hỗn loạn

Giai đoạn 1: Đánh giá Ngang hàng

Học viên trình bày sản phẩm, sau đó được chia cặp để đánh giá chéo mã nguồn (IaC, Dockerfile, CI/CD) của nhau. Tập trung vào các nguyên tắc tốt nhất và tính rõ ràng của tài liệu.

Giai đoạn 2: Game Day - Kỹ thuật Hỗn loạn

Các cặp sẽ tham gia "Game Day". Một người là "Kẻ tấn công" (cố ý tạo lỗi có kiểm soát) và người còn lại là "Người phòng thủ" (sử dụng công cụ giám sát để phát hiện và khắc phục).

☁️ Tuần 4: Khám phá các dịch vụ AWS & Thực hành

Giới thiệu

Tuần này tập trung vào việc học chi tiết từng dịch vụ AWS quan trọng, kết hợp kiến thức thực tế, best practices và bài tập lab. Bạn sẽ hiểu cách triển khai, cấu hình, bảo mật, giám sát và tối ưu chi phí hạ tầng cloud.

1. IAM (Identity & Access Management)

IAM là dịch vụ quản lý quyền truy cập và bảo mật cho tài nguyên AWS.

Các thành phần chính:
  • User: Tài khoản AWS để một cá nhân hoặc ứng dụng sử dụng. Dùng để đăng nhập hoặc gọi API AWS.
  • Group: Tập hợp nhiều user. Giúp gán quyền (policy) cho nhiều user cùng lúc.
  • Role: Quyền tạm thời để một service (EC2, Lambda) hoặc user khác assume. Không cần password hoặc key riêng.
  • Policy: Tài liệu JSON xác định quyền (allow/deny) cho user, group, hoặc role.
  • MFA (Multi-Factor Authentication): Yêu cầu xác thực nhiều lớp khi user đăng nhập, tăng bảo mật cho tài khoản.
Công dụng và cách dùng:
  • Phân quyền chi tiết cho người dùng và dịch vụ.
  • Sử dụng IAM Role cho EC2/Lambda để các service gọi tài nguyên AWS khác mà không cần key.
  • Gán Policy theo principle of least privilege (chỉ cấp quyền cần thiết).
  • Bật MFA cho user có quyền cao (admin).
  • Theo dõi và audit hành động của user qua CloudTrail.
Best Practices:
  • Không dùng root account để thao tác hằng ngày.
  • Gán quyền tối thiểu cho user, role, policy.
  • Sử dụng IAM Role thay vì Access Key khi có thể.
  • Enable MFA cho các user nhạy cảm.
  • Rotate credentials định kỳ và audit logs thường xuyên.
Bài tập thực hành:
  1. Tạo IAM User cho developer và gán vào Group "Developers".
  2. Tạo IAM Role cho EC2 instance, gán quyền đọc S3 bucket "project-data".
  3. Viết policy JSON cho phép user chỉ đọc DynamoDB table "Orders".
  4. Bật MFA cho IAM User admin và thử đăng nhập.
2. S3 (Simple Storage Service)

S3 là dịch vụ lưu trữ đối tượng (object storage) có khả năng mở rộng cao, dùng để lưu trữ và truy xuất dữ liệu từ bất kỳ đâu.

Các thành phần chính:
  • Bucket: Nơi lưu trữ các object. Tên bucket phải toàn cầu duy nhất.
  • Object: Đơn vị dữ liệu lưu trữ trong bucket, bao gồm dữ liệu và metadata.
  • Key: Tên định danh duy nhất cho mỗi object trong bucket.
  • Region: Vị trí địa lý nơi bucket được tạo, ảnh hưởng đến độ trễ và chi phí.
Storage Class (loại lưu trữ) & Khi nào dùng:
  • S3 Standard: Dùng cho dữ liệu truy cập thường xuyên, độ trễ thấp, độ bền cao. Thích hợp cho website, ứng dụng real-time.
  • S3 Intelligent-Tiering: Tự động chuyển dữ liệu giữa Standard và Infrequent Access dựa trên tần suất truy cập, tiết kiệm chi phí.
  • S3 Standard-IA (Infrequent Access): Dữ liệu ít truy cập nhưng cần truy xuất nhanh khi cần. Thường dùng cho backup dữ liệu hoặc lưu trữ dữ liệu lâu dài.
  • S3 One Zone-IA: Lưu dữ liệu ít truy cập chỉ ở một Availability Zone. Giá rẻ hơn Standard-IA nhưng ít sẵn sàng hơn.
  • S3 Glacier: Lưu trữ dài hạn, chi phí thấp, truy xuất dữ liệu trong vài phút đến vài giờ. Dùng cho archive dữ liệu lâu dài.
  • S3 Glacier Deep Archive: Lưu trữ siêu dài hạn, chi phí cực thấp, truy xuất dữ liệu trong 12 giờ. Dùng cho dữ liệu lưu trữ hầu như không truy cập.
Công dụng và cách dùng:
  • Lưu trữ tệp tin tĩnh như hình ảnh, video, tài liệu.
  • Sử dụng làm kho lưu trữ backup hoặc dữ liệu ứng dụng.
  • Tích hợp với CloudFront để phân phối nội dung nhanh chóng.
  • Sử dụng S3 Event để kích hoạt Lambda function khi có thay đổi dữ liệu.
  • Lưu dữ liệu lâu dài: Glacier / Deep Archive. Truy cập dữ liệu thường xuyên: Standard / Intelligent-Tiering.
Best Practices:
  • Sử dụng versioning để giữ lịch sử thay đổi của object.
  • Thiết lập lifecycle policies để tự động chuyển đổi hoặc xóa object không cần thiết.
  • Mã hóa dữ liệu khi lưu trữ (SSE-S3, SSE-KMS).
  • Không để dữ liệu quan trọng public trừ khi thật sự cần thiết.
  • Sử dụng tagging để quản lý chi phí và phân loại dữ liệu.
Bài tập thực hành:
  1. Tạo bucket S3, bật versioning, thử upload vài object.
  2. Thiết lập lifecycle policy: chuyển object sang Glacier sau 30 ngày.
  3. Tạo một Lambda function kích hoạt khi có object mới, gửi thông báo email.
  4. Thử truy xuất dữ liệu từ Standard, Standard-IA, Glacier, so sánh độ trễ và chi phí.
3. CloudFront (Content Delivery Network)

CloudFront là dịch vụ CDN của AWS, giúp phân phối nội dung tĩnh và động tới người dùng trên toàn cầu với độ trễ thấp và bảo mật cao.

Các thành phần chính:
  • Distribution: Định nghĩa cách CloudFront phân phối nội dung. Có hai loại: Web Distribution (HTTP/HTTPS) và RTMP Distribution (streaming media, ít dùng hơn).
  • Origin: Nguồn dữ liệu gốc mà CloudFront lấy nội dung, ví dụ S3 bucket, EC2 instance, Elastic Load Balancer, hoặc server bên ngoài.
  • Edge Location: Các điểm phân phối nội dung trên toàn cầu, gần người dùng để giảm độ trễ.
  • Cache Behavior: Quy tắc để CloudFront quyết định cách cache và xử lý request từ user.
  • Invalidation: Cơ chế xóa cache để cập nhật nội dung mới trên CDN.
Công dụng và cách dùng:
  • Phân phối hình ảnh, video, CSS, JS, hoặc các tệp tĩnh khác từ S3 hoặc EC2 tới người dùng nhanh hơn.
  • Tăng tốc ứng dụng web bằng việc cache nội dung gần người dùng.
  • Bảo vệ ứng dụng khỏi DDoS với tích hợp AWS Shield và WAF.
  • Hỗ trợ HTTPS và custom domain với SSL certificate.
  • Hỗ trợ streaming media và dynamic content, tùy theo cache behavior.
Best Practices:
  • Sử dụng S3 + CloudFront để phục vụ nội dung tĩnh thay vì public S3 trực tiếp.
  • Cấu hình cache policy hợp lý: tần suất thay đổi nội dung thấp thì cache lâu, nội dung thường xuyên thay đổi thì cache ngắn.
  • Sử dụng HTTPS để bảo mật dữ liệu và tích hợp WAF để chống tấn công.
  • Sử dụng invalidation hoặc versioning file khi cần cập nhật nội dung đã cache.
  • Tận dụng Lambda@Edge để xử lý request/response ngay tại edge location nếu cần custom logic.
Bài tập thực hành:
  1. Tạo một S3 bucket chứa các tệp tĩnh (HTML, CSS, JS, hình ảnh).
  2. Tạo CloudFront Web Distribution trỏ đến bucket S3 làm origin.
  3. Cấu hình HTTPS bằng ACM certificate cho domain tùy chỉnh.
  4. Thử truy cập nội dung từ nhiều địa điểm, kiểm tra tốc độ load.
  5. Thực hiện invalidation một số tệp, kiểm tra cache update trên edge locations.
  6. Option: Thêm Lambda@Edge để rewrite URL hoặc thêm header tùy chỉnh.
4. CloudWatch (Monitoring & Observability)

CloudWatch là dịch vụ giám sát và thu thập log, metrics của các tài nguyên AWS và ứng dụng của bạn, giúp bạn quan sát, cảnh báo và tối ưu hạ tầng.

Các thành phần chính:
  • Metrics: Dữ liệu đo lường thời gian thực về tài nguyên AWS (CPU, memory, disk, network) hoặc custom metrics từ ứng dụng.
  • Logs: Thu thập log từ EC2, Lambda, CloudTrail, RDS, hoặc ứng dụng custom.
  • Alarms: Cảnh báo khi metric vượt ngưỡng định nghĩa, có thể gửi thông báo qua SNS hoặc tự động thực hiện hành động.
  • Dashboards: Bảng điều khiển trực quan để tổng hợp metrics và trạng thái hệ thống.
  • Events / EventBridge: Phát hiện thay đổi trạng thái của tài nguyên AWS và kích hoạt hành động tự động.
  • Insights: CloudWatch Logs Insights hỗ trợ truy vấn log mạnh mẽ để phân tích và tìm vấn đề.
Công dụng và cách dùng:
  • Giám sát hiệu năng của EC2, RDS, Lambda, ECS và các dịch vụ AWS khác.
  • Thu thập log ứng dụng để debug và phân tích sự cố.
  • Thiết lập cảnh báo (Alarm) khi tài nguyên quá tải, ví dụ CPU > 80% trong 5 phút.
  • Tạo dashboard tổng hợp để theo dõi toàn bộ hệ thống trong một nơi.
  • Tích hợp với SNS, Lambda để tự động phản hồi sự kiện hoặc gửi thông báo.
Best Practices:
  • Chỉ thu thập metrics cần thiết để giảm chi phí và tránh quá tải dữ liệu.
  • Sử dụng namespace riêng cho custom metrics để dễ quản lý.
  • Thiết lập Alarms quan trọng và gửi thông báo qua nhiều kênh (email, Slack, SMS) để không bỏ lỡ sự cố.
  • Sử dụng Logs Insights để phân tích log thay vì chỉ đọc trực tiếp từ log group.
  • Tạo dashboard tổng hợp, phân theo service hoặc môi trường (dev/staging/prod) để dễ theo dõi.
Bài tập thực hành:
  1. Tạo một EC2 instance và chạy một ứng dụng nhỏ (ví dụ web server).
  2. Thu thập metrics CPU, Memory, Disk của instance qua CloudWatch.
  3. Tạo log group, đẩy log ứng dụng lên CloudWatch Logs.
  4. Thiết lập Alarm khi CPU > 70% trong 5 phút và gửi thông báo tới email qua SNS.
  5. Tạo Dashboard hiển thị CPU, Memory, và số lượng request từ log ứng dụng.
  6. Optional: Thử tạo EventBridge rule để khi Alarm kích hoạt thì gọi Lambda tự động scale up EC2 hoặc gửi thông báo Slack.
4. CloudWatch (Monitoring & Observability)

CloudWatch là dịch vụ giám sát và thu thập log, metrics của các tài nguyên AWS và ứng dụng của bạn, giúp bạn quan sát, cảnh báo và tối ưu hạ tầng.

Các thành phần chính:
  • Metrics: Dữ liệu đo lường thời gian thực về tài nguyên AWS (CPU, memory, disk, network) hoặc custom metrics từ ứng dụng.
  • Logs: Thu thập log từ EC2, Lambda, CloudTrail, RDS, hoặc ứng dụng custom.
  • Alarms: Cảnh báo khi metric vượt ngưỡng định nghĩa, có thể gửi thông báo qua SNS hoặc tự động thực hiện hành động.
  • Dashboards: Bảng điều khiển trực quan để tổng hợp metrics và trạng thái hệ thống.
  • Events / EventBridge: Phát hiện thay đổi trạng thái của tài nguyên AWS và kích hoạt hành động tự động.
  • Insights: CloudWatch Logs Insights hỗ trợ truy vấn log mạnh mẽ để phân tích và tìm vấn đề.
Công dụng và cách dùng:
  • Giám sát hiệu năng của EC2, RDS, Lambda, ECS và các dịch vụ AWS khác.
  • Thu thập log ứng dụng để debug và phân tích sự cố.
  • Thiết lập cảnh báo (Alarm) khi tài nguyên quá tải, ví dụ CPU > 80% trong 5 phút.
  • Tạo dashboard tổng hợp để theo dõi toàn bộ hệ thống trong một nơi.
  • Tích hợp với SNS, Lambda để tự động phản hồi sự kiện hoặc gửi thông báo.
Best Practices:
  • Chỉ thu thập metrics cần thiết để giảm chi phí và tránh quá tải dữ liệu.
  • Sử dụng namespace riêng cho custom metrics để dễ quản lý.
  • Thiết lập Alarms quan trọng và gửi thông báo qua nhiều kênh (email, Slack, SMS) để không bỏ lỡ sự cố.
  • Sử dụng Logs Insights để phân tích log thay vì chỉ đọc trực tiếp từ log group.
  • Tạo dashboard tổng hợp, phân theo service hoặc môi trường (dev/staging/prod) để dễ theo dõi.
Bài tập thực hành:
  1. Tạo một EC2 instance và chạy một ứng dụng nhỏ (ví dụ web server).
  2. Thu thập metrics CPU, Memory, Disk của instance qua CloudWatch.
  3. Tạo log group, đẩy log ứng dụng lên CloudWatch Logs.
  4. Thiết lập Alarm khi CPU > 70% trong 5 phút và gửi thông báo tới email qua SNS.
  5. Tạo Dashboard hiển thị CPU, Memory, và số lượng request từ log ứng dụng.
  6. Optional: Thử tạo EventBridge rule để khi Alarm kích hoạt thì gọi Lambda tự động scale up EC2 hoặc gửi thông báo Slack.
8. Lambda (Serverless Compute)

AWS Lambda là dịch vụ chạy code mà không cần quản lý máy chủ. Bạn chỉ cần tải code lên, Lambda sẽ tự động scale và thực thi khi có event trigger.

Các thành phần chính:
  • Function: Code của bạn, có thể bằng Node.js, Python, Java, Go, v.v.
  • Trigger/Event Source: Sự kiện kích hoạt Lambda, ví dụ: S3, API Gateway, DynamoDB Stream, CloudWatch Event.
  • Execution Role: IAM Role cấp quyền Lambda truy cập các dịch vụ AWS.
  • Environment Variables: Biến môi trường để cấu hình function mà không hardcode.
Công dụng và cách dùng:
  • Xử lý file upload từ S3, thực hiện ETL hoặc resize hình ảnh.
  • Xây dựng API serverless với API Gateway + Lambda.
  • Tự động hóa công việc, xử lý event từ CloudWatch, DynamoDB, SNS, SQS.
  • Không cần quản lý server, Lambda tự scale theo số lượng event.
Best Practices:
  • Chia nhỏ function theo microservice để dễ bảo trì và scale.
  • Không hardcode secrets, dùng AWS Secrets Manager hoặc Parameter Store.
  • Giới hạn timeout hợp lý để tránh chi phí phát sinh.
  • Đóng gói dependencies nhẹ, dùng Lambda Layers nếu cần.
Bài tập thực hành:
  1. Tạo Lambda function xử lý ảnh upload từ S3 và resize.
  2. Thiết lập trigger từ S3 Event khi có file mới.
  3. Gán Execution Role cho Lambda để truy cập S3.
  4. Thử gọi Lambda qua API Gateway với HTTP request.
9. SES (Simple Email Service)

SES là dịch vụ gửi/nhận email từ AWS, phù hợp cho thông báo hệ thống, marketing hoặc alert.

Các thành phần chính:
  • Identity: Domain hoặc email được xác minh để gửi/nhận email.
  • SMTP / API: Cách gửi email, qua SMTP hoặc SDK/API.
  • Configuration Set: Tập hợp các rule để tracking opens, bounces, complaints.
Công dụng và cách dùng:
  • Gửi email tự động từ ứng dụng (alert, welcome email).
  • Nhận email và xử lý thông qua Lambda hoặc S3.
  • Theo dõi delivery, bounce, complaint để tối ưu danh sách gửi.
Best Practices:
  • Luôn xác minh domain/email trước khi gửi.
  • Thiết lập DKIM/SPF để tăng tỷ lệ deliver.
  • Dùng configuration set để monitoring email performance.
Bài tập thực hành:
  1. Xác minh domain và email gửi thử.
  2. Gửi email notification khi Lambda xử lý file S3 xong.
  3. Theo dõi delivery report bằng CloudWatch.
10. VPC (Virtual Private Cloud)

VPC là mạng ảo riêng biệt trong AWS, nơi bạn có thể triển khai các tài nguyên như EC2, RDS, Lambda trong một môi trường an toàn.

Các thành phần chính:
  • Subnet: Chia VPC thành các mạng nhỏ (public/private).
  • Route Table: Định tuyến traffic trong VPC.
  • Internet Gateway: Cho phép subnet public truy cập Internet.
  • NAT Gateway: Cho phép subnet private truy cập Internet mà không expose public IP.
Công dụng và cách dùng:
  • Tạo mạng riêng cho các tài nguyên AWS để kiểm soát an ninh.
  • Tách subnet public/private để quản lý access theo nguyên tắc least privilege.
  • Điều phối traffic giữa các subnet và ra Internet.
Best Practices:
  • Luôn sử dụng private subnet cho database và backend services.
  • Sử dụng NAT Gateway thay vì public IP trực tiếp cho subnet private.
  • Thiết lập route table rõ ràng cho từng subnet.
Bài tập thực hành:
  1. Tạo VPC với 1 public subnet và 1 private subnet.
  2. Tạo Internet Gateway và NAT Gateway.
  3. Triển khai EC2 trong private subnet và kết nối ra Internet qua NAT.
11. Firewall (Security Group & NACL)

Firewall trên AWS gồm Security Groups (stateful) và Network ACLs (stateless), giúp kiểm soát inbound/outbound traffic cho các tài nguyên trong VPC.

Các thành phần chính:
  • Security Group: Firewall ảo cấp instance, stateful (trả lời traffic tự động cho phép).
  • Network ACL: Firewall cấp subnet, stateless (phải khai báo cả inbound & outbound).
Công dụng và cách dùng:
  • Bảo vệ EC2, RDS, Lambda trong VPC khỏi truy cập không mong muốn.
  • Thiết lập access control theo port, protocol, IP source/destination.
  • Kết hợp Security Group + NACL để tăng lớp bảo mật.
Best Practices:
  • Chỉ mở port cần thiết theo nguyên tắc least privilege.
  • Ưu tiên dùng Security Group thay vì NACL, NACL dùng thêm lớp bảo vệ.
  • Kiểm tra và audit rule định kỳ để tránh lỗ hổng bảo mật.
Bài tập thực hành:
  1. Tạo Security Group cho EC2 chỉ cho phép SSH từ IP cá nhân.
  2. Tạo NACL cho private subnet từ chối tất cả traffic ngoài subnet.
  3. Thử truy cập EC2 từ Internet và xác nhận chỉ IP cho phép được kết nối.
12. Load Balancer (ALB / NLB)

Load Balancer phân phối traffic đến nhiều instance hoặc container, giúp tăng khả năng chịu tải và sẵn sàng cao.

Các thành phần chính:
  • ALB (Application Load Balancer): Layer 7, phân phối HTTP/HTTPS dựa trên path hoặc host.
  • NLB (Network Load Balancer): Layer 4, phân phối TCP/UDP, chịu được traffic lớn và low latency.
  • Target Group: Nhóm instance/container nhận traffic từ Load Balancer.
  • Listener: Quy tắc nhận request từ client và forward đến target group.
Công dụng và cách dùng:
  • Phân phối traffic cho EC2, ECS, Lambda để tăng sẵn sàng.
  • Hỗ trợ auto scaling kết hợp target group.
  • Thực hiện routing nâng cao (ALB: path-based, host-based).
Best Practices:
  • Chọn ALB cho web/app layer 7, NLB cho TCP/UDP layer 4.
  • Kết hợp với health check để tự động loại bỏ instance không khả dụng.
  • Thiết lập SSL/TLS termination trên ALB để tăng bảo mật.
Bài tập thực hành:
  1. Tạo Application Load Balancer và listener HTTP/HTTPS.
  2. Tạo target group gồm 2 EC2 instance web server.
  3. Thử truy cập domain của ALB, kiểm tra traffic được phân phối đều.
  4. Thêm health check và thử dừng 1 EC2 để quan sát traffic chuyển sang instance còn lại.
1. EBS (Elastic Block Store)

EBS là dịch vụ lưu trữ block, dùng cho EC2. Nó giống như ổ cứng ảo gắn trực tiếp vào máy ảo, có khả năng persistent và performance cao.

Các thành phần chính:
  • Volume: Đơn vị lưu trữ chính, gắn vào EC2 instance.
  • Snapshot: Bản backup của volume, lưu trữ trên S3 nội bộ AWS.
  • Types: SSD (gp3, io2), HDD (st1, sc1) – khác nhau về hiệu năng và giá.
Công dụng và cách dùng:
  • Lưu dữ liệu persistent cho EC2, như database, file system.
  • Backup bằng snapshot, có thể restore sang vùng khác.
  • Thích hợp cho workload có IOPS cao (ví dụ DB transactional).
Best Practices:
  • Chọn loại volume phù hợp workload (gp3 cho general purpose, io2 cho IOPS cao).
  • Sử dụng snapshot định kỳ để backup dữ liệu.
  • Gắn volume vào AZ giống EC2 để tránh latency.
  • Enable encryption cho dữ liệu nhạy cảm.
2. EFS (Elastic File System)

EFS là dịch vụ lưu trữ dạng file (file storage) có thể chia sẻ giữa nhiều EC2 hoặc container, tự động scale theo dung lượng sử dụng.

Các thành phần chính:
  • File System: Đơn vị lưu trữ, có thể gắn vào nhiều EC2 hoặc ECS Task.
  • Mount Target: Điểm gắn EFS vào VPC subnet, cần ít nhất một per AZ.
  • Performance Mode: General Purpose hoặc Max I/O, tùy workload.
  • Throughput Mode: Bursting hoặc Provisioned.
Công dụng và cách dùng:
  • Lưu trữ file chia sẻ cho ứng dụng web hoặc container.
  • Thích hợp cho content management system, home directories, media storage.
  • Scale tự động, không cần quản lý dung lượng thủ công.
Best Practices:
  • Sử dụng Security Groups để kiểm soát truy cập EFS.
  • Chọn performance mode phù hợp: General Purpose cho đa số ứng dụng, Max I/O cho workloads high concurrency.
  • Enable encryption in transit và at rest.
  • Sử dụng lifecycle policy để chuyển file cũ sang EFS Infrequent Access giảm chi phí.
3. RDS (Relational Database Service)

RDS là dịch vụ quản lý cơ sở dữ liệu quan hệ. Nó hỗ trợ nhiều engine phổ biến như MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Aurora.

Các thành phần chính:
  • DB Instance: Máy chủ database chính chạy engine chọn lựa.
  • DB Cluster (Aurora): Nhóm instance có replication tự động cho HA và scale read.
  • Snapshots & Backups: Tự động hoặc manual backup dữ liệu.
  • Multi-AZ Deployment: Chạy standby instance ở AZ khác để HA.
Công dụng và cách dùng:
  • Chạy cơ sở dữ liệu cho ứng dụng web, API, hoặc internal app.
  • Tích hợp backup, monitoring, patching tự động mà không cần quản lý DB thủ công.
  • Dễ dàng mở rộng read replicas để tăng performance cho workloads đọc nhiều.
Best Practices:
  • Sử dụng Multi-AZ để đảm bảo high availability.
  • Enable automated backups và giữ retention phù hợp.
  • Chọn instance class và storage type phù hợp workload.
  • Sử dụng encryption at rest và in transit cho dữ liệu nhạy cảm.
  • Giới hạn truy cập bằng Security Group, không mở database ra public.
1. DynamoDB

DynamoDB là dịch vụ cơ sở dữ liệu NoSQL dạng key-value và document, có khả năng mở rộng gần như vô hạn và độ trễ thấp.

Các thành phần chính:
  • Table: Đơn vị lưu trữ chính, chứa các item.
  • Item: Một bản ghi dữ liệu trong table (giống row trong RDB).
  • Attribute: Các cột dữ liệu trong item.
  • Primary Key: Khóa chính để định danh duy nhất item.
  • Global & Local Secondary Index: Hỗ trợ truy vấn nhanh theo attribute khác ngoài khóa chính.
Công dụng và cách dùng:
  • Lưu trữ dữ liệu ứng dụng có tốc độ cao, ít quan hệ phức tạp.
  • Thích hợp cho session store, leaderboard, hoặc dữ liệu IoT.
  • Hỗ trợ auto-scaling throughput và backup tự động.
Best Practices:
  • Thiết kế primary key và secondary index hợp lý để tối ưu truy vấn.
  • Sử dụng DynamoDB Streams để trigger Lambda xử lý dữ liệu thay đổi.
  • Enable encryption at rest và IAM policies chặt chẽ cho quyền truy cập.
2. ElastiCache

ElastiCache là dịch vụ quản lý bộ nhớ đệm in-memory, hỗ trợ Redis và Memcached, giúp tăng tốc truy xuất dữ liệu và giảm tải cơ sở dữ liệu chính.

Các thành phần chính:
  • Cluster: Một nhóm nodes Redis hoặc Memcached.
  • Node: Đơn vị EC2 chạy bộ nhớ đệm.
  • Replication Group (Redis): Hỗ trợ high availability và read replicas.
  • Shard: Chia dữ liệu ra nhiều node để scale out.
Công dụng và cách dùng:
  • Tăng tốc độ truy xuất dữ liệu cho ứng dụng web hoặc API.
  • Lưu cache session, leaderboard, frequently accessed data.
  • Giảm tải cơ sở dữ liệu chính và cải thiện latency.
Best Practices:
  • Sử dụng replication và Multi-AZ để đảm bảo HA.
  • Chọn Redis hoặc Memcached phù hợp với nhu cầu (Redis hỗ trợ persistence và advanced data structures).
  • Enable encryption in transit và at rest.
  • Giới hạn truy cập bằng Security Groups và IAM policies.
3. API Gateway

API Gateway là dịch vụ quản lý API, giúp tạo, triển khai, bảo mật và giám sát các RESTful hoặc WebSocket API.

Các thành phần chính:
  • API: Định nghĩa endpoint và phương thức HTTP.
  • Stage: Phiên bản triển khai của API (dev, test, prod).
  • Integration: Kết nối API với Lambda, EC2, ECS, hoặc HTTP backend.
  • Resource & Method: URL path và phương thức GET/POST/PUT/DELETE.
  • Usage Plan & API Key: Giới hạn tốc độ và truy cập API.
Công dụng và cách dùng:
  • Tạo gateway cho microservices hoặc serverless backend.
  • Quản lý authentication, throttling, và caching.
  • Đo lường performance và log API request qua CloudWatch.
Best Practices:
  • Sử dụng IAM, Cognito hoặc Lambda Authorizer để bảo mật API.
  • Bật caching cho endpoint thường xuyên truy cập để giảm latency.
  • Thiết lập throttling và quota để chống abuse.
  • Enable logging & metrics qua CloudWatch để monitoring.
4. Direct Connect

Direct Connect là dịch vụ kết nối mạng riêng (private network) từ on-premises tới AWS, giúp tăng băng thông, giảm độ trễ và bảo mật hơn so với Internet.

Các thành phần chính:
  • Connection: Kết nối vật lý từ datacenter tới AWS Direct Connect location.
  • Virtual Interface (VIF): Logical network để kết nối tới VPC (private VIF) hoặc public services (public VIF).
  • Link Aggregation Group (LAG): Gộp nhiều connection để tăng băng thông.
Công dụng và cách dùng:
  • Kết nối mạng nhanh và ổn định giữa on-premises và AWS.
  • Giảm chi phí traffic so với VPN qua Internet cho băng thông lớn.
  • Thích hợp cho hybrid cloud, kết nối database, file server hoặc data pipeline.
Best Practices:
  • Sử dụng redundant connections hoặc LAG để tăng độ sẵn sàng.
  • Áp dụng routing policies BGP để tối ưu network path.
  • Giới hạn truy cập bằng firewall và ACL tại on-premises.
  • Giám sát throughput, latency và error bằng CloudWatch hoặc Network monitoring tool.
1. VPC Peering & Transit Gateway

Dịch vụ kết nối mạng giữa các VPC trong AWS. VPC Peering kết nối trực tiếp 2 VPC, còn Transit Gateway kết nối nhiều VPC và on-premises qua một gateway trung tâm.

Các thành phần chính:
  • VPC Peering: Kết nối trực tiếp 2 VPC, private traffic chỉ qua AWS network.
  • Transit Gateway: Gateway trung tâm, kết nối nhiều VPC, VPN, Direct Connect.
  • Route Tables: Cấu hình định tuyến để traffic đi qua Peering hoặc Transit Gateway.
Công dụng và cách dùng:
  • Cho phép các VPC giao tiếp mà không cần NAT hoặc Internet.
  • Transit Gateway tối ưu kết nối nhiều VPC và hybrid cloud.
  • Phù hợp cho kiến trúc microservices phân tán và multi-account.
Best Practices:
  • Chỉ cho phép kết nối cần thiết, hạn chế bề rộng network exposure.
  • Quản lý route table rõ ràng, tránh loop routing.
  • Sử dụng Transit Gateway cho kiến trúc nhiều VPC hoặc multi-region.
2. Fargate

Fargate là dịch vụ compute serverless cho container, chạy trên ECS hoặc EKS mà không cần quản lý EC2 instances.

Các thành phần chính:
  • Task / Pod: Đơn vị chạy container trên Fargate.
  • Task Definition / Deployment: Định nghĩa image, CPU, memory, network.
  • Service: Quản lý số lượng task mong muốn và tự động scale.
Công dụng và cách dùng:
  • Chạy ứng dụng container mà không cần quản lý server.
  • Tự động scale và chịu lỗi, tích hợp ECS/EKS.
  • Phù hợp cho microservices và workloads ngắn hạn hoặc burst.
Best Practices:
  • Sử dụng IAM role cho từng task để tăng bảo mật.
  • Chọn đúng CPU & memory để tránh lãng phí hoặc quá tải.
  • Enable logging và monitoring qua CloudWatch.
3. Outposts

Outposts là dịch vụ hybrid cloud, đưa hạ tầng AWS (EC2, EBS, RDS, ECS...) về on-premises, đồng bộ với AWS Region.

Các thành phần chính:
  • Outpost Rack: Hạ tầng vật lý tại site người dùng.
  • Managed Services: EC2, ECS, EKS, RDS... chạy trên Outpost.
  • Connectivity: Kết nối liên tục với AWS Region qua Direct Connect hoặc Internet.
Công dụng và cách dùng:
  • Đưa AWS về on-premises cho latency thấp hoặc compliance.
  • Chạy workloads cần xử lý dữ liệu tại chỗ nhưng vẫn quản lý từ AWS.
  • Tích hợp với các dịch vụ AWS region để mở rộng hoặc backup.
Best Practices:
  • Đảm bảo kết nối ổn định giữa Outpost và AWS Region.
  • Giám sát resource usage và scaling theo nhu cầu.
  • Tuân thủ security và compliance tương tự cloud AWS.
4. Batch

AWS Batch là dịch vụ quản lý và chạy workloads batch trên EC2 hoặc Fargate, tự động scale tài nguyên và quản lý job queue.

Các thành phần chính:
  • Job Definition: Định nghĩa container image, CPU, memory, retry policy.
  • Job Queue: Hàng đợi job, ưu tiên thực thi.
  • Compute Environment: EC2 hoặc Fargate, tự động scale dựa trên job queue.
Công dụng và cách dùng:
  • Chạy các công việc batch, xử lý dữ liệu lớn, AI/ML training.
  • Tự động scale tài nguyên khi cần, giảm chi phí idle.
  • Thích hợp cho workloads không cần phản hồi real-time.
Best Practices:
  • Thiết kế job nhỏ và idempotent để dễ retry khi lỗi.
  • Sử dụng tags và CloudWatch để theo dõi job performance.
  • Chọn compute environment phù hợp (Fargate cho serverless, EC2 cho workloads dài/đặc thù).
1. X-Ray

AWS X-Ray là dịch vụ giám sát và phân tích hiệu năng ứng dụng phân tán (microservices). Nó giúp bạn hiểu flow của request và xác định bottleneck.

Các thành phần chính:
  • Trace: Theo dõi một request từ đầu đến cuối qua các service.
  • Segment: Một phần của trace, thường là một service hoặc component.
  • Annotations & Metadata: Thêm thông tin tùy chỉnh vào trace để phân tích.
Công dụng và cách dùng:
  • Hiểu luồng request giữa các microservices.
  • Xác định service hoặc query chậm, bottleneck.
  • Tích hợp với Lambda, ECS, EC2, API Gateway.
Best Practices:
  • Enable tracing cho tất cả service quan trọng.
  • Sử dụng annotations để phân tích performance theo feature hoặc user.
  • Kết hợp với CloudWatch và X-Ray dashboard để phát hiện sớm vấn đề.
2. CloudTrail

CloudTrail ghi lại tất cả hoạt động API của AWS trong tài khoản, phục vụ auditing, compliance và phát hiện bất thường.

Các thành phần chính:
  • Trail: Theo dõi log hoạt động AWS account, có thể gửi log tới S3.
  • Event: Một bản ghi hành động API, bao gồm ai, khi nào, và làm gì.
  • Insight Events: Phát hiện bất thường trong hoạt động API.
Công dụng và cách dùng:
  • Audit hành vi người dùng và service.
  • Phát hiện thao tác trái phép hoặc nguy cơ bảo mật.
  • Tích hợp với CloudWatch, GuardDuty để cảnh báo tự động.
Best Practices:
  • Bật trail cho tất cả region và gửi log về S3 bucket riêng, versioned và encrypted.
  • Kết hợp với CloudWatch Logs và Lambda để tự động cảnh báo.
  • Sử dụng multi-account trail thông qua AWS Organizations để quản lý tập trung.
3. GuardDuty

AWS GuardDuty là dịch vụ threat detection thông minh, phát hiện hành vi bất thường, tấn công và nguy cơ bảo mật trên tài khoản và workloads.

Các thành phần chính:
  • Finding: Cảnh báo bảo mật, phân loại mức độ nghiêm trọng.
  • Detector: Dịch vụ phân tích và phát hiện threat, bật cho từng region.
  • Trusted IP Lists / Threat Intel: Dữ liệu về IP, domain đáng tin cậy hoặc nguy hiểm để cải thiện detection.
Công dụng và cách dùng:
  • Phát hiện hoạt động đáng ngờ: brute force SSH, credential compromise, unusual API calls.
  • Tích hợp với CloudWatch Events để tự động phản ứng (block IP, gửi cảnh báo).
  • Phù hợp với tài khoản multi-account qua AWS Organizations.
Best Practices:
  • Bật GuardDuty trên tất cả region và account.
  • Kết hợp với Security Hub, CloudWatch và Lambda để phản ứng tự động.
  • Định kỳ kiểm tra và cập nhật threat intel lists.
4. AWS Organizations

AWS Organizations quản lý nhiều account AWS từ một điểm trung tâm, giúp enforce policy, consolidate billing và quản lý IAM/guardrails cho toàn bộ tổ chức.

Các thành phần chính:
  • Organization: Tập hợp các account AWS dưới một hierarchy.
  • Organizational Units (OU): Nhóm các account theo chức năng hoặc môi trường.
  • Service Control Policies (SCP): Policy áp dụng cho OU hoặc account, giới hạn quyền của IAM users/roles.
  • Accounts: AWS account riêng lẻ tham gia organization.
Công dụng và cách dùng:
  • Quản lý multi-account hiệu quả, tách dev/prod hoặc theo team.
  • Áp dụng SCP để enforce security và compliance rules.
  • Tích hợp với CloudTrail, GuardDuty, Config để quản lý tập trung.
Best Practices:
  • Tạo OU theo môi trường (dev/test/prod) hoặc team để dễ quản lý.
  • Áp dụng SCP "deny by default" để hạn chế quyền không cần thiết.
  • Sử dụng consolidated billing để tối ưu chi phí và visibility.
1. KMS (Key Management Service)

AWS KMS là dịch vụ quản lý và lưu trữ khóa mã hóa, giúp bảo vệ dữ liệu ở mức độ cao với tích hợp các dịch vụ AWS khác.

Các thành phần chính:
  • Customer Master Key (CMK): Khóa chính dùng để mã hóa dữ liệu.
  • Data Key: Khóa dùng để mã hóa dữ liệu, được CMK mã hóa.
  • Alias: Tên dễ nhớ cho CMK.
Công dụng và cách dùng:
  • Mã hóa dữ liệu trên S3, EBS, RDS, DynamoDB.
  • Quản lý lifecycle của khóa, cấp quyền sử dụng cho IAM Role/User.
  • Tích hợp với Secrets Manager hoặc Parameter Store để mã hóa secrets.
Best Practices:
  • Sử dụng CMK riêng cho từng ứng dụng hoặc môi trường.
  • Enable key rotation để tăng cường bảo mật.
  • Giới hạn quyền sử dụng key theo principle of least privilege.
2. Secrets Manager / Parameter Store

Dùng để lưu trữ, quản lý và truy xuất thông tin nhạy cảm như mật khẩu, API keys một cách an toàn.

Các thành phần chính:
  • Secret: Thông tin nhạy cảm được lưu trữ.
  • Secret Rotation: Tự động đổi secret định kỳ.
  • Parameter: Biến cấu hình lưu trong Parameter Store.
  • SecureString: Lưu trữ giá trị được mã hóa bằng KMS.
Công dụng và cách dùng:
  • Lưu mật khẩu database, token API, key cho microservices.
  • Ứng dụng truy xuất secret/parameter runtime thay vì hardcode.
  • Tích hợp với Lambda, ECS, EC2, CodeBuild để inject secrets tự động.
Best Practices:
  • Sử dụng Secrets Manager nếu cần rotation tự động, Parameter Store cho config đơn giản.
  • Mã hóa tất cả secrets bằng KMS CMK.
  • Quản lý quyền truy cập theo IAM Role, không dùng user riêng.
3. CodePipeline / CodeBuild / CodeDeploy

Các dịch vụ CI/CD của AWS giúp tự động build, test, và deploy ứng dụng từ source code tới môi trường production.

Các thành phần chính:
  • CodePipeline: Pipeline tự động hoá các bước build, test, deploy.
  • CodeBuild: Build và test ứng dụng, tạo artifact.
  • CodeDeploy: Triển khai ứng dụng lên EC2, Lambda hoặc ECS.
  • Artifact: Kết quả build được lưu và truyền qua pipeline.
Công dụng và cách dùng:
  • Tạo pipeline CI/CD từ GitHub, CodeCommit hoặc Bitbucket.
  • Tích hợp unit test, security scan (Trivy, SonarQube) trong pipeline.
  • Triển khai ứng dụng tự động lên EC2, ECS, Lambda hoặc S3/CloudFront.
Best Practices:
  • Tách pipeline theo môi trường (dev/test/prod).
  • Sử dụng artifact versioned để rollback dễ dàng.
  • Kết hợp IAM Role hạn chế quyền cho các dịch vụ CI/CD.
4. CloudFormation

CloudFormation là dịch vụ IaC của AWS để định nghĩa và triển khai hạ tầng dưới dạng template JSON/YAML.

Các thành phần chính:
  • Stack: Tập hợp các tài nguyên AWS triển khai từ một template.
  • Template: File JSON/YAML định nghĩa các resource và dependencies.
  • ChangeSet: Preview thay đổi trước khi apply stack.
Công dụng và cách dùng:
  • Tự động triển khai toàn bộ hạ tầng với version control.
  • Rollback tự động khi có lỗi trong quá trình deploy.
  • Tích hợp với CodePipeline để CI/CD cho hạ tầng.
Best Practices:
  • Sử dụng modular template, chia thành nhiều stack nhỏ (Nested Stack) cho dễ quản lý.
  • Always validate template trước khi deploy.
  • Store templates trong Git để version control và auditing.
1. SNS (Simple Notification Service)

Dịch vụ pub/sub để gửi thông báo và alert tới nhiều subscribers khác nhau như email, SMS, Lambda, hoặc HTTP endpoint.

Các thành phần chính:
  • Topic: Chủ đề để publish message.
  • Subscription: Danh sách các endpoint nhận message (Email, Lambda, HTTP/S, SQS).
  • Publisher: Nguồn gửi message lên topic.
Công dụng và cách dùng:
  • Gửi alert từ CloudWatch, Lambda, hoặc ứng dụng custom.
  • Tạo workflow notification đa kênh (SMS, Email, push).
  • Tích hợp với SQS hoặc Lambda để trigger tự động khi có message.
Best Practices:
  • Phân loại topic theo loại alert (error, info, critical) để dễ quản lý.
  • Sử dụng subscription filter policy để chỉ gửi message quan trọng.
  • Giới hạn quyền publish theo IAM để tránh spam hoặc lạm dụng.
2. SQS (Simple Queue Service)

Dịch vụ message queue giúp tách rời các thành phần trong hệ thống, đảm bảo message được lưu và xử lý một cách reliable.

Các thành phần chính:
  • Queue: Hàng đợi lưu trữ message.
  • Message: Dữ liệu gửi từ producer tới consumer.
  • Visibility Timeout: Thời gian message bị ẩn khi consumer đang xử lý.
Công dụng và cách dùng:
  • Decouple service, giảm tight-coupling giữa producer và consumer.
  • Buffer request khi tải tăng cao để tránh quá tải hệ thống.
  • Kết hợp với Lambda hoặc EC2 để process message theo batch.
Best Practices:
  • Sử dụng dead-letter queue để xử lý message lỗi hoặc không xử lý được.
  • Chọn FIFO queue nếu cần ordering hoặc exactly-once processing.
  • Giới hạn quyền gửi/nhận message qua IAM policy để tăng bảo mật.
3. EventBridge

Event bus giúp kết nối các dịch vụ AWS hoặc ứng dụng bên ngoài theo cơ chế event-driven, rule-based trigger.

Các thành phần chính:
  • Event Bus: Nơi gửi/nhận event.
  • Rule: Điều kiện lọc và định tuyến event đến target.
  • Target: Endpoint nhận event (Lambda, SQS, SNS, Step Functions).
Công dụng và cách dùng:
  • Kết nối các dịch vụ AWS theo kiến trúc event-driven.
  • Tạo workflow tự động khi có sự kiện xảy ra (ví dụ EC2 state change, S3 PUT object).
  • Tích hợp với SaaS hoặc custom application thông qua partner event bus.
Best Practices:
  • Sử dụng event pattern để lọc sự kiện chính xác, tránh spam target.
  • Phân quyền IAM cho event bus và target để hạn chế truy cập không hợp lệ.
  • Kết hợp dead-letter queue để xử lý event lỗi.
4. Athena

Dịch vụ query dữ liệu S3 bằng SQL mà không cần thiết lập server hay cluster.

Các thành phần chính:
  • Database: Logical grouping cho table.
  • Table: Mapping metadata cho dữ liệu S3.
  • Query: SQL query trực tiếp trên dữ liệu object storage.
Công dụng và cách dùng:
  • Truy vấn log, analytics trực tiếp từ S3.
  • Hỗ trợ BI tool (QuickSight, Tableau) kết nối trực tiếp.
  • Không cần quản lý server, trả tiền theo query (pay-per-query).
Best Practices:
  • Partition dữ liệu theo thời gian hoặc category để giảm chi phí query.
  • Convert dữ liệu sang định dạng columnar (Parquet, ORC) để tăng tốc.
  • Sử dụng IAM role để hạn chế quyền truy cập dữ liệu nhạy cảm.
5. Kinesis / Firehose

Dịch vụ thu thập, xử lý, và chuyển dữ liệu streaming thời gian thực.

Các thành phần chính:
  • Stream: Dòng dữ liệu streaming.
  • Shard: Đơn vị phân vùng dữ liệu trong stream.
  • Delivery Stream (Firehose): Gửi dữ liệu tự động tới S3, Redshift, Elasticsearch, hoặc Splunk.
Công dụng và cách dùng:
  • Thu thập log, clickstream, IoT sensor data.
  • Streaming analytics hoặc ETL theo thời gian thực.
  • Firehose tự động load dữ liệu vào S3, Redshift, Elasticsearch mà không cần code.
Best Practices:
  • Phân shard hợp lý để tối ưu throughput.
  • Sử dụng compression, batching để giảm chi phí lưu trữ và tăng tốc.
  • Thiết lập monitoring và CloudWatch alarms cho lag hoặc throttling.
6. SageMaker

Dịch vụ ML toàn diện để build, train, và deploy model machine learning trên AWS.

Các thành phần chính:
  • Notebook Instance: Môi trường phát triển model.
  • Training Job: Quá trình train model trên dataset.
  • Endpoint: Nơi deploy model để inference real-time.
  • Processing Job: Xử lý và chuẩn hóa dữ liệu trước khi train.
Công dụng và cách dùng:
  • Build và train model từ dữ liệu S3.
  • Deploy model làm real-time hoặc batch inference.
  • Tích hợp với Lambda hoặc API Gateway để expose model API.
Best Practices:
  • Quản lý dữ liệu input/output trong S3 và version dataset.
  • Chọn instance phù hợp với size dataset và model.
  • Enable CloudWatch logging và metrics cho monitoring training và inference.

☁️ Tuần 5: Khám phá Microsoft Azure

1. Azure Active Directory (AAD)

AAD là dịch vụ quản lý danh tính và truy cập trên Azure, tương tự IAM trên AWS.

Các thành phần chính:
  • User: Tài khoản cá nhân hoặc service account.
  • Group: Nhóm user để quản lý quyền tập trung.
  • Role: Xác định quyền truy cập (RBAC - Role Based Access Control).
  • Policy: Chính sách kiểm soát truy cập, MFA, Conditional Access.
  • MFA (Multi-Factor Authentication): Tăng bảo mật đăng nhập.
Công dụng và cách dùng:
  • Quản lý quyền truy cập vào tài nguyên Azure.
  • Thiết lập Single Sign-On (SSO) cho ứng dụng.
  • Áp dụng MFA và Conditional Access cho bảo mật nâng cao.
Best Practices:
  • Sử dụng RBAC thay vì chia sẻ quyền riêng lẻ.
  • Luôn bật MFA cho tất cả user và service principal quan trọng.
  • Tạo nhóm theo chức năng và gán role thay vì user trực tiếp.

2. Azure Storage

Blob Storage

Dịch vụ lưu trữ object trên Azure, dùng để lưu file, ảnh, video.

  • Container: Tương tự bucket trong S3, chứa blob.
  • Blob: Đơn vị dữ liệu, có thể là block, append hoặc page blob.
  • Access Tier: Hot, Cool, Archive để tối ưu chi phí.

Best Practices:

  • Sử dụng lifecycle policy để chuyển blob sang tier rẻ hơn.
  • Mã hóa dữ liệu (SSE).
  • Không hardcode connection string, dùng Azure Key Vault.
File Storage & Disk Storage

File Storage: lưu trữ file theo kiểu share qua SMB/NFS. Disk Storage: dùng gắn cho VM.

  • File Share: tương tự EFS, chia sẻ file giữa nhiều VM.
  • Managed Disk: SSD/HDD gắn cho VM, giống EBS.

Best Practices:

  • Dùng Premium SSD cho workload I/O cao.
  • Sử dụng snapshots để backup dữ liệu quan trọng.

3. Compute

Virtual Machines (VMs)

Tương tự EC2, dùng để chạy OS và ứng dụng tùy ý.

  • VM Size: chọn CPU/RAM phù hợp.
  • Availability Set / Zone: đảm bảo high availability.
  • Extensions: cài đặt agent hoặc script tự động.
Azure Kubernetes Service (AKS)

Dịch vụ Kubernetes được quản lý, tương tự EKS.

  • Cluster: tập hợp node pool.
  • Pod / Deployment / Service: quản lý container.
  • Integration: dễ tích hợp với Azure Monitor, ACR.
App Service

Platform as a Service (PaaS) cho ứng dụng web và API.

  • Web App / API App / Function App.
  • Tích hợp CI/CD trực tiếp từ GitHub, Azure DevOps.

4. Networking

Virtual Network (VNet)

Tạo mạng ảo, subnet, route table, firewall NSG.

Load Balancer & Application Gateway

Cân bằng tải Layer 4 hoặc Layer 7, SSL termination, WAF.

VPN Gateway / ExpressRoute / VNet Peering

Kết nối mạng on-premise với Azure, hoặc kết nối giữa các VNet.

5. Monitoring & Security

Azure Monitor & Log Analytics

Thu thập metrics, logs từ VM, container, App Service, database.

Azure Security Center & Defender

Quản lý bảo mật, phát hiện threat, vulnerability và cảnh báo.

Azure Key Vault

Quản lý secrets, certificate, và key giống KMS / Secrets Manager.

6. Messaging & Event

Service Bus

Queue/message broker, hỗ trợ pub/sub và decoupling service.

Event Grid

Event routing service, trigger Azure Functions, Logic Apps hoặc webhook theo event.

Event Hub

Streaming platform, tương tự Kinesis, thu thập telemetry và log.

7. Databases

Azure SQL Database

Managed relational DB, tương tự RDS.

Cosmos DB

NoSQL DB toàn cầu, multi-model, tương tự DynamoDB.

Azure Cache for Redis

Managed in-memory cache, tương tự ElastiCache.

8. CI/CD & IaC

Azure DevOps: Pipelines

Build, Test, Deploy tự động cho ứng dụng Azure.

Terraform & ARM Templates

Định nghĩa hạ tầng dưới dạng code, version control, repeatable deployment.

🧪 Tuần 5: Lab Thực Hành Microsoft Azure

1. Azure Active Directory (AAD)

Quản lý danh tính và truy cập trên Azure.

Thành phần chính:
  • User, Group, Role, Policy, MFA (Multi-Factor Authentication)
Thực hành:
  • Tạo một User và gán vào Group.
  • Tạo Role và gán quyền truy cập cho Group.
  • Kích hoạt MFA cho User quan trọng.
Best Practices:
  • Sử dụng RBAC, không gán quyền trực tiếp cho user.
  • Luôn bật MFA cho account quản trị.
  • Ghi lại thay đổi quyền và kiểm tra định kỳ.

2. Storage

Thực hành:
  • Tạo Storage Account.
  • Tạo Blob Container, upload file, thiết lập Access Tier (Hot/Cool/Archive).
  • Tạo File Share để chia sẻ dữ liệu giữa VM.
  • Tạo Managed Disk, attach vào VM.
Best Practices:
  • Sử dụng lifecycle policies để tiết kiệm chi phí.
  • Mã hóa dữ liệu, không hardcode keys, dùng Key Vault.

3. Compute

Thực hành:
  • Tạo VM, chọn size phù hợp, attach Managed Disk.
  • Triển khai App Service, deploy ứng dụng web từ GitHub.
  • Tạo AKS Cluster, deploy containerized application, sử dụng kubectl và Helm.
Best Practices:
  • Sử dụng Availability Zone/Set để tăng HA.
  • Chỉ mở port cần thiết trên NSG/Firewall.
  • Sử dụng AKS Managed Identity và RBAC.

4. Networking

Thực hành:
  • Tạo VNet, subnet public/private.
  • Triển khai Load Balancer hoặc Application Gateway, gán public IP.
  • Cấu hình NSG (Network Security Group) và Firewall rules.
  • Kết nối VNet qua VPN Gateway hoặc ExpressRoute, thử VNet Peering/Transit Gateway.
Best Practices:
  • Nguyên tắc quyền tối thiểu cho NSG và firewall.
  • Sử dụng Subnet riêng cho DB và ứng dụng nhạy cảm.
  • Đặt tagging để quản lý tài nguyên dễ dàng.

5. Messaging & Event

Thực hành:
  • Tạo Service Bus, thử gửi/nhận message.
  • Tạo Event Grid, trigger Azure Function khi file upload lên Blob.
  • Tạo Event Hub, thu thập log streaming từ VM hoặc container.
Best Practices:
  • Decouple service bằng Queue/Topic.
  • Đặt retry policy cho Event Grid và Service Bus.
  • Giám sát throughput và latency.

6. Databases

Thực hành:
  • Tạo Azure SQL Database, kết nối từ App Service.
  • Tạo Cosmos DB, thử CRUD data.
  • Tạo Azure Cache for Redis, sử dụng cache cho ứng dụng web.
Best Practices:
  • Sử dụng firewall rule cho database.
  • Mã hóa dữ liệu và backup thường xuyên.
  • Chọn đúng performance tier (Standard, Premium).

7. CI/CD & IaC

Thực hành:
  • Viết Terraform script tạo VNet, VM, Storage Account.
  • Triển khai pipeline Azure DevOps: build, test, deploy App Service hoặc AKS.
  • Thử deploy từ GitHub Actions tích hợp với Terraform + Azure CLI.
Best Practices:
  • Version control tất cả Terraform/ARM scripts.
  • Tạo pipeline với stages rõ ràng: build → test → deploy.
  • Sử dụng secrets từ Key Vault thay vì hardcode.

🚀 Workflow Demo: End-to-End Azure Deployment

1. Overview

Mục tiêu: Tạo một workflow triển khai ứng dụng end-to-end trên Azure, kết hợp Storage, Compute, Database, Networking, Messaging/Event, và CI/CD với Terraform + Azure DevOps. Workflow này minh họa cách xây dựng hạ tầng, triển khai ứng dụng, và kích hoạt sự kiện tự động.

2. Architecture

Sơ đồ mô tả luồng dữ liệu và các thành phần chính:

👤 User
🌐 App Service (Web Frontend)
📦 AKS Cluster → 🗄️ Azure SQL / Cosmos DB
📂 Storage (Blob/File Share)
📢 Event Grid / Service Bus → Trigger Functions / Jobs

3. Terraform IaC

Tất cả hạ tầng được định nghĩa bằng Terraform để đảm bảo reproducibility:

  • Tạo Resource Group, VNet, Subnet, NSG
  • Tạo Storage Account (Blob & File Share)
  • Tạo VM / App Service / AKS Cluster
  • Tạo Azure SQL Database hoặc Cosmos DB
  • Tạo Event Grid topic / Service Bus namespace

Best Practices:

  • Version control tất cả Terraform files
  • Sử dụng modules để tái sử dụng code
  • Sử dụng Key Vault để lưu secrets, không hardcode
  • Thiết lập workspace riêng cho Dev / QA / Prod

4. CI/CD Pipeline (Azure DevOps / GitHub Actions)

  • Commit → Trigger Pipeline
  • Build & Test ứng dụng web / container
  • Scan Docker image (trivy / security scan)
  • Terraform plan & apply để tạo/update hạ tầng
  • Deploy App Service hoặc AKS Pod
  • Trigger Function / Job nếu có Event từ Storage / Service Bus

Best Practices:

  • Pipeline multi-stage: Build → Test → Deploy → Monitor
  • Sử dụng Terraform plan trước khi apply
  • Secrets được quản lý trong Azure Key Vault / GitHub Secret
  • Thông báo thành công / lỗi qua Teams / Slack / Email

5. Messaging & Event

  • Blob/File upload → Event Grid → Trigger Azure Function → Update DB / Call API
  • Service Bus queues/topics → Decouple microservices / background jobs
  • Event-driven architecture giúp hệ thống scalable & loosely coupled

Best Practices:

  • Retry policies & dead-letter queue
  • Giám sát event throughput, latency
  • Logging & metrics từ Function / Queue

6. Monitoring & Logging

  • Azure Monitor: CPU, Memory, Network, Storage metrics
  • Application Insights: Web app / container logs, request response time
  • Set up Alerts: e.g., CPU > 80%, DB connections > threshold

Best Practices:

  • Centralize logs & metrics
  • Use tags to organize resources & alerts
  • Test alert notifications

Lab: Build an End-to-End Azure Workflow

  • Viết Terraform script tạo hạ tầng: VNet + Storage + VM + App Service + AKS + DB + Event Grid
  • Deploy ứng dụng web container lên App Service hoặc AKS
  • Upload file lên Storage → Trigger Function / update DB
  • Thiết lập CI/CD pipeline với Terraform + Azure DevOps
  • Giám sát metrics, tạo alert và log dashboard

🚀 Workflow Demo: End-to-End AWS Deployment

1. Overview

Mục tiêu: Triển khai một workflow AWS end-to-end từ Storage → Compute → Container → Database, kết hợp CI/CD với Terraform + CodePipeline/CodeBuild/CodeDeploy và Event/Message trigger với S3 Event, SNS/SQS.

2. Architecture

👤 User
🌐 Load Balancer → ECS Service / EKS Cluster
🗄️ RDS / DynamoDB / ElastiCache
📂 S3 Bucket / EFS
📢 SNS / SQS → Lambda → Update DB / Trigger Jobs

3. Terraform IaC

  • Tạo VPC, Subnet, Security Groups, NAT Gateway
  • Tạo Storage: S3 Bucket, EFS
  • Tạo EC2 Instance hoặc ECS Task / EKS Cluster
  • Tạo Database: RDS, DynamoDB, ElastiCache
  • Tạo SNS Topic, SQS Queue, Lambda function
  • Tagging và quản lý secrets với KMS / Secrets Manager

Best Practices:

  • Version control Terraform scripts
  • Chia modules để reuse code
  • Không hardcode secrets, sử dụng KMS / Secrets Manager
  • Workspaces / environments cho Dev / QA / Prod

4. CI/CD Pipeline (CodePipeline + CodeBuild + CodeDeploy)

  • Commit vào GitHub / CodeCommit → Trigger pipeline
  • Build Docker image / ứng dụng
  • Scan security image (Trivy)
  • Terraform plan → apply hạ tầng mới
  • Deploy container lên ECS / EKS
  • Deploy Lambda function nếu có Event trigger

Best Practices:

  • Multi-stage pipeline: Build → Test → Security Scan → Deploy
  • Secrets từ Secrets Manager / SSM Parameter Store
  • Thông báo trạng thái pipeline qua SNS / Slack
  • Rollback tự động khi deploy lỗi

5. Messaging & Event

  • Upload file → S3 Event → Lambda → Update DB / Call API
  • SNS Topic → Fanout notification cho nhiều service
  • SQS Queue → Decouple microservices / background processing
  • Event-driven architecture giúp hệ thống scalable & loosely coupled

Best Practices:

  • Retry policies & dead-letter queue
  • Giám sát throughput, latency, failed events
  • Centralized logging & metrics cho Lambda / ECS / EKS

6. Monitoring & Logging

  • CloudWatch: CPU, Memory, Network, Storage metrics
  • CloudWatch Logs & Metrics Filter cho container & Lambda
  • X-Ray: Tracing request, performance bottleneck
  • Set up CloudWatch Alarms: e.g., CPU > 80%, RDS connections > threshold

Best Practices:

  • Centralize logs & metrics
  • Tag resources và alerts để quản lý dễ dàng
  • Test alert notifications

Lab: Build an End-to-End AWS Workflow

  • Viết Terraform script tạo hạ tầng: VPC + S3/EFS + EC2 + ECS/EKS + Database + SNS/SQS + Lambda
  • Deploy container / ứng dụng lên ECS / EKS
  • Upload file lên S3 → Lambda trigger → DB update / Job
  • Thiết lập CI/CD pipeline với Terraform + CodePipeline/CodeBuild/CodeDeploy
  • Giám sát metrics & tạo alert dashboard với CloudWatch / X-Ray

☁️ Tuần 6: Google Cloud Platform (GCP) - Kiến thức và Thực hành

1. Identity and Access Management (IAM)

IAM dùng để quản lý quyền truy cập các resource trên GCP.

  • User: Người dùng cá nhân với tài khoản Google.
  • Group: Tập hợp các user, dễ quản lý quyền cùng lúc.
  • Service Account: Tài khoản dùng cho ứng dụng, script hoặc VM để truy cập GCP API.
  • Role: Tập hợp quyền (Permissions) để gán cho User/Service Account/Group. Có sẵn (Predefined) hoặc tự tạo (Custom).
  • Policy: Quy định ai được làm gì trên resource nào.
  • MFA (2-Step Verification): Tăng bảo mật cho User, đặc biệt cho các admin.

Best Practices:

  • Nguyên tắc quyền tối thiểu (Least Privilege).
  • Sử dụng Service Account cho ứng dụng, không dùng user account.
  • Audit logs để theo dõi thay đổi IAM.

2. Compute Services

  • Compute Engine: VM truyền thống, tương tự EC2.
  • App Engine: Platform as a Service, tự động scale ứng dụng web.
  • Kubernetes Engine (GKE): Managed Kubernetes Cluster, chạy container ở quy mô lớn.
  • Cloud Functions: Serverless, event-driven, tự động scale, tương tự Lambda.
  • Cloud Run: Chạy container serverless, tự động scale theo traffic.

Lab Exercise:

  • Tạo một VM trên Compute Engine, cài web server và deploy ứng dụng đơn giản.
  • Triển khai container web lên Cloud Run và kiểm thử auto-scaling.
  • Tạo một GKE cluster nhỏ, deploy multi-container app.

3. Storage & Database

  • Cloud Storage: Object storage, dùng lưu trữ file tĩnh, backup.
  • Filestore: Managed NFS file storage, tương tự EFS.
  • Persistent Disk: Block storage cho VM.
  • Cloud SQL: Managed relational database (MySQL/PostgreSQL/SQL Server).
  • Cloud Spanner: RDBMS toàn cầu, ACID, scale cực lớn.
  • Firestore / Datastore: NoSQL document database, tương tự DynamoDB.
  • BigQuery: Data warehouse, chạy query SQL cực nhanh trên dữ liệu lớn.

Lab Exercise:

  • Tạo một Cloud Storage bucket, upload/download file.
  • Tạo Cloud SQL instance, kết nối từ VM và GKE.
  • Chạy query demo trên BigQuery với dataset mẫu.

4. Networking

  • VPC: Virtual Private Cloud, quản lý mạng riêng.
  • Subnets: Chia mạng theo vùng và bảo mật.
  • Firewall Rules: Kiểm soát inbound/outbound traffic.
  • Cloud Load Balancing: Tăng khả năng scale và HA cho app.
  • Cloud VPN / Interconnect: Kết nối mạng on-premises với GCP.

Lab Exercise:

  • Tạo một VPC với 2 subnets, deploy VM vào mỗi subnet.
  • Thiết lập Firewall rule chỉ cho phép HTTP/SSH từ IP nhất định.
  • Triển khai Load Balancer cho một ứng dụng multi-VM.

5. Messaging & Event

  • Pub/Sub: Publish/Subscribe messaging system, tương tự SNS/SQS.
  • Eventarc: Event router, trigger Cloud Functions/Run từ bất kỳ GCP service nào.
  • Cloud Tasks: Queue job, schedule tasks.

Lab Exercise:

  • Tạo Pub/Sub topic, publish message và trigger Cloud Function.
  • Sử dụng Eventarc để trigger một container trên Cloud Run khi có event mới trên Cloud Storage.

6. CI/CD & IaC

  • Terraform: Tạo VM, GKE, Storage, Database.
  • Cloud Build: Pipeline CI/CD, build Docker image và deploy lên Cloud Run / GKE.
  • Cloud Deploy: Managed deployment tool, triển khai multi-environment.

Lab Exercise:

  • Viết Terraform script tạo VPC + VM + Storage + GKE + Cloud SQL.
  • Triển khai pipeline Cloud Build: Build → Test → Deploy lên GKE/Cloud Run.
  • Kết hợp Pub/Sub / Eventarc trigger cho app event-driven.

7. Monitoring & Logging

  • Cloud Monitoring: Metrics, dashboards, uptime checks.
  • Cloud Logging: Centralized logs từ VM, GKE, Cloud Functions.
  • Cloud Trace / Cloud Debugger: Tracing và debug ứng dụng production.
  • Alerting: Email / Slack notification khi metric vượt ngưỡng.

Lab Exercise:

  • Tạo dashboard Cloud Monitoring theo dõi CPU, Memory, Request count.
  • Tạo alert khi CPU VM > 80% trong 5 phút.
  • Sử dụng Cloud Trace để debug request latency từ Cloud Run app.

Capstone Lab:

  • Tạo một workflow end-to-end: Cloud Storage → GKE / Cloud Run → Cloud SQL → Pub/Sub → Cloud Function
  • Triển khai CI/CD pipeline bằng Terraform + Cloud Build
  • Thiết lập Monitoring & Alerting cho tất cả các service
  • Đảm bảo security: IAM roles, service accounts, firewall, secrets management

☁️ Tuần 6: Workflow Demo trên GCP

Giới thiệu

Trong workflow này, bạn sẽ triển khai một ứng dụng end-to-end trên GCP, từ hạ tầng đến CI/CD và monitoring. Mục tiêu là áp dụng kiến thức về Compute, Storage, Database, Container, Messaging/Event, CI/CD và Monitoring.

1. Infrastructure as Code (Terraform)

Sử dụng Terraform để tạo toàn bộ hạ tầng:

  • VPC, Subnets, Firewall Rules
  • Cloud Storage Bucket
  • Cloud SQL instance (MySQL/PostgreSQL)
  • GKE Cluster hoặc Cloud Run
  • Pub/Sub Topic + Subscription
  • Service Accounts & IAM Roles

Best Practices:

  • Module hóa Terraform: network, compute, database, app
  • Version control trên Git
  • Không hardcode secrets, dùng Secret Manager

2. Storage

  • Cloud Storage: lưu trữ tệp tĩnh (images, videos, backups)
  • Filestore: lưu trữ dữ liệu cần chia sẻ giữa các container/VM
  • Persistent Disk: block storage cho GKE node hoặc VM

3. Compute & Container

  • Cloud Run: chạy container serverless, tự động scale
  • GKE: managed Kubernetes cluster, deploy multi-container app
  • Cloud Functions: xử lý event-driven, tích hợp với Pub/Sub hoặc Storage

4. Database

  • Cloud SQL: relational database (MySQL/PostgreSQL)
  • Firestore: NoSQL document DB cho app real-time

5. Messaging & Event

  • Pub/Sub: decouple các service, queue message
  • Eventarc: trigger Cloud Run hoặc Cloud Functions khi có event (Storage, Pub/Sub)

6. CI/CD Pipeline

Sử dụng Cloud Build để thiết lập pipeline:

  • Commit code → trigger Cloud Build
  • Build Docker image → scan image (Trivy/Container Analysis)
  • Push image vào Artifact Registry
  • Deploy lên Cloud Run / GKE
  • Run tests & validate deployment

7. Monitoring & Logging

  • Cloud Monitoring: metrics, dashboards
  • Cloud Logging: logs tập trung từ VM, Cloud Run, GKE
  • Cloud Trace / Debugger: theo dõi latency và debug production
  • Alerting: email/Slack khi vượt threshold (CPU, errors,...)

Capstone Lab: End-to-End Workflow Demo

  • Tạo Storage (Cloud Storage bucket + Filestore)
  • Deploy ứng dụng web lên Cloud Run hoặc GKE
  • Kết nối với Cloud SQL / Firestore
  • Sử dụng Pub/Sub + Eventarc trigger Cloud Function hoặc Cloud Run
  • Triển khai toàn bộ hạ tầng bằng Terraform
  • Thiết lập CI/CD pipeline với Cloud Build
  • Cấu hình Monitoring & Alerting với Cloud Monitoring, Cloud Logging
  • Quản lý IAM, Service Account, Roles, Secret Manager cho bảo mật

🌐 Tuần 7: Kiến thức và Thực hành Cloudflare

Giới thiệu

Cloudflare là một dịch vụ bảo mật và hiệu năng web toàn cầu, cung cấp CDN, DNS nhanh, WAF, DDoS Protection, Load Balancing, và nhiều giải pháp khác. Mục tiêu là tăng tốc độ tải trang, bảo vệ ứng dụng khỏi các tấn công mạng và cải thiện khả năng sẵn sàng.

1. DNS & CDN

  • DNS: Cloudflare cung cấp DNS tốc độ cao, hỗ trợ proxy để ẩn IP gốc.
  • CDN: Cache nội dung tĩnh tại các điểm PoP toàn cầu, giảm latency và tải server gốc.
  • Page Rules: Tùy chỉnh redirect, caching, security per URL.

2. Bảo mật

  • DDoS Protection: Tự động lọc traffic bất thường, bảo vệ website khỏi tấn công.
  • WAF (Web Application Firewall): Chặn các loại tấn công phổ biến như SQL Injection, XSS.
  • SSL/TLS: Hỗ trợ HTTPS miễn phí, bảo vệ dữ liệu truyền tải.
  • Rate Limiting: Giới hạn request từ IP bất thường.

3. Load Balancing & Argo

  • Load Balancing: Cân bằng tải giữa nhiều server hoặc region, với health check.
  • Argo Smart Routing: Tối ưu đường đi traffic qua mạng Cloudflare, giảm latency.

4. Workers & Serverless

  • Cloudflare Workers: Chạy JavaScript/Wasmtime ngay tại edge, xử lý request nhanh chóng.
  • Durable Objects: Quản lý trạng thái (stateful) trên edge server.

5. Analytics & Monitoring

  • Theo dõi lượng traffic, threat, performance metrics.
  • Cảnh báo khi traffic vượt ngưỡng bất thường hoặc sự cố WAF.

Lab Thực hành Cloudflare

  • Đăng ký Cloudflare, thêm một domain.
  • Cấu hình DNS record và bật proxy.
  • Bật SSL/TLS và test HTTPS.
  • Tạo Page Rules để redirect hoặc cache tệp tĩnh.
  • Bật WAF và cấu hình một số rule cơ bản để bảo vệ web.
  • Sử dụng Rate Limiting để giới hạn request bất thường.
  • Tạo một Worker để xử lý request hoặc redirect URL tùy ý.
  • Kiểm tra Analytics & Monitoring dashboard, quan sát traffic và threat logs.

Best Practices

  • Luôn bật SSL/TLS, sử dụng chế độ Full hoặc Full Strict.
  • Sử dụng WAF và Rate Limiting cho các ứng dụng công khai.
  • Cache các tệp tĩnh trên CDN để giảm tải server gốc.
  • Kiểm soát Page Rules và Workers, tránh rule chồng chéo gây lỗi.
  • Theo dõi Analytics thường xuyên để phát hiện traffic bất thường.

🌐 Tuần 8: Cloudflare Nâng cao & Workflow Thực tế

Giới thiệu

Tuần này tập trung vào cách kết hợp Cloudflare với ứng dụng thực tế (AWS hoặc GCP) để tạo một workflow end-to-end: Application → Cloudflare CDN/WAF/Workers/Argo → Monitoring & Alert. Mục tiêu là vừa tăng tốc, vừa bảo vệ và quản lý ứng dụng một cách chuyên nghiệp.

1. Cloudflare Workers & Durable Objects

  • Workers: Chạy code serverless ngay tại edge server. Xử lý request, redirect, authentication, hoặc modify header.
  • Durable Objects: Lưu trạng thái (stateful) trên edge server, ví dụ session hoặc cache động.
  • Use Case: Thay đổi response HTTP, tạo API proxy, throttle request.

2. Load Balancing & Argo Smart Routing

  • Cloudflare Load Balancer với health check tự động chọn server tốt nhất.
  • Argo Smart Routing: tối ưu đường đi traffic, giảm latency, cải thiện performance.
  • Use Case: Multi-region deployment, failover tự động.

3. WAF nâng cao & Rate Limiting

  • Custom WAF Rules: chặn IP, quốc gia, pattern URL.
  • Rate Limiting nâng cao: giới hạn số request/phút từ IP hoặc user agent bất thường.
  • Use Case: Bảo vệ API, chống brute-force login, ngăn bot traffic.

4. Monitoring & Analytics nâng cao

  • Sử dụng Cloudflare Analytics API để thu thập dữ liệu traffic, threat, performance.
  • Cấu hình Alerts để thông báo khi traffic bất thường, error rate cao hoặc WAF triggered.
  • Use Case: Dashboard realtime + Alert qua Slack/Email.

Workflow End-to-End Demo: AWS/GCP App → Cloudflare → Monitoring

  1. Ứng dụng gốc: Deploy trên AWS (EC2, ECS, RDS) hoặc GCP (Compute Engine, GKE, Cloud SQL).
  2. DNS & Proxy: Trỏ domain tới Cloudflare, bật proxy để ẩn IP gốc.
  3. CDN & Cache: Cache nội dung tĩnh (images, CSS/JS) qua Cloudflare CDN.
  4. Workers: Tạo Worker để xử lý request: authentication, redirect, header modification, A/B testing.
  5. Durable Objects: Lưu session hoặc dữ liệu cache động gần người dùng.
  6. Load Balancer & Argo: Cấu hình multi-region, tự động failover, giảm latency.
  7. WAF & Rate Limiting: Chặn attack, limit request bất thường.
  8. Monitoring & Alert: Sử dụng Cloudflare Analytics + API để tạo dashboard, gửi alert qua Slack/Email khi traffic bất thường hoặc lỗi server cao.
  9. CI/CD & IaC: Terraform để cấu hình Cloudflare (DNS, WAF, Page Rules, Workers, Load Balancer), kết hợp pipeline trên GitHub Actions hoặc GitLab CI/CD để deploy application và Cloudflare config tự động.

Lab Thực hành

  • Tạo domain và trỏ DNS về Cloudflare, bật proxy.
  • Deploy một ứng dụng đơn giản trên AWS EC2 hoặc GCP Compute Engine.
  • Bật CDN cho các tệp tĩnh, kiểm tra caching headers.
  • Tạo Worker để redirect một URL /api → backend service.
  • Sử dụng Durable Object để lưu session hoặc counter.
  • Cấu hình Load Balancer + Argo Smart Routing cho multi-region app.
  • Bật WAF và Rate Limiting, kiểm tra chặn request thử nghiệm.
  • Sử dụng Analytics API để build dashboard và alert traffic bất thường.
  • Tạo Terraform script để IaC toàn bộ Cloudflare config và deploy tự động qua CI/CD.

Best Practices

  • Luôn bật SSL/TLS Full Strict và HTTPS cho mọi endpoint.
  • Phân loại cache nội dung tĩnh vs động, dùng Workers khi cần.
  • Quản lý WAF và Rate Limiting cẩn thận, tránh block nhầm user thật.
  • Sử dụng IaC (Terraform) để cấu hình reproducible và versioned.
  • Theo dõi dashboard và alert liên tục, kết hợp với logging backend để phân tích sâu.
  • Test failover multi-region để đảm bảo ứng dụng sẵn sàng cao.

📖 Tổng hợp Tài Nguyên

Chủ đề Tên khóa học / Tài liệu Nền tảng
Linux & Docker Docker Tutorial for Beginners YouTube (TechWorld with Nana)
Networking Networking for DevOps devopsvn.tech
IaC (Terraform) Terraform - AWS Get Started Tutorial HashiCorp Learn
IaC (Pulumi) Pulumi Get Started with AWS Pulumi Docs
IaC (AWS CDK) AWS CDK Workshop cdkworkshop.com
CI/CD GitHub Actions Documentation Official Docs
Monitoring Awesome Prometheus / Grafana Fundamentals GitHub / Grafana Labs
Chaos Engineering Principles of Chaos Engineering principlesofchaos.org