SAA-C03: cấu trúc đề, cách đọc câu hỏi, bảng từ khóa → dịch vụ, lộ trình ôn 6 tuần

5 câu hỏi~50 phútTừ khóa: SAA-C03, 65 câu, 130 phút, 720/1000, 4 domain, multiple-response, keyword, loại đáp án, Skill Builder, exam guide, sample questions, error log, SAA: cả 4 domain

Tiếp đi: chiến lược thi SAA-C03. Mình đã học hết 21 bài và làm phần lớn lab, giờ muốn đăng ký thi trong khoảng một tháng rưỡi. Đề thi trông thế nào, mình nên ôn theo thứ tự gì, và cách đọc một câu hỏi dài 6 dòng toàn chữ "MOST", "LEAST" để không bị bẫy?

Bài cuối của chương không dạy thêm dịch vụ nào. Nó dạy cách biến kiến thức 21 bài thành điểm số: hiểu đề được chấm thế nào, đọc câu hỏi theo một quy trình cố định, có bảng từ khóa trong đầu, biết lỗi hay mắc, và một lộ trình 6 tuần gắn với các bài 22.x. Mọi con số về đề ở dưới lấy từ exam guide chính thức; trước khi thi hãy mở lại trang aws.amazon.com/certification để kiểm tra phiên bản hiện hành (SAA-C03 có thể được thay bằng bản mới).

1. Bài toán: biết nhiều dịch vụ nhưng vẫn trượt

Người học A sau 21 bài:
  - Nhớ hết: Multi-AZ vs Read Replica, SQS vs SNS, Gateway vs Interface endpoint
  - Làm đề thử lần 1: 58% → trượt (cần ~72%)
  - Xem lại bài sai:
      40% sai vì đọc lướt, bỏ qua chữ "LEAST operational overhead" → chọn phương án tự xây
      25% sai vì không biết dịch vụ "lạ" chỉ xuất hiện 1 câu (Transfer Family, FSx for Lustre, AppFlow)
      20% sai vì câu "Chọn HAI" chỉ chọn 1 hoặc chọn 2 đáp án cùng nhóm
      15% sai thật sự vì chưa hiểu khái niệm

Kiến thức là điều kiện cần. Đề SAA đo kỹ năng chọn thiết kế phù hợp nhất với ràng buộc, nên phần lớn điểm mất đi nằm ở cách đọc, không ở kiến thức.

2. Vấn đề: đề thi không hỏi "cái này là gì" mà hỏi "chọn gì khi…"

3. Giải pháp: hiểu đề, đọc theo quy trình, thuộc bảng từ khóa

3.1 Cấu trúc SAA-C03

MụcGiá trịGhi chú
Số câu65 (50 tính điểm + 15 unscored)Không biết câu nào unscored
Thời gian130 phútCó thể xin thêm 30 phút nếu tiếng Anh không phải tiếng mẹ đẻ (ESL accommodation) trước khi đặt lịch
Điểm đạt720 / 1000 (scaled)Thang 100–1000; không phải % thẳng nhưng tương đương khoảng 70–72% đúng
Dạng câuMultiple choice (1 đúng / 4) và multiple response (2 đúng / 5, đôi khi 3 / 6)Multiple response không có điểm phần: chọn đúng 1 trong 2 vẫn 0 điểm
Ngôn ngữTiếng Anh, Nhật, Hàn, Trung giản thể, Bồ Đào Nha, Tây Ban Nha, Pháp, Đức, Ý, IndonesiaChưa có tiếng Việt; học thuật ngữ tiếng Anh ngay từ đầu
Hình thứcPearson VUE tại trung tâm hoặc online proctoredOnline: phòng trống, webcam, không nói chuyện, không rời chỗ
Hiệu lực3 nămRecertify bằng thi lại hoặc thi cấp cao hơn (SAP)
PhíMức Associate (kiểm tra trang certification; có voucher 50% sau khi đậu một chứng chỉ khác)Thi lại chờ 14 ngày

Bốn domain và trọng số (theo exam guide SAA-C03):

Domain 1  Design Secure Architectures            30%   ≈ 15 câu tính điểm   ← bài 22.1, 22.2, 22.3, 22.14, 22.20
Domain 2  Design Resilient Architectures         26%   ≈ 13 câu            ← 22.5, 22.7, 22.11, 22.18, 22.10
Domain 3  Design High-Performing Architectures   24%   ≈ 12 câu            ← 22.4, 22.8, 22.9, 22.12, 22.16, 22.17
Domain 4  Design Cost-Optimized Architectures    20%   ≈ 10 câu            ← 22.19, 22.6, 22.13, 22.4

Chú ý: exam guide đánh số Domain 1 = Secure. Trong các bài 22.x trước, cột "Domain SAA"
dùng nhãn D1 Performance / D2 Resilient / D3 Secure / D4 Cost theo tên; khi đọc exam guide
hãy đi theo TÊN domain, không theo số.

Mỗi domain có các task statement (ví dụ Secure: "Design secure access to AWS resources", "Design secure workloads and applications", "Determine appropriate data security controls"). Exam guide liệt kê cả danh sách dịch vụ in scope và out of scope; đọc danh sách đó một lần để không ôn thừa (ví dụ không cần sâu về SageMaker).

