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
  • 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.
  • 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.
So sánh ngắn với Kinesis Data Streams
Tiêu chíKinesis Data StreamsKinesis Data Firehose
Mục đíchDịch vụ streaming để ingest dữ liệu quy mô lớnTải dữ liệu streaming vào các dịch vụ đích như S3, Redshift, OpenSearch
Lập trìnhPhả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ệuCó lưu trữ (1–365 ngày)Không có lưu trữ dữ liệu
Khả năng replayCó hỗ trợ replay dữ liệuKhông hỗ trợ replay dữ liệu
Bạn thấy bài này thế nào?