Mục tiêu học tập
- Hiểu OpenSearch Service/Serverless: search, log analytics, dashboards
- Ôn vị trí RDS/Aurora trong bức tranh data
- Tổng hợp decision matrix chọn data store — kỹ năng ăn điểm Domain 2
- Luyện phản xạ ghép use case → store
1. Amazon OpenSearch Service
Khái niệm
Managed OpenSearch (fork Elasticsearch): full-text search, log analytics, visualization (OpenSearch Dashboards — fork Kibana).
- Domain gồm data nodes (+ dedicated master, UltraWarm/cold storage cho log cũ rẻ hơn)
- OpenSearch Serverless: collection (search / time series / vector), OCU tự scale — không quản node
- Ingest: Firehose → OpenSearch (chuẩn), OpenSearch Ingestion (pipeline managed), Lambda, zero-ETL từ DynamoDB/S3 query trực tiếp
- Use case: tìm kiếm sản phẩm/tài liệu, log/APM realtime, security analytics, vector search
Không phải: warehouse SQL (JOIN/aggregate BI phức tạp → Redshift), nguồn sự thật (không thay S3/DB).
Index lifecycle cho log
Hot (SSD data nodes) → UltraWarm (S3-backed, đọc) → Cold → Delete
ISM (Index State Management) policy tự chuyển
"Log 7 ngày realtime, 90 ngày thi thoảng đọc, chi phí thấp" → hot + UltraWarm + ISM.
2. RDS/Aurora trong bức tranh data engineering
- OLTP (giao dịch, row-based) — nguồn dữ liệu cho pipeline, không phải nơi chạy analytics nặng
- Analytics trên dữ liệu OLTP: read replica (nhẹ), zero-ETL → Redshift (chuẩn hiện nay), DMS CDC → lake
- Chạy report nặng trực tiếp trên production RDS = anti-pattern kinh điển trong đề
3. Decision matrix — chọn data store
| Yêu cầu trong đề | Store |
|---|---|
| Object/data lake, mọi định dạng, rẻ, nhiều engine đọc | S3 |
| SQL warehouse, BI concurrency cao, aggregate lặp lại | Redshift |
| Ad-hoc SQL trên S3, không hạ tầng, trả theo scan | Athena |
| Key-value latency ms, scale lớn, serving layer | DynamoDB |
| OLTP quan hệ, transactions, app truyền thống | RDS/Aurora |
| Full-text search, log analytics + dashboards | OpenSearch |
| Cache sub-ms | ElastiCache (Redis/Valkey) |
| Time series chuyên dụng | Timestream (nhận biết) |
| Graph quan hệ nhiều tầng | Neptune (nhận biết) |
Câu thần chú phân biệt nhanh
- "search / log analytics / dashboards Kibana-style" → OpenSearch
- "single-digit millisecond key-value" → DynamoDB
- "complex SQL joins across large datasets / BI" → Redshift
- "occasional SQL on S3" → Athena
- "store everything cheaply, schema-on-read" → S3
- "ACID transactions cho app" → RDS/Aurora
4. Kiến trúc nhiều store phối hợp (poly-store)
Nguyên tắc: S3 là nguồn sự thật, mỗi store phục vụ đúng access pattern của nó — đề DEA thích kiến trúc "right tool for the job" hơn "một store làm tất cả".
Câu hỏi ôn tập
-
Team vận hành cần tìm kiếm full-text trên application logs và dashboard realtime. Store nào, và đường ingest ít vận hành nhất?
Xem đáp án
OpenSearch Service (hoặc Serverless) + OpenSearch Dashboards. Ingest ít vận hành: Amazon Data Firehose destination OpenSearch (kèm Lambda transform parse log nếu cần), backup S3 cho bản gốc. CloudWatch Logs cũng subscription được sang OpenSearch qua Firehose/subscription filter.
-
Log giữ 7 ngày truy vấn nóng, 90 ngày thỉnh thoảng đọc, sau đó xóa — giảm chi phí OpenSearch thế nào?
Xem đáp án
ISM policy: index 7 ngày ở hot (data nodes SSD) → chuyển UltraWarm (S3-backed, rẻ hơn nhiều, vẫn query được) tới 90 ngày → delete (hoặc cold storage nếu cần giữ lâu). Tự động hoàn toàn, không thao tác tay.
-
Ghép store cho từng yêu cầu: (a) giỏ hàng latency <10ms; (b) báo cáo doanh thu đa chiều cho 200 analyst; (c) lưu toàn bộ raw event vĩnh viễn; (d) tìm sản phẩm theo từ khóa có typo.
Xem đáp án
(a) DynamoDB — key-value ms; (b) Redshift — BI concurrency cao, SQL phức tạp; (c) S3 — rẻ, bền, schema-on-read; (d) OpenSearch — full-text, fuzzy matching. Mỗi access pattern một công cụ — poly-store là đáp án chuẩn của đề chọn store.
-
Báo cáo tháng đang chạy trực tiếp trên RDS production làm app chậm. Hai hướng xử lý theo mức đầu tư?
Xem đáp án
Nhẹ: read replica — trỏ query báo cáo sang replica, tách tải đọc (vẫn là engine OLTP, đủ cho report vừa). Chuẩn dài hạn: đưa dữ liệu sang analytics store — zero-ETL Aurora/RDS → Redshift (ít vận hành) hoặc DMS/CDC → S3 + Athena. Nguyên tắc: OLTP không gánh analytics nặng.
-
Khi nào OpenSearch Serverless hợp hơn OpenSearch domain?
Xem đáp án
Serverless khi workload biến động/không dự đoán, không muốn size node/shard, dev nhanh — trả theo OCU tự scale. Domain (provisioned) khi workload lớn ổn định (tối ưu chi phí bằng instance/reserved), hoặc cần tính năng/cấu hình chi tiết (UltraWarm, một số plugin, fine-grained tuning). Logic giống Redshift Serverless vs provisioned.
Bài tập thực hành
- Vẽ lại kiến trúc poly-store mục 4 và chú thích lý do từng nhánh
- Làm 10 flashcard "use case → store" từ decision matrix
- Tạo pipeline thử: Firehose → OpenSearch Serverless collection, gửi vài log JSON, xem trên Dashboards
- Ôn lại tuần 5 chuẩn bị quiz
Tài liệu tham khảo chính thức
Tiếp theo: Quiz Tuần 5