3.2 Quy trình đọc một câu hỏi (2 phút)

Bước 1 (10 giây)  Đọc CÂU HỎI CUỐI trước: "Which solution will meet these requirements MOST cost-effectively?"
                  → gạch dưới tiêu chí thắng: COST. Biết mình đang tìm gì rồi mới đọc tình huống.
Bước 2 (40 giây)  Đọc tình huống, đánh dấu từ khóa:
                  - Hiện trạng: "on-premises", "EC2 in a single AZ", "RDS MySQL", "millions of users"
                  - Ràng buộc cứng: "must not be publicly accessible", "RPO of 5 minutes", "cannot change code"
                  - Ràng buộc mềm (tiêu chí thắng): MOST/LEAST + tính chất
Bước 3 (30 giây)  Loại đáp án:
                  - Vi phạm ràng buộc cứng → loại ngay (public subnet khi đề nói private)
                  - Dịch vụ không tồn tại / không làm được việc đó → loại (WAF trên NLB, Lambda chạy 20 phút)
                  - "Tự xây" khi đề nói LEAST operational overhead → loại
                  - Hai đáp án giống nhau chỉ khác một chi tiết → một trong hai là đáp án, so chi tiết đó
Bước 4 (20 giây)  Còn 2: chọn cái thỏa tiêu chí thắng. Nếu vẫn phân vân: chọn dịch vụ managed, native,
                  đơn giản hơn. AWS hiếm khi lấy "viết script cron trên EC2" làm đáp án.
Bước 5 (10 giây)  Multiple response: đếm lại số đáp án đã chọn. Flag câu nếu không chắc, đi tiếp.
Không bao giờ bỏ trống: không trừ điểm câu sai.

3.3 Bảng từ khóa → dịch vụ (thuộc như bảng cửu chương; gom cả bảng nhỏ của các bài trước)

