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ạo và khả 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
- Tạo một thư mục tên là
devops_practicetrong thư mục/tmp. - Bên trong thư mục đó, tạo một file tên là
app.log. - Ghi dòng chữ "Application started successfully" vào file
app.log. - Kiểm tra quyền của file
app.log. - Tạo một script tên là
cleanup.shcó nội dung xóa thư mụcdevops_practice. - Cấp quyền thực thi cho file
cleanup.shvà 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
- Tạo biến môi trường
APP_MODE=developmentvà in ra giá trị của nó. - Nén file
app.logthànhapp.log.gzvà so sánh dung lượng trước/sau. - Khởi động lại dịch vụ
nginx(nếu có) và xem log trong/var/log/nginx/error.log. - Sử dụng
scpđể gửi fileapp.log.gzsang 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.
1.10
1.20
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ô 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
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.
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
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
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
- Sử dụng lệnh
pingđể kiểm tra xem máy của bạn có thể truy cập đến8.8.8.8(Google DNS) hay không. - Dùng
traceroute google.comđể xem dữ liệu đi qua bao nhiêu router trung gian. - 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,...). - Liệt kê các port đang mở trên hệ thống bằng
ss -tulnhoặcnetstat -tuln. - Kiểm tra bản ghi DNS của một domain bằng
nslookuphoặcdig.
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:
- Từ laptop của bạn, SSH vào EC2-A.
- Từ EC2-A, SSH vào EC2-B qua Private IP.
- 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:
| 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.
| 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?".
| 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.
| 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.
| 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.
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.
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 projectterraform plan- xem trước thay đổiterraform apply- áp dụng thay đổiterraform 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 fmtvàterraform 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
variablehoặ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.