이 문서에서는 Pub/Sub과 Apache Kafka용 Google Cloud 관리형 서비스 중에서 선택하는 방법을 안내합니다. Pub/Sub 및 Apache Kafka용 관리형 서비스는 모두 대규모 워크로드를 처리할 수 있는 수평 확장이 가능한 관리형 메시지 서비스입니다.
이 문서는 스트리밍 데이터 및 메시지 워크로드를 처리하기 위한 관리형 서비스를 찾고 있는 개발자, 설계자 또는 의사결정권자를 대상으로 합니다.
파트너 서비스 및 자체 관리 오픈소스 소프트웨어를 비롯하여 Apache Kafka를 실행하는 여러 옵션이 있습니다. 이 문서에서는 이러한 옵션을 다루지 않습니다.
Pub/Sub 개념에 관한 개요는 Pub/Sub 서비스 개요를 참고하세요.
Apache Kafka용 관리형 서비스 개념에 관한 개요는 Apache Kafka용 관리형 서비스 개요를 참고하세요.
운영 편의성 및 이동성
Pub/Sub과 Apache Kafka용 관리형 서비스 중에서 선택하는 것은 운영 간편성과 이식성 간의 절충입니다.
Pub/Sub의 운영 간소성
Pub/Sub는 Google Cloud 인프라를 사용하는 완전 관리형, 서버리스, 전 세계적으로 배포된 서비스입니다. 워크로드를 처리하도록 자동으로 확장되므로 인프라 관리에 관해 걱정할 필요가 없습니다. Pub/Sub은 개별 주제 및 구독의 용량을 동적으로 조정합니다. 게시자와 구독자는 다양한 주제와 구독뿐만 아니라 동일한 주제와 구독 내에서도 독립적으로 확장할 수 있습니다.
Pub/Sub는 여러 리전 간에 데이터를 원활하게 이동합니다. 즉, 게시자와 구독자는 가장 가까운 리전에 연결할 수 있으며 서비스에서 나머지를 처리합니다.
Apache Kafka용 관리형 서비스는 대용량 데이터도 처리할 수 있습니다. 하지만 클러스터 크기를 관리하고 주제의 확장 요구사항에 따라 다른 여러 속성을 구성해야 합니다. 가장 중요한 것은 주제에 할당할 파티션 수를 고려해야 한다는 점입니다. 파티션이 너무 많으면 리소스가 낭비될 수 있습니다. 파티션 수가 너무 적으면 Kafka 클러스터의 브로커에 오버로드가 발생할 수 있습니다. 지연 시간 및 소비자 팬아웃 요구사항에 따라 파티션당 구성해야 하는 복제본 수도 고려해야 합니다.
Kafka 배포는 지정된 리전에 연결되므로 리전 간에 데이터를 이동하는 경우 서비스 외부에서 데이터 이동이 이루어져야 합니다. 데이터 이동의 지속적인 상태를 보장하고 Kafka 클러스터의 주제 요구사항을 충족하면 운영 작업이 늘어납니다.
Apache Kafka용 관리형 서비스의 이식성
Pub/Sub의 자동 확장과 전 세계 데이터 배포를 통해 더 쉽게 운영할 수 있지만 Apache Kafka API가 훨씬 더 광범위하게 채택되고 있습니다.
여러 온프레미스 또는 클라우드 제공업체 환경에서 독립적인 메시징 시스템을 사용하려는 경우 Apache Kafka용 관리 서비스는 애플리케이션 전반에서 더 일관된 환경을 제공할 수 있습니다. Kafka를 표준화하고 동일한 API를 사용하여 각 환경의 Kafka 서비스와 통신할 수 있기 때문입니다.
Pub/Sub를 모든 환경에서 중앙 메시지 시스템으로 사용할 수는 있지만, Pub/Sub는 자체 API가 있는 고유한 서비스라는 점을 기억해야 합니다. 특정 환경의 메시지 시스템과 상호작용해야 하는 경우 Apache Kafka용 관리형 서비스를 사용하면 더 통합된 개발 환경을 제공할 수 있습니다.
나에게 적합한 서비스
다양한 환경에서 일관된 환경이 중요한 경우 Apache Kafka용 관리형 서비스를 선택하세요. 워크로드 확장 또는 리전 간 데이터 이동을 위한 최소 구성에 중점을 두는 경우 Pub/Sub이 유리합니다.
다음 요소가 요구사항에 해당하는 경우 Pub/Sub를 선택하세요.
Google Cloud내에서 운영 간소화에 우선순위를 둡니다.
최소한의 오버헤드 관리가 가능한 확장 가능한 서버리스 솔루션이 필요합니다.
예측할 수 없거나 변경되는 워크로드 크기가 있습니다. Pub/Sub은 워크로드 처리량이 안정적일 때도 효과적입니다.
단일 잘못된 메시지로 인한 파이프라인 효과를 최소화하려면 메시지별 처리 추적이 필요합니다. Pub/Sub는 기본 제공되는 비활성 메일 큐 (DLQ)와 순서가 잘못된 메시지 처리를 지원하므로 문제가 있는 메시지가 발생하더라도 시스템이 계속 작동할 수 있습니다.
리전 간 데이터 집계가 필요합니다.
게시자와 구독자를 독립적으로 확장해야 합니다.
다음 요소가 요구사항을 설명하는 경우 Apache Kafka용 관리형 서비스를 선택하세요.
여러 클라우드 제공업체 또는 온프레미스 환경에서 이식성이 중요합니다.
Google Cloud로 이전하려는 기존 Kafka 워크로드가 있습니다. 자세한 내용은 기존 Kafka 설정에 따라 선택을 참고하세요.
큰 변동 없이 일관된 트래픽 양이 발생합니다.
용량 관리를 처리할 의지가 있습니다.
키당 높은 처리량으로 메시지 순서 지정이 필요합니다.
이벤트 로그를 정보 소스로 사용하여 이벤트 소싱 패턴을 사용하려 합니다.
기존 Kafka 설정에 따라 선택
이미 Kafka를 사용하고 있으며 Google Cloud에서 관리형, 안전하고 안정적인 솔루션을 찾는 경우 Apache Kafka용 관리형 서비스가 권장됩니다.
이미 Kafka를 실행 중이며 확장성이 뛰어나고 자동 확장되는 글로벌 서비스의 이점을 누리기 위해 애플리케이션을 다시 작성하려는 경우 Pub/Sub을 사용하는 것이 좋습니다. Kafka에서 Pub/Sub로 마이그레이션하려면 Kafka에서 Pub/Sub로 마이그레이션을 참고하세요.
새 워크로드 또는 Google Cloud에서 스트리밍을 처음 사용하는 사용자의 경우 사용 편의성 때문에 Pub/Sub이 권장됩니다. 최소한의 코드 변경으로 기존 Kafka 워크로드를 Cloud로 이전하려면 Apache Kafka용 관리형 서비스가 이상적입니다.
Cloud 제품과의 통합
Apache Kafka용 Google 관리형 서비스와 Pub/Sub 모두 Dataflow, BigQuery, Cloud Storage와 같은 다양한 Google Cloud 서비스와 통합됩니다.
멀티 클라우드 전략이 필요하고 여러 클라우드 제공업체 간에 이동성을 중시하는 경우 Apache Kafka용 관리형 서비스가 더 큰 유연성을 제공합니다. 이는 Kafka가 Pub/Sub에 비해 Google Cloud 외부의 더 광범위한 시스템과 통합되기 때문입니다.
기능 비교
이전 섹션의 이러한 대략적인 결정 기준이 도움이 되지 않는다면 특정 기능 지원을 기반으로 선택할 수 있습니다. 두 제품 간의 자세한 비교는 다음 표를 참고하세요.
특성 | Pub/Sub | Apache Kafka용 관리형 서비스 |
---|---|---|
사용 편의성 | 설정 및 유지관리가 더 용이함 | 운영 노력이 더 필요함 |
비용 모델 | 사용량에 따른 요금 | 컴퓨팅 용량에 대한 요금 지불 네트워킹 및 스토리지의 사용량에 따라 요금이 청구됩니다. |
단 한 번 처리 | 단일 동시 전송 및 강력한 확인 시맨틱스를 지원합니다. | 한 주제에서 읽고 다른 주제에 쓸 때 정확히 한 번의 부작용을 지원합니다. |
확장 | 주제당 초당 KB에서 GB로 원활하게 자동 확장되며 예측할 수 없는 워크로드에도 작동합니다. | 수동 구성 필요 |
주문된 전송 | 키 내에서 정렬을 제공합니다. 세분화된 순서 키당 1MBps 처리량 |
파티션 내에서 정렬을 제공합니다. 파티션의 처리량 용량까지 파티션별 순서 지정 |
데이터 보관 | 31일 | 무기한 보관 |
엔드 투 엔드 지연 시간 | 엔드 투 엔드 지연 시간은 일반적으로 100밀리초 정도입니다. | 일반적으로 잘 작동하는 구독자의 경우 10밀리초 정도 소요됩니다. |
리프트 앤 시프트를 위한 오픈소스 Kafka 호환성 | 아니요 | 예 |
ID 및 액세스 관리 및 보안 | 예 | 예 |
자동 네트워크 구성 | 예 | 예 |
멀티 클라우드: 클라우드 전반에서 동일 | 아니요 | 예 |
업타임 SLA | 예 | 예 |
데이터 영역 SLA | 예 | 현재는 지원되지 않음 |
로깅 및 모니터링 | 예 | 예 |
브로커 간 파티션 재분산 | 해당 없음 | 예 |
자동 용량 | Pub/Sub는 수신 메시지 비율 및 구독자 수요에 따라 용량을 동적으로 조정합니다. | 이 서비스는 VM 및 스토리지와 같은 기본 인프라를 관리합니다. 파티션 수, 복제 인수와 같은 측면을 제어합니다. |
자동 스토리지 관리 | 예 | 예 |
자동 소프트웨어 업그레이드 | 예 | 예 |
고객 지원 | 예 | 예 |
Kafka Connect 서비스 | 해당 없음 | 사용자 제공 Connect 서비스 사용 |
스키마 지원 | 예 | 사용자 제공 스키마 레지스트리 사용 |
ks qIDB, KSQL과 호환됨 | 아니요 | 예 |
OSS 커넥터 지원 | Kafka 및 Flink 커넥터의 경우 예 | 아니요 |
데이터 레이크 및 데이터 웨어하우스 통합 | 예 | 예 |