#Từ khóa trong đềNghĩ ngay tớiBài
1"temporary credentials", "cross-account access"IAM role + STS AssumeRole22.2
2"restrict what member accounts can do", "guardrail"Organizations SCP22.2
3"developers can create roles but not escalate"Permission boundary22.2
4"stateless firewall at subnet level", "block specific IP"Network ACL22.3
5"stateful", "allow only from load balancer"Security Group referencing SG22.3
6"private subnet access S3/DynamoDB without Internet", "reduce NAT cost"Gateway VPC Endpoint22.3, 22.19
7"private access to other AWS services / SaaS", "PrivateLink"Interface Endpoint22.3
8"connect many VPCs and on-premises, hub and spoke"Transit Gateway22.3
9"dedicated private connection, consistent bandwidth"Direct Connect (+ VPN backup)22.3
10"low-latency between instances", "HPC"Cluster placement group (+ EFA)22.4
11"critical instances on separate hardware"Spread placement group22.4
12"temporary high-IOPS scratch data lost on stop"Instance store22.4
13"fault-tolerant", "batch", "interruptions acceptable"Spot Instances22.19
14"steady-state 1–3 years", "flexibility to change instance family / Fargate"Compute Savings Plans22.19
15"BYOL per-socket", "dedicated physical server"Dedicated Host22.19
16"route by URL path / host header", "HTTP/HTTPS, WebSocket"Application Load Balancer22.5
17"millions of requests/sec", "static IP", "TCP/UDP", "TLS passthrough"Network Load Balancer22.5
18"third-party firewall appliances inline"Gateway Load Balancer22.5
19"scale before predictable traffic spike"Scheduled or Predictive scaling22.5
20"unknown or changing access pattern", S3S3 Intelligent-Tiering22.6
21"archive, retrieve within minutes / 12 hours / cheapest"Glacier Instant / Flexible / Deep Archive22.6
22"prevent object deletion for compliance", "WORM"S3 Object Lock (Compliance mode)22.6
23"upload large files from far away faster"S3 Transfer Acceleration / multipart upload22.6
24"users upload directly to S3 without credentials"Presigned URL22.6
25"database failover automatically, synchronous standby"RDS Multi-AZ22.7
26"scale read traffic", "reporting without impacting production"Read Replica22.7
27"Lambda opens too many DB connections"RDS Proxy22.7
28"cross-region database with < 1 second replication lag"Aurora Global Database22.7
29"single-digit millisecond", "key-value", "serverless database"DynamoDB22.8
30"microsecond read latency for DynamoDB"DAX22.8
31"expire items automatically"DynamoDB TTL22.8
32"multi-region active-active key-value"DynamoDB Global Tables22.8
33"session store", "leaderboard", "sub-millisecond cache with persistence"ElastiCache Redis22.9
34"simple cache, multi-threaded, no persistence"ElastiCache Memcached22.9
35"route users to nearest region", "weighted / failover / latency routing"Route 53 routing policies22.10
36"cache static and dynamic content at edge", "restrict S3 to CDN only"CloudFront + OAC22.10
37"static anycast IPs", "improve TCP/UDP performance globally", "fast regional failover"Global Accelerator22.10
38"decouple", "buffer requests", "at-least-once"SQS Standard22.11
39"exactly-once processing", "strict ordering"SQS FIFO22.11
40"fan-out to multiple subscribers", "push notification"SNS (+ SQS subscribers)22.11
41"route events by content", "schedule", "SaaS events", "audit API events"EventBridge22.11
42"messages failed after N attempts"Dead-letter queue22.11
43"migrate RabbitMQ / ActiveMQ with minimal code change"Amazon MQ22.11
44"run code without servers", "event-driven", "up to 15 minutes"Lambda22.12
45"Java cold start"Lambda SnapStart / provisioned concurrency22.12
46"orchestrate multi-step workflow with retries"Step Functions22.12
47"throttling, API keys, usage plans, caching for REST API"API Gateway22.12
48"containers without managing servers"ECS Fargate22.13
49"Kubernetes", "portable across clouds"EKS22.13
50"encrypt with customer-managed key, audit key usage, rotate"KMS CMK + CloudTrail22.14
51"automatic rotation of database password"Secrets Manager22.14
52"store config, free, no rotation needed"SSM Parameter Store22.14
53"FIPS 140-2 Level 3", "single-tenant HSM"CloudHSM22.14
54"who called which API", "governance"CloudTrail22.15
55"resource configuration history", "compliance rule", "auto-remediate"AWS Config22.15
56"trace requests across microservices", "find bottleneck"X-Ray22.15
57"query logs ad hoc", "metric from log pattern"CloudWatch Logs Insights / metric filter22.15
58"shared file system across many EC2 / Linux", "POSIX"EFS22.16
59"Windows file share, SMB, Active Directory"FSx for Windows File Server22.16
60"HPC, machine learning, hundreds of GB/s, linked to S3"FSx for Lustre22.16
61"on-premises app keeps using NFS/SMB/iSCSI but data in S3"Storage Gateway (File / Volume / Tape)22.16
62"transfer petabytes with limited bandwidth", "offline"Snowball Edge / Snowmobile22.16
63"online transfer on-prem NFS to S3/EFS, scheduled, verify"DataSync22.16
64"SFTP/FTPS into S3"Transfer Family22.16
65"real-time streaming, multiple consumers, replay"Kinesis Data Streams22.17
66"deliver streaming data to S3/Redshift/OpenSearch, near real-time, no code"Kinesis Data Firehose22.17
67"SQL on data in S3, serverless, pay per query"Athena (+ Glue Data Catalog)22.17
68"ETL serverless", "crawl schema"Glue22.17
69"petabyte data warehouse", "BI queries"Redshift (+ Spectrum)22.17
70"full-text search, log analytics dashboards"OpenSearch Service22.17
71"RTO/RPO hours, lowest cost DR"Backup & Restore22.18
72"core services running minimal, scale on disaster"Pilot Light22.18
73"scaled-down full copy always running"Warm Standby22.18
74"near-zero RTO/RPO, highest cost"Multi-site active-active22.18
75"migrate database with minimal downtime, heterogeneous"DMS (+ SCT)22.18
76"lift-and-shift servers to AWS"Application Migration Service (MGN)22.18
77"centralized backup policy across services and accounts"AWS Backup22.18
78"visualize cost", "forecast", "alert on spend"Cost Explorer / Budgets22.19
79"right-size based on utilization"Compute Optimizer22.19
80"SQL injection", "rate limit per IP", "geo block"WAF22.20
81"DDoS with cost protection and response team"Shield Advanced22.20
82"intelligent threat detection, no agent"GuardDuty22.20
83"CVE scan EC2/ECR/Lambda"Inspector22.20
84"PII in S3"Macie22.20
85"aggregate security findings, compliance standards"Security Hub22.20
86"app users sign-up/sign-in, social login" / "temporary AWS credentials for app users"Cognito user pool / identity pool22.20
87"workforce SSO to many accounts"IAM Identity Center22.20
88"review architecture against best practices"Well-Architected Tool22.21

3.4 Lỗi thường gặp và cách sửa

LỗiVí dụSửa
Bỏ qua tiêu chí thắngĐề nói LEAST operational overhead, chọn "EC2 với cron script" vì "mình làm được"Đọc câu hỏi cuối trước, viết tắt tiêu chí ra giấy nháp (C / O / S / A / P)
Chọn đáp án "đúng kỹ thuật" nhưng thừaDev environment chịu downtime, chọn Multi-AZ + multi-region"can tolerate downtime", "development" = chọn rẻ nhất đạt yêu cầu
Nhầm cặp hay soMulti-AZ (HA) vs Read Replica (đọc); Gateway (S3/DynamoDB) vs Interface endpoint; user pool vs identity pool; SQS (pull) vs SNS (push); CloudFront (cache HTTP) vs Global Accelerator (TCP/UDP, static IP)Ôn bảng "So sánh" mục 6 của từng bài; tự viết lại 15 cặp từ trí nhớ
Multiple response thiếu/thừa"Chọn HAI" nhưng chỉ chọn 1; hoặc chọn 2 đáp án cùng giải quyết một việcHai đáp án đúng thường giải quyết hai phần khác nhau của yêu cầu (compute + database)
Không biết giới hạn cứngLambda 15 phút, 10 GB memory; SQS message 256 KB, giữ tối đa 14 ngày; S3 object 5 TB; EBS gắn 1 instance (trừ io1/io2 Multi-Attach); RDS storage tự scale nhưng không tự giảm; Kinesis giữ 24h–365 ngàyLập "thẻ số" 20 con số; đề hay bẫy bằng số ngoài giới hạn
Chọn đáp án có từ khóa quenThấy "real-time" chọn Kinesis dù đề cần "deliver to S3 without code" (Firehose)Từ khóa chỉ gợi ý; kiểm tra đáp án với cả câu
Quản lý thời gianMắc 6 phút ở câu 12Quá 3 phút → chọn tạm, flag, đi tiếp; dành 15 phút cuối cho câu flag
Ôn dịch vụ ngoài scopeDành 1 tuần cho SageMakerĐọc danh sách in-scope trong exam guide; dịch vụ ML/AI chỉ cần biết tên và một dòng mô tả
Chỉ đọc, không làm labKhông hiểu vì sao Gateway endpoint cần sửa route tableCâu nào sai mà có lab 22.x liên quan → làm lại lab đó

