Kinesis Data Firehose

Kinesis Data Firehose
- Service được quản lý hoàn toàn, không cần quản trị, tự động scale, serverless
- AWS hỗ trợ: Redshift / Amazon S3 / OpenSearch
- Đối tác bên thứ ba: Splunk / MongoDB / Datadog / NewRelic / …
- Tùy chỉnh: gửi tới bất kỳ HTTP endpoint nào
- Tính phí dựa trên dữ liệu truyền qua Firehose
- Gần thời gian thực (Near Real Time):
- Độ trễ tối thiểu 60 giây nếu chưa đủ batch
- Hoặc ít nhất 1MB dữ liệu/lần gửi
- Hỗ trợ nhiều định dạng dữ liệu, chuyển đổi định dạng (conversions), biến đổi dữ liệu (transformations), và nén (compression)
- Hỗ trợ biến đổi dữ liệu tuỳ chỉnh sử dụng AWS Lambda
- Có thể gửi dữ liệu lỗi hoặc toàn bộ dữ liệu tới bucket S3 backup

Luồng dữ liệu tổng quan qua Kinesis Data Firehose
- Producers (Nguồn dữ liệu đầu vào)
- Các nguồn dữ liệu (Producers) bao gồm:
- Applications: Backend app, mobile app, web app.
- Client: Người dùng cuối gửi dữ liệu qua thiết bị client.
- SDK, KPL (Kinesis Producer Library): Được tích hợp trong app để gửi dữ liệu hiệu quả.
- Kinesis Agent: Cài đặt trên server hoặc instance để thu thập log và gửi tự động.
- AWS IoT: Thiết bị IoT gửi telemetry hoặc sensor data.
- Amazon CloudWatch Logs & Events: Hệ thống log/sự kiện được stream sang Firehose.
- Tất cả producer có thể:
- Gửi trực tiếp vào Kinesis Data Firehose
- Hoặc gửi qua Kinesis Data Streams → sau đó chuyển tiếp vào Firehose
- Các nguồn dữ liệu (Producers) bao gồm:
- Tiền xử lý: Kinesis Data Streams (Tuỳ chọn)
- Nếu dữ liệu được gửi đến Kinesis Data Streams trước (tùy kiến trúc), bạn có thể:
- Dùng Streams để buffer, multiplex cho nhiều consumer.
- Sau đó dùng Firehose như một trong các consumer để nhận dữ liệu.
- Nếu dữ liệu được gửi đến Kinesis Data Streams trước (tùy kiến trúc), bạn có thể:
- Kinesis Data Firehose
- Nhận Record (tối đa 1MB/record) từ producers hoặc từ Data Streams.
- Tùy cấu hình, nó có thể invoke:
- Lambda Function để transform dữ liệu: chuyển đổi định dạng, nén, parse JSON/CSV, enrich dữ liệu,...
- Sau khi xử lý xong, dữ liệu được ghi theo lô (batch writes) tới đích được cấu hình.
- Lưu ý:
- Có thể cấu hình thời gian flush dữ liệu hoặc kích thước batch (ví dụ: gửi mỗi 5MB hoặc mỗi 60s).
- Nếu transform qua Lambda thất bại, dữ liệu có thể bị route về backup S3 bucket.
- Backup
- All or Failed data → S3 backup bucket
- Đây là cơ chế fail-safe giúp bạn không mất dữ liệu dù transform/lưu thất bại.
- Dữ liệu gốc hoặc lỗi sẽ được đẩy vào một bucket riêng.
- Destinations (Đích đến cuối cùng của dữ liệu)
- AWS Destinations:
- Amazon S3: Lưu trữ raw data để làm data lake hoặc tiền xử lý.
- Amazon Redshift: Phân tích dữ liệu dạng bảng → lưu qua S3 trung gian.
- Amazon OpenSearch: Dùng cho use case log analytics, dashboard (tương tự như ELK stack).
- 3rd-party Partner Destinations:
- Datadog, Splunk, New Relic, MongoDB: Các giải pháp giám sát, log hoặc NoSQL DB bên thứ ba.
- Custom Destination:
- HTTP Endpoint: Có thể gửi dữ liệu tới hệ thống nội bộ (on-prem) hoặc dịch vụ ngoài cloud qua REST API.
- AWS Destinations:
So sánh ngắn với Kinesis Data Streams
| Tiêu chí | Kinesis Data Streams | Kinesis Data Firehose |
|---|---|---|
| Mục đích | Dịch vụ streaming để ingest dữ liệu quy mô lớn | Tải dữ liệu streaming vào các dịch vụ đích như S3, Redshift, OpenSearch |
| Lập trình | Phải viết code custom (cho producer và consumer) | Không cần viết code, hoạt động managed hoàn toàn |
| Độ trễ | Real-time (~200 ms) | Gần real-time (buffer tối thiểu 60 giây) |
| Khả năng mở rộng (scaling) | Tự quản lý scaling (shard splitting / merging) | Tự động scale |
| Lưu trữ dữ liệu | Có lưu trữ (1–365 ngày) | Không có lưu trữ dữ liệu |
| Khả năng replay | Có hỗ trợ replay dữ liệu | Không hỗ trợ replay dữ liệu |
Bạn thấy bài này thế nào?