이 문서에서는 Pub/Sub와 Apache Kafka용 Google Cloud 관리형 서비스 중에서 선택하는 방법을 안내합니다. Pub/Sub와 Managed Service for Apache Kafka는 모두 수평 확장이 가능한 관리형 메시징 서비스로, 대량의 워크로드를 처리할 수 있습니다.
이 문서는 스트리밍 데이터 및 메시지 워크로드를 처리하기 위한 관리형 서비스를 찾는 개발자, 설계자 또는 의사결정자를 대상으로 합니다.
파트너 서비스 및 자체 관리 오픈소스 소프트웨어를 비롯한 Apache Kafka 실행 옵션이 여러 개 있습니다. 이 문서에서는 이러한 옵션을 다루지 않습니다.
Pub/Sub 개념에 대한 개요는 Pub/Sub 서비스 개요를 참고하세요.
Managed Service for Apache Kafka 개념 개요는 Managed Service for Apache Kafka 개요를 참고하세요.
운영 용이성 대 이동성
Pub/Sub와 Managed Service for Apache Kafka 중에서 선택하는 것은 운영적 단순성과 이식성 간의 절충입니다.
Pub/Sub의 운영 단순성
Pub/Sub는 Google Cloud 인프라를 사용하는 완전 관리형 서버리스 전역 분산 서비스입니다. 워크로드를 처리하기 위해 자동으로 확장되므로 인프라 관리에 대해 걱정할 필요가 없습니다. Pub/Sub는 개별 주제 및 구독의 용량을 동적으로 조정합니다. 게시자와 구독자는 서로 다른 주제와 구독뿐만 아니라 동일한 주제와 구독 내에서도 독립적으로 확장할 수 있습니다.
Pub/Sub는 여러 리전 간에 데이터를 원활하게 이동합니다. 즉, 게시자와 구독자는 가장 가까운 리전에 연결할 수 있으며 서비스에서 나머지를 처리합니다.
Managed Service for Apache Kafka는 대량의 데이터도 처리할 수 있습니다. 하지만 클러스터 크기를 관리하고 주제의 확장 요구사항에 따라 여러 다른 속성을 구성해야 합니다. 가장 중요한 것은 주제에 할당할 파티션 수를 고려해야 한다는 것입니다. 파티션이 너무 많으면 리소스가 낭비될 수 있습니다. 파티션이 너무 적으면 Kafka 클러스터의 브로커가 과부하될 수 있습니다. 지연 시간 및 소비자 팬아웃 요구사항에 따라 파티션별로 구성해야 하는 복제본 수도 고려해야 합니다.
Kafka 배포는 지정된 리전에 연결되어 있으므로 리전 간에 데이터를 이동하는 경우 서비스 외부에서 데이터 이동이 발생해야 합니다. 데이터 이동의 지속적인 상태를 보장하고 Kafka 클러스터의 주제 요구사항을 충족하면 운영 작업이 추가됩니다.
Managed Service for Apache Kafka의 이식성
Pub/Sub의 자동 확장 및 전역 데이터 배포를 통해 운영이 더 쉬워지지만 Apache Kafka API는 훨씬 더 광범위하게 채택됩니다.
다양한 온프레미스 또는 클라우드 제공업체 환경에서 독립적인 메시지 시스템을 사용하려는 경우 Managed Service for Apache Kafka를 사용하면 애플리케이션 전반에서 일관된 환경을 제공할 수 있습니다. 각 환경에서 Kafka 서비스와 통신하기 위해 동일한 API를 사용하여 Kafka를 표준화할 수 있기 때문입니다.
모든 환경에서 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 워크로드를 최소한의 코드 변경으로 클라우드로 이동하려면 Managed Service for Apache Kafka가 이상적입니다.
Cloud 제품과의 통합
Google Managed Service for Apache Kafka와 Pub/Sub는 Dataflow, BigQuery, Cloud Storage 등 다양한 Google Cloud 서비스와 통합됩니다.
멀티 클라우드 전략이 필요하고 여러 클라우드 제공업체 간의 이식성을 우선시하는 경우 Managed Service for 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 커넥터의 경우 예 | 아니요 |
| 데이터 레이크 및 데이터 웨어하우스와의 통합 | 예 | 예 |