4. Lộ trình ôn 6 tuần (10–12 giờ/tuần)

TuầnTrọng tâmBài / LabĐầu ra đo được
1Secure: IAM, VPC, KMS. Đọc exam guide, đăng ký Skill Builder22.1, 22.2, 22.3, 22.14 + lab 22.3 (VPC) và 22.14 (secret)Vẽ được VPC 2 AZ từ trí nhớ; viết được 3 IAM policy mẫu; làm 20 câu Secure, ghi error log
2Resilient: ELB/ASG, RDS, messaging22.5, 22.7, 22.11 + lab 22.5 và 22.7 (failover thử)Giải thích Multi-AZ vs Read Replica vs Aurora Global trong 1 phút; 20 câu Resilient
3High-performing: compute, DynamoDB, cache, edge, serverless22.4, 22.8, 22.9, 22.10, 22.12 + lab 22.8 và 22.12Bảng 10 cặp so sánh viết từ trí nhớ; 20 câu Performance
4Cost + storage + analytics + DR22.6, 22.13, 22.16, 22.17, 22.18, 22.19 + lab 22.19Thuộc 5 pricing model và 4 chiến lược DR; 20 câu Cost; đề thử số 1 (65 câu, tính giờ)
5Security services, Well-Architected, ôn error log22.20, 22.21 + lab 22.21 (dựng và dọn cả stack)Đề thử số 2 và 3; mỗi đề > 75%; error log phân loại theo 4 nguyên nhân ở mục 1
6Chốt: thẻ số, bảng từ khóa, sample questions chính thức, nghỉBài này; đọc lại "Cách nhớ ngắn gọn" của 21 bàiĐề thử số 4 > 80%; ngày trước thi không học mới; kiểm tra ID, phòng thi/online check-in

Nếu chỉ có 3 tuần: gộp tuần 1+2, 3+4, giữ tuần 5–6 làm đề. Nếu đề thử số 1 dưới 60%, kéo dài thêm 2 tuần thay vì dời ngày thi vào phút cuối.

Tài nguyên luyện đề chính thống (chỉ nêu nguồn, không nêu link con vì hay đổi; tất cả đi từ aws.amazon.com/certification):

5. Cách hoạt động: một câu hỏi đi qua quy trình

Đề: "A company runs a web application on EC2 instances behind an ALB in a single AZ. The database
     is an RDS MySQL Single-AZ instance. Users report downtime during AZ maintenance events.
     The company wants the application to remain available during an AZ failure with MINIMAL
     changes to the application. Which combination of steps should a solutions architect take?
     (Choose TWO.)"
   A. Migrate the database to DynamoDB global tables.
   B. Enable Multi-AZ on the RDS instance.
   C. Launch instances in a second AZ and register them with the ALB using an Auto Scaling group.
   D. Create a read replica in another Region and point the application to it.
   E. Put CloudFront in front of the ALB.

Bước 1  Câu hỏi cuối: "remain available during AZ failure" + "MINIMAL changes" + "Choose TWO"
        → tiêu chí: Availability (Reliability), ràng buộc cứng: ít thay đổi app
Bước 2  Hiện trạng: 1 AZ cho EC2, RDS Single-AZ → hai điểm yếu riêng biệt → hai đáp án sẽ sửa hai thứ
Bước 3  Loại: A (đổi DB engine = thay đổi lớn), D (replica khác region không tự failover, đổi endpoint),
        E (CDN không giải quyết AZ failure)
Bước 4  Còn B (DB) + C (compute): đúng hai lớp → chọn B và C
Bước 5  Đếm: 2 đáp án. Xong trong ~90 giây.

6. So sánh: SAA-C03 với các chứng chỉ gần

Cloud Practitioner (CLF)SAA-C03Developer Associate (DVA)SA Professional (SAP)
Hỏi gìKhái niệm, giá, dịch vụ là gìChọn thiết kế theo ràng buộcCode với SDK, Lambda, API GW, CI/CD, debugThiết kế đa account, migration lớn, trade-off phức tạp
Câu / phút65 / 9065 / 13065 / 13075 / 180
Điểm đạt700720720750
Cho Java backend devKhông cần nếu thi thẳng SAANền tảng kiến trúc, nhà tuyển dụng hay yêu cầuSát công việc code hơn; học sau SAA thì rất nhanhKhi làm architect/lead

7. Khi nào nên thi / chưa nên

