개요
앞서 알아본 Amazon OpenSearch Service에 데이터를 저장하는 역할로 Amazon Data Firehose라는 기능에 대해 알아보았습니다
HTTP 모든 사용자 지정 HTTP 엔드포인트 또는 엔드포인트와 같은 대상으로 실시간 스트리밍 데이터를 전송하는 완전 관리형 서비스입니다. Amazon Data Firehose로 데이터를 보내도록 데이터 생산자를 구성하면 지정한 목적지로 데이터가 자동으로 전송됩니다. 또한 데이터를 전송하기 전에 데이터를 변환하도록 Amazon Data Firehose를 구성할 수 있습니다.
주요 개념
Firehose 스트림
Amazon Data Firehose의 기본 엔티티입니다. Firehose 스트림을 생성한 다음 이 스트림으로 데이터를 전송하는 방식으로 Amazon Data Firehose를 사용합니다.
레코딩
데이터 생산자가 Firehose 스트림에 보내는 관심 데이터입니다. 레코드는 최대 1000KB가 될 수 있습니다.
데이터 프로듀서
프로듀서가 Firehose 스트림으로 레코드를 전송합니다. 예를 들어 Firehose 스트림으로 로그 데이터를 보내는 웹 서버는 데이터 생산자입니다. 또한 기존 Kinesis 데이터 스트림에서 데이터를 자동으로 읽고 대상에 로드하도록 Firehose 스트림을 구성할 수 있습니다.
버퍼 크기 및 버퍼 간격
Amazon Data Firehose는 수신되는 스트리밍 데이터를 목적지로 전송하기 전에 특정 크기 또는 일정 기간 동안 버퍼링합니다. Buffer Size단위는 초 MBs 단위이며 Buffer Interval 단위입니다.
Flow
Kinesis Data Streams VS Data Firehose (from. ChatGPT 4o)
1. Kinesis Data Streams (KDS)
실시간 스트리밍 데이터 처리 및 소비자 어플리케이션 제어에 적합합니다.
주요 특징:
- 사용자 제어: 데이터를 처리하는 애플리케이션(컨슈머)에서 데이터를 직접 읽고 처리합니다.
- 실시간 데이터 처리: 데이터가 스트림에 도달하는 즉시 여러 컨슈머가 동시에 데이터를 소비할 수 있습니다.
- 데이터 보관: 데이터는 기본적으로 최대 7일 동안 보관됩니다(기본은 24시간, 최대 7일까지 설정 가능).
- 사용 예: IoT 데이터 수집, 실시간 로그 분석, 이벤트 트리거 시스템.
- 컨슈머의 유연성: 데이터 처리에 필요한 로직을 Lambda, EC2, ECS 등에서 자유롭게 구현.
- 확장성: 샤드(Shard) 단위로 확장하여 처리량 조절 가능.
주요 활용 시나리오:
- 애플리케이션이 실시간 데이터를 직접 소비하고 처리해야 하는 경우.
- 데이터를 세밀하게 제어하고 처리해야 할 때(여러 단계의 스트림 처리 포함).
2. Data Firehose
실시간 데이터 수집 및 저장 자동화에 최적화된 서비스입니다.
주요 특징:
- 데이터 전송에 초점: 데이터를 목적지(Amazon S3, Redshift, Elasticsearch 등)로 자동 전송합니다.
- 자동 배치 및 버퍼링: 데이터를 배치 단위로 목적지에 전달하며, 버퍼 크기와 시간을 조절할 수 있습니다.
- 서버리스 관리형 서비스: 사용자가 인프라를 관리할 필요 없이 자동 확장됩니다.
- 데이터 변환: Lambda를 이용해 데이터를 간단히 변환한 후 목적지로 전송할 수 있습니다.
- 실시간 전달: 단순한 데이터 수집과 전달이 주목적이며, 실시간 처리보다는 목적지 저장에 초점을 둡니다.
주요 활용 시나리오:
- 로그나 이벤트 데이터를 S3에 수집한 후 분석용 데이터로 활용.
- 실시간으로 Redshift에 데이터 적재.
- 데이터 수집 파이프라인 자동화가 필요한 경우.
차이점 요약:
특성 | Kinesis Data Streams | Data Firehose |
---|
목적 | 실시간 데이터 처리 및 소비 | 실시간 데이터 수집 및 저장 |
데이터 보관 시간 | 최대 7일 | 목적지로 전송 후 보관되지 않음 |
데이터 처리 방식 | 애플리케이션에서 직접 처리 | 자동으로 데이터 전송 및 버퍼링 |
처리 인프라 제어 | 사용자가 직접 처리 로직 및 인프라 제어 | 서버리스, AWS가 자동 처리 |
사용 예 | 로그 분석, 실시간 알림, 이벤트 트리거 | 로그 수집, 데이터 웨어하우스 적재 |
확장성 | 샤드 단위 확장 | 자동 확장 |
데이터 변환 | 애플리케이션에서 구현 필요 | Lambda로 간단한 변환 가능 |
선택 가이드:
- Kinesis Data Streams: 데이터를 실시간으로 분석하거나 여러 컨슈머가 필요할 경우 적합합니다. 복잡한 처리 로직을 구현할 수 있는 유연성이 필요할 때 사용합니다.
- Data Firehose: 실시간으로 데이터를 수집하고, 분석용 목적지(S3, Redshift 등)에 자동으로 저장하는 것이 목적일 때 적합합니다. 데이터 처리에 인프라 관리 부담을 줄이고 싶을 때 유용합니다.
이 차이를 바탕으로 요구사항에 따라 적절한 서비스를 선택하면 됩니다.
예상비용
기준
- 개당 5kb 크기의 log data
- 일별 1000만개
- vpc subnet 3개
요금내용
월별 총비용: 99.53 USD
- Amazon Data Firehose 데이터 수집 요금 (월별): 52.21
- 데이터 수집을 위한 레코드 수: 10000000 일별 * (730 시간(1달 기준) / 24 시간(하루 기준)) = 304166666.67 월별
- 304,166,666.67 월별 레코드 x 1 단위 승수 = 304,166,666.67 월별 총 레코드 수
- RoundUp (5) = 5 KB 평균 레코드 크기(5KB 단위로 올림)
- 304,166,666.67 레코드 x 5 KB = 1,520,833,333.35 월별 KB
- 1,520,833,333.35 KB / 1048576 KB(1GB 기준) = 1,450.3796895503997 월별 GB
- Tiered price for: 1,450.3796895503997 GB
- 1,450.3796895503997 GB x 0.036 USD = 52.21 USD
- 총 티어 비용 = 52.21 데이터 수집 요금 USD
Amazon Data Firehose 데이터 수집 요금 (월별): 52.21 USD
- Amazon Data Firehose VPC 처리 요금 (월별): 47.32
- 304,166,666.67 레코드 x 5 KB = 1,520,833,333.35 월별 수집된 KB
- 1,520,833,333.35 KB / 1048576 KB(1GB 기준) = 1,450.3796895503997 월별 수집된 GB
- 1,450.3796895503997 GB x 1.30 처리된 데이터와 수집된 데이터의 비율 = 1,885.49 월별 처리된 GB
- 1,885.49 GB x 0.01 USD = 18.85 월별 VPC 처리 요금 USD
- 3 서브넷 x 0.013 시간당 USD x 730 시간(1달 기준) = 28.47 VPC 처리에 대한 월별 서브넷 요금 USD
- 18.85 USD + 28.47 USD = 47.32 월별 USD
Amazon Data Firehose VPC 처리 요금 (월별): 47.32 USD
Firehose에 OpenSearch를 대상으로할때 설정 가이드
Firehose 스트림의 대상으로 Amazon OpenSearch Service를 사용하려면 다음 설정을 지정해야 합니다.
- OpenSearch 도메인 - 데이터가 전송되는 OpenSearch Service 도메인입니다.
- 인덱스 - 데이터를 OpenSearch Service 클러스터에 인덱싱할 때 사용되는 OpenSearch Service 인덱스 이름입니다.
- 인덱스 회전 - 이 설정은 OpenSearch Service 인덱스를 순환할지 여부와 그 빈도를 나타냅니다. 인덱스 순환이 사용되면 Amazon Data Firehose가 지정된 인덱스 이름과 순환에 해당 타임스탬프를 추가합니다.
- 유형 - OpenSearch Service 클러스터에 데이터를 인덱싱할 때 사용할 OpenSearch Service 유형 이름입니다. Elasticsearch 7.x 및 OpenSearch 1.x의 경우 인덱스당 유형은 한 개입니다. 다른 유형을 가진 기존 인덱스에 새 유형을 지정하면 런타임 동안 Firehose가 오류를 반환합니다. Elasticsearch 7.x에서 이 필드는 비워둡니다.
- 대상 VPC 연결 - OpenSearch Service 도메인이 프라이빗 VPC에 있는 경우 이 섹션에서 해당 VPC를 지정합니다. 또한 Amazon Data Firehose가 OpenSearch Service 도메인으로 데이터를 전송할 때 사용할 서브넷과 하위 그룹을 지정합니다.
- 버퍼 힌트 - Amazon Data Firehose는 수신 데이터를 지정된 대상으로 전송하기 전에 버퍼링합니다. 대상에 권장되는 버퍼 크기는 서비스 공급자마다 다릅니다.
- 재시도 기간 - 동적으로 파티셔닝된 데이터를 S3로 전송하는 재시도 지속 시간입니다. Amazon Data Firehose는 먼저 S3의 확인을 기다립니다. 확인이 도착하지 않고 재시도 지속 기간이 0보다 큰 값으로 설정된 경우 Amazon Data Firehose는 재시도 지속 시간 카운터를 시작하고 재시도 지속 시간이 종료될 때까지 계속 재시도합니다. 그 이후에는 Amazon Data Firehose가 이를 전송 실패로 간주하고 데이터를 S3 버킷에 백업합니다.
- 문서 ID 유형 - 문서 ID를 설정하는 방법을 지정합니다. Firehose는 다음과 같은 방법을 지원합니다.
- Amazon Data Firehose에서 생성한 문서 ID - 문서 ID 값이 설정되지 않은 경우 기본 옵션입니다.
- OpenSearch Service에서 생성한 문서 ID - 로그 분석 및 관찰 기능을 포함하여 쓰기가 많은 작업을 지원하고 OpenSearch Service 도메인에서 더 적은 CPU 리소스를 소비하여 성능을 향상시키기 때문에 권장되는 옵션입니다.