Mình hay mất điểm ở câu "Choose TWO": chọn đúng một cái, cái kia sai, mất trọn câu. Có chiến thuật riêng cho dạng này không? Và có bao nhiêu câu dạng này trong đề?

Đúng rồi, multiple response không có điểm phần nên nó "đắt" hơn câu thường. Số lượng không công bố cố định; kinh nghiệm phổ biến là khoảng 8–15 câu trong 65. Chiến thuật dựa trên một quan sát: hai đáp án đúng gần như luôn giải quyết hai phần khác nhau của yêu cầu.

1. Tách yêu cầu thành các phần

Đề: "...application must be highly available AND data must be encrypted at rest. (Choose TWO)"
     → phần 1: HA (compute/db)      → phần 2: encryption
     Hai đáp án đúng: một về HA, một về encryption.
     Hai đáp án cùng về HA (Multi-AZ RDS và ASG multi-AZ) không thể cùng đúng nếu chỉ có 1 phần HA
     — trừ khi đề nêu cả compute và database đều single-AZ (như ví dụ ở mục 5).

2. Ba mẫu hay gặp

MẫuDấu hiệuCách chọn
Hai lớp (compute + data)Hiện trạng mô tả cả EC2 và RDS đều có điểm yếuMột đáp án sửa compute, một sửa data
Hai yêu cầu (AND)"must X and must Y"Một đáp án cho X, một cho Y; loại đáp án làm cả hai nhưng vi phạm ràng buộc
Một giải pháp hai bước"to implement this, which steps…"Hai đáp án là hai bước phụ thuộc nhau (tạo endpoint + sửa route table; tạo OAC + sửa bucket policy)

3. Loại trừ theo cặp

Trong 5 đáp án thường có một cặp "giống nhau chỉ khác chi tiết" (ví dụ: "Standard RI" vs "Convertible RI"). Chỉ một trong cặp đúng, không bao giờ cả hai. Nếu bạn đã chọn một đáp án trong cặp, đáp án còn lại loại ngay; đáp án thứ hai phải ở nhóm khác.

4. Đếm trước khi bấm Next

Giao diện Pearson VUE cho tick nhiều ô mà không báo thiếu. Thói quen: đọc lại dòng "(Choose TWO)" rồi đếm ô đã tick. Với câu 3/6, cũng vậy.

Bạn nhắc "error log" nhiều lần. Mình nên ghi gì vào đó cho hiệu quả, chứ chép lại câu sai thì mình thấy không giúp nhớ hơn?

Chép lại câu sai đúng là ít giá trị. Error log có ích khi nó ghi vì sao sai và sẽ làm gì khác, rồi được đếm theo nhóm để biết cần sửa cách đọc hay sửa kiến thức.

1. Mẫu một dòng

| # | Đề/nguồn | Domain | Chủ đề (bài 22.x) | Mình chọn | Đáp án | Loại lỗi | Bài học một câu | Việc tiếp |
| 17 | SB set 1 Q9 | Secure | Endpoint (22.3) | Interface | Gateway | NHẦM-CẶP | S3/DynamoDB = Gateway, còn lại Interface | làm lại lab 22.3 bước endpoint |
| 18 | SB set 1 Q14 | Cost | Pricing (22.19) | RI | Compute SP | BỎ-QUA-TỪ-KHÓA | "may move to Fargate" = SP | thêm vào bảng từ khóa |
| 19 | đề thử 2 Q31 | Perf | FSx (22.16) | EFS | FSx Lustre | KHÔNG-BIẾT | "HPC + S3 linked" = Lustre | đọc FAQ FSx 15 phút |

Bốn loại lỗi: BỒ-QUA-TỪ-KHÓA (đọc), NHẦM-CẶP (so sánh), KHÔNG-BIẾT (kiến thức), THỜI-GIAN/ĐẾM (kỹ thuật làm bài). Mỗi cuối tuần đếm: nếu "đọc" trên 40% thì tuần sau luyện quy trình 5 bước, không học thêm dịch vụ.

2. Ôn lại theo khoảng cách

Dòng nào ghi ngày; xem lại sau 2 ngày, 7 ngày, 21 ngày: che cột đáp án, trả lời lại từ "Bài học một câu". Câu nào 3 lần đúng thì gạch.

3. Về đề bên thứ ba

Cho mình bài lab để tự tay làm phần này nhé. Bài này không dựng gì trên AWS, vậy lab là làm một bộ đề mẫu đúng cách và ghi lại sai à?

Lab 22.22: Làm một bộ đề mẫu đúng điều kiện thi và dựng error log

Mục tiêu

Chi phí & thời gian

Chuẩn bị

mkdir -p ~/saa-prep && cd ~/saa-prep
cat > error-log.csv <<'EOF'
id,date,source,domain,topic,lesson,my_answer,correct,error_type,lesson_learned,next_action,review_1,review_2,review_3
EOF
# error_type ∈ {KEYWORD, PAIR, UNKNOWN, TIME_COUNT, BAD_QUESTION}
# domain ∈ {Secure, Resilient, Performance, Cost}

Các bước

Bước 1. Làm đề đúng điều kiện (130 phút). Áp quy trình 5 bước cho từng câu. Trên giấy nháp, mỗi câu ghi 1 dòng: số câu, tiêu chí thắng viết tắt (C/O/S/A/P), và dấu ? nếu đoán. Quá 3 phút một câu → chọn tạm, đánh dấu F, đi tiếp. 15 phút cuối quay lại câu F.

Console: không có; đây là bài trên Skill Builder hoặc nền tảng đề. Nếu dùng Official Practice Exam, bật chế độ tính giờ, không bật "show answer after each question".

Bước 2. Chấm và phân loại (30 phút). Với mỗi câu sai và mỗi câu đúng có dấu ?, thêm một dòng vào log. Bắt buộc điền error_type và lesson_learned (một câu, bắt đầu bằng từ khóa của đề). Ví dụ:

cat >> error-log.csv <<'EOF'
1,2026-10-21,OfficialPE-1 Q7,Resilient,RDS,22.7,ReadReplica,Multi-AZ,PAIR,"'automatic failover' = Multi-AZ; Read Replica là scale đọc","viết lại bảng so sánh 22.7 mục 6",,,
2,2026-10-21,OfficialPE-1 Q12,Cost,Endpoint,22.3,NAT instance,Gateway endpoint,KEYWORD,"'reduce NAT cost to S3' = Gateway endpoint miễn phí","làm lại lab 22.3 bước endpoint",,,
3,2026-10-21,OfficialPE-1 Q40,Performance,FSx,22.16,EFS,FSx Lustre,UNKNOWN,"'HPC, linked to S3' = FSx for Lustre","đọc FAQ FSx 15 phút",,,
4,2026-10-21,OfficialPE-1 Q55,Secure,Cognito,22.20,user pool,identity pool,PAIR,"'temporary AWS credentials for mobile users' = identity pool","đọc lại 22.20 mục 3.4",,,
EOF

Bước 3. Thống kê (10 phút).

# % đúng theo domain: nhập tay số câu mỗi domain từ đề (ước lượng theo tỉ lệ 30/26/24/20 nếu đề không ghi)
# Số lỗi theo loại:
tail -n +2 error-log.csv | awk -F, '{print $9}' | sort | uniq -c | sort -rn
# Số lỗi theo bài 22.x:
tail -n +2 error-log.csv | awk -F, '{print $6}' | sort | uniq -c | sort -rn
# Số lỗi theo domain:
tail -n +2 error-log.csv | awk -F, '{print $4}' | sort | uniq -c | sort -rn

Ghi 3 dòng kết luận vào đầu file plan-next-week.md: (1) điểm tổng và theo domain, (2) loại lỗi lớn nhất, (3) 3 bài 22.x sẽ ôn lại.

Bước 4. Đóng 3 câu sai bằng tay (60–120 phút). Chọn 3 dòng có next_action là lab:

Sau mỗi lab, sửa cột lesson_learned nếu hiểu khác đi và điền review_1 bằng ngày hôm nay.

Bước 5. Lịch ôn lại. Thêm vào lịch 3 mốc: +2 ngày, +7 ngày, +21 ngày. Mỗi mốc: che cột correct, đọc source + topic, trả lời; đúng thì điền ngày vào review_N.

Kiểm tra kết quả

wc -l error-log.csv                 # >= số câu sai + câu đoán + 1 (header)
grep -c ",KEYWORD," error-log.csv   # so với tổng để biết tỷ lệ lỗi đọc
grep -c ",,,$" error-log.csv        # dòng chưa review lần nào (mong đợi giảm sau 2 ngày)
cat plan-next-week.md               # có 3 dòng kết luận

Mong đợi ở đề đầu: 60–70% đúng, lỗi KEYWORD + PAIR chiếm hơn nửa. Ở đề thứ 3–4 (tuần 5–6): trên 78%, lỗi KEYWORD dưới 20%.

Thử thêm

Dọn tài nguyên

# Lab này không tạo tài nguyên AWS. Nếu ở bước 4 bạn làm lại lab 22.x:
# - theo đúng phần "Dọn tài nguyên" của lab đó
# - rồi xác nhận không còn gì tốn tiền:
aws resourcegroupstaggingapi get-resources --tag-filters Key=Project,Values=shop-app \
  --query 'ResourceTagMappingList[].ResourceARN' --output text --region $AWS_REGION --profile shop-lab | tr '\t' '\n'
# Mong đợi: chỉ IAM role, KMS key, Secrets Manager nếu giữ có chủ ý (xem 22.21)
# Giữ error-log.csv tới ngày thi, và sau đó: nó là tài liệu ôn recertify tốt nhất bạn có.

Không nằm trong Free Tier nếu quên khi làm lại lab: RDS Multi-AZ (nếu bật để thử failover), NAT Gateway, ALB, WAF web ACL.

Phỏng vấn hỏi về chứng chỉ SAA thì trả lời sao để không bị xem là "chỉ học thuộc"? Và cho mình một Góc thi cuối trộn cả 4 domain để tự kiểm tra.

Q1. Bạn có chứng chỉ SAA; nó giúp gì cho công việc Java backend?

🇻🇳 Tiếng Việt:

Chứng chỉ cho em một khung chung để nói chuyện với DevOps và architect: khi thiết kế service mới em biết đặt câu hỏi về RTO/RPO, chọn Multi-AZ hay multi-region, dùng queue ở đâu, secret để đâu, chi phí NAT hay data transfer ảnh hưởng thế nào. Quan trọng hơn là phần thực hành đi kèm: em đã tự dựng một stack Spring Boot đầy đủ trên AWS với VPC, ALB, ASG, RDS, SQS, Lambda, WAF và dọn bằng script theo tag, nên khi gặp sự cố production em đọc được kiến trúc thật, không chỉ thuộc tên dịch vụ.

🇬🇧 English:

The certification gives me a shared vocabulary with DevOps and architects: when I design a new service I know to ask about RTO/RPO, Multi-AZ versus multi-region, where a queue belongs, where secrets live, and how NAT or data transfer affects cost. More importantly, I paired it with hands-on work: I built a complete Spring Boot stack on AWS with VPC, ALB, Auto Scaling, RDS, SQS, Lambda and WAF, and tore it down with a tag-based script, so in a production incident I can read the real architecture rather than just recall service names.

Q2. Kể một trường hợp bạn chọn khác với "đáp án đúng của đề thi" trong dự án thật.

🇻🇳 Tiếng Việt:

Đề thi thường chọn dịch vụ managed, ví dụ Cognito cho đăng nhập. Trong dự án thật team đã có Keycloak với flow tùy biến và SAML cho đối tác, nên em giữ Keycloak trên ECS và chỉ đưa phần resource server, WAF và GuardDuty lên AWS. Lý do là chi phí chuyển đổi và rủi ro cao hơn lợi ích. Em ghi quyết định đó lại kèm điều kiện sẽ xem lại, đúng tinh thần Well-Architected là hiểu trade-off chứ không phải chọn theo mẫu.

🇬🇧 English:

The exam usually favors managed services, for example Cognito for authentication. In a real project the team already had Keycloak with customized flows and SAML for partners, so I kept Keycloak on ECS and only moved the resource server, WAF and GuardDuty to AWS. The migration cost and risk outweighed the benefit. I documented the decision with a condition for revisiting it, which is the Well-Architected mindset: understand the trade-off instead of following a template.

Q3. Bạn ôn thi thế nào? (câu hỏi về cách học)

🇻🇳 Tiếng Việt:

Em học theo domain, mỗi domain đi kèm lab tự tay trên một project ví dụ xuyên suốt. Em làm bốn đề tính giờ, giữ error log phân loại lỗi theo đọc đề, nhầm cặp, thiếu kiến thức, và ôn lại theo khoảng cách 2, 7, 21 ngày. Nhờ đó em biết lỗi của mình ở đâu thay vì học lại từ đầu.

🇬🇧 English:

I studied by domain, pairing each domain with hands-on labs on one running example project. I took four timed practice exams and kept an error log that classifies mistakes as reading errors, confused pairs or knowledge gaps, reviewing them at 2, 7 and 21 days. That told me exactly where my weaknesses were instead of restarting from scratch.

Góc thi SAA-C03

Câu 1 (Secure): Ứng dụng trên EC2 trong private subnet cần đọc object từ S3. Yêu cầu: traffic không đi qua Internet và chỉ bucket của công ty được truy cập từ VPC. Giải pháp nào đáp ứng?
A. NAT Gateway + bucket policy cho phép VPC CIDR
B. S3 Gateway Endpoint với endpoint policy giới hạn bucket, và bucket policy có điều kiện aws:SourceVpce
C. S3 Interface Endpoint với Security Group
D. Gắn Elastic IP cho EC2 và dùng bucket policy theo IP

Đáp án: B. Gateway endpoint giữ traffic trong mạng AWS, endpoint policy giới hạn bucket, bucket policy với aws:SourceVpce chỉ cho phép từ endpoint đó. A vẫn đi qua NAT ra public endpoint. C hoạt động nhưng tốn phí và SG không giới hạn được bucket; không phải đáp án tốt nhất. D đưa EC2 ra public, trái yêu cầu.

Câu 2 (Resilient): Hệ thống xử lý đơn hàng ghi vào RDS PostgreSQL. Khi có khuyến mãi, lượng ghi tăng đột biến làm DB quá tải và mất đơn. Công ty muốn không mất đơn và DB không bị quá tải, với thay đổi ít nhất trong app. Giải pháp?
A. Tăng instance class của RDS lên lớn nhất
B. Đặt SQS queue giữa API và worker ghi DB; worker scale theo độ dài queue
C. Tạo nhiều Read Replica
D. Chuyển sang DynamoDB on-demand

Đáp án: B. Queue hấp thụ đỉnh, worker ghi với tốc độ DB chịu được, message không mất (giữ tới 14 ngày, DLQ cho lỗi). A tốn tiền và vẫn có giới hạn. C giúp đọc, không giúp ghi. D đổi engine là thay đổi lớn.

Câu 3 (Performance): Ứng dụng Java trên Lambda bị cold start 4–6 giây làm người dùng phàn nàn; traffic ổn định khoảng 50 request đồng thời. Cách nào giảm độ trễ hiệu quả về chi phí?
A. Tăng memory lên 10 GB
B. Bật Lambda SnapStart cho Java runtime
C. Chuyển sang EC2 với ASG
D. Gọi Lambda bằng cron mỗi phút để giữ ấm

Đáp án: B. SnapStart chụp snapshot môi trường đã khởi tạo, giảm cold start Java đáng kể, không phí thêm ngoài phí Lambda thông thường (kiểm tra pricing hiện hành). A tăng CPU nhưng không giải quyết gốc, tốn hơn. C thay kiến trúc. D không đảm bảo 50 instance ấm và là anti-pattern. Provisioned concurrency cũng đúng kỹ thuật nhưng tốn hơn SnapStart cho yêu cầu này.

Câu 4 (Cost): Công ty lưu log ứng dụng vào S3, cần truy cập thường trong 30 ngày, hiếm khi trong 1 năm tiếp theo, phải giữ 7 năm để tuân thủ và chấp nhận chờ 12 giờ khi cần. Lifecycle nào rẻ nhất?
A. Standard 30 ngày → Standard-IA 1 năm → Glacier Deep Archive tới 7 năm → expire
B. Standard 7 năm
C. Intelligent-Tiering 7 năm
D. Standard 30 ngày → One Zone-IA 7 năm

Đáp án: A. Đúng theo tần suất truy cập; Deep Archive rẻ nhất, lấy ra trong 12 giờ đáp ứng yêu cầu. B đắt nhất. C linh hoạt nhưng không rẻ bằng khi access pattern đã biết rõ, và có phí monitoring. D One Zone-IA không phù hợp dữ liệu tuân thủ (mất nếu AZ hỏng) và đắt hơn Deep Archive cho 7 năm.

Câu 5 (trộn, Choose TWO): Công ty có 30 AWS account trong Organizations. Yêu cầu: (1) nhân viên đăng nhập một lần vào mọi account bằng tài khoản Entra ID, (2) phát hiện access key bị dùng từ IP lạ trên toàn tổ chức. Chọn HAI.
A. Tạo IAM user trong từng account và đồng bộ password
B. Cấu hình IAM Identity Center với Entra ID làm identity source và permission set
C. Bật GuardDuty với delegated administrator cho toàn Organization
D. Bật Macie trên mọi account
E. Dùng Cognito user pool federated với Entra ID

Đáp án: B và C. Hai yêu cầu, hai lớp: workforce SSO = IAM Identity Center (B); phát hiện hành vi credential bất thường = GuardDuty, quản lý tập trung bằng delegated admin (C). A là anti-pattern. D tìm PII trong S3, không liên quan. E Cognito dành cho khách hàng của ứng dụng, không cho truy cập Console đa account.

Cách nhớ ngắn gọn

Tiêu chí thắng trong đềThiên về
MOST cost-effectiveRẻ nhất trong số đáp án đạt yêu cầu: Spot, SP, Gateway endpoint, lifecycle, serverless khi traffic thấp
LEAST operational overhead / effortManaged, serverless, native integration; không EC2 tự cài, không script
MOST securePrivate subnet, IAM role, KMS CMK, endpoint, least privilege, MFA
HIGHEST availability / fault tolerantMulti-AZ tối thiểu, ASG, queue, health check; multi-region nếu đề nói region failure
Improve performance / reduce latencyCache (ElastiCache, DAX, CloudFront), read replica, Global Accelerator, placement group
MINIMAL changes to applicationThay hạ tầng, giữ engine/protocol: Multi-AZ, Amazon MQ, RDS Proxy, Storage Gateway
Near real-time / real-timeKinesis, Lambda, EventBridge, DynamoDB Streams

Hết chương AWS. Bài kế tiếp tổng kết Learning Outcome và bài tập xuyên chương.


Tự kiểm tra

SAA-C03 có bao nhiêu câu, bao nhiêu phút, điểm đạt, và bốn domain với trọng số?

65 câu (50 tính điểm, 15 unscored), 130 phút, 720/1000. Secure 30%, Resilient 26%, High-Performing 24%, Cost-Optimized 20%.

Năm bước đọc một câu hỏi theo thứ tự?

Đọc câu hỏi cuối và gạch tiêu chí thắng → đọc tình huống, đánh dấu ràng buộc cứng/mềm → loại đáp án vi phạm ràng buộc hoặc không khả thi → chọn giữa 2 còn lại theo tiêu chí thắng, ưu tiên managed → đếm số đáp án, flag nếu không chắc.

Vì sao câu "Choose TWO" rủi ro hơn và chiến thuật là gì?

Không có điểm phần: đúng 1/2 vẫn 0. Chiến thuật: tách yêu cầu thành hai phần, mỗi đáp án đúng giải quyết một phần; cặp đáp án giống nhau chỉ một đúng; đếm trước khi Next.

Error log cần những cột nào để hữu ích hơn việc chép câu sai?

Loại lỗi (KEYWORD, PAIR, UNKNOWN, TIME_COUNT), bài học một câu bắt đầu bằng từ khóa đề, việc tiếp theo (lab/FAQ), và ba mốc ôn lại 2-7-21 ngày.

Khi đề bên thứ ba giải thích khác doc AWS thì làm gì?

Tin doc AWS (FAQ, exam guide, sample questions, Skill Builder), đánh dấu BAD_QUESTION trong log và bỏ qua; không làm cùng đề quá 2 lần để tránh nhớ đáp án.

🧪 Thực hành bài này: Challenge: Kiến trúc tham chiếu + DR + cost (chưa triển khai) · lab labs/aws