메시지 전달과 비동기식 통합에 Cloud Tasks 및 Pub/Sub 모두 사용할 수 있으며 둘 다 유사한 방식으로 작동하지만 같지는 않습니다. 이 가이드는 사용 사례에 적합한 제품을 선택하는 데 도움이 됩니다.
주요 차이점
Pub/Sub와 Cloud Tasks는 주로 암시적 호출을 사용하는지 명시적 호출을 사용하는지에 따라 다릅니다.
Pub/Sub는 이벤트 게시자를 구독자와 분리합니다. 게시자는 구독자에 대한 정보를 확인할 필요가 없습니다. 따라서 Pub/Sub는 메시지 전달을 보장하는 것 외에는 메시지 전달을 제어하는 기능을 제공하지 않습니다. 이는 암시적 호출을 지원합니다. 즉 게시자는 이벤트를 게시하기만 하면 구독자 실행을 트리거합니다.
이와는 대조적으로 Cloud Tasks는 명시적 호출을 지향합니다. 게시자는 실행에 대한 완전한 제어 기능을 유지합니다. 특히 게시자는 각 메시지가 전달될 엔드포인트를 지정합니다.
또한 Cloud Tasks는 Pub/Sub 게시자가 이용할 수 없는 다음과 같은 큐 및 태스크 관리 기능을 제공합니다.
- 특정 전송 예약
- 게재율 제어
- 정확한 재시도 구성
- 큐에서 개별 작업 액세스 및 관리
- 작업 생성 중복 삭제
자세한 기능 비교
| 기능 | Cloud Tasks | Pub/Sub |
|---|---|---|
| 웹훅을 사용하여 푸시 | 예 | 예 |
| 최소 1회 전송 보장 | 예 | 예 |
| 재시도 구성 가능 | 예 | 예 |
| 작업/메시지 생성 중복 삭제 | 예 | N |
| 예약된 게재 | Y | 아니요 |
| 주문된 게재 | N. 큐에 추가된 태스크 순서는 최선의 방식으로 유지됩니다. | 예(순서 키 포함) |
| 명시적인 속도 제어 | 예 | 구독자 클라이언트가 흐름 제어를 구현할 수 있음 |
| API를 사용하여 가져오기 | N | Y |
| 일괄 삽입 | 예 | 예 |
| 메시지당 여러 핸들러/구독자 | N | Y |
| 작업/메시지 보관 | 31일 | 최대 31일 |
| 작업/메시지의 최대 크기 | 1MB | 10MB |
| 최대 게재율 | 큐당 500 QPS | 상한 없음, 리전 처리량 할당량 적용 |
| 사용 가능 지역 범위 | 리전 | 전체 |
| 핸들러/구독자 내보내기 최대 처리 시간 | 30분(HTTP) 10분(App Engine 표준 자동 확장) 24시간(App Engine 표준 수동 또는 기본 확장) 60분(App Engine 가변형) |
내보내기 작업의 경우 10분 |
| 큐/구독 수 | 리전별 프로젝트당 1,000개, 할당량 증가 요청을 통해 더 많은 수 사용 가능 | 프로젝트당 10,000개 |
재시도 구성 차이
Cloud Tasks는 시도 및 기간에 대한 엄격한 제한을 포함하여 태스크 재시도를 정확하게 제어할 수 있습니다. Pub/Sub는 안정적인 전달에 중점을 두며 지수 백오프 및 데드 레터 큐 (DLQ)를 사용하여 미확인 메시지의 재시도를 관리합니다.
| 기능 | Cloud Tasks | Pub/Sub |
|---|---|---|
| 사용 사례 | 특정 태스크의 최종 실행 보장 | 분리된 구독자에게 메시지 전달 보장 |
| 기본 제어 | 큐 수준 및 태스크 수준 재시도 구성 | 구독 수준 재시도 정책 및 DLQ |
| 재시도 중지 | 최대 시도 횟수, 최대 재시도 기간 | 메시지 확인, 메시지 만료 또는 DLQ 전송 |
| 최대 시도 횟수 | 명시적으로 구성 가능 | DLQ 최대 전송 시도 횟수를 통해 간접적으로 |
| 백오프 조정 | 최소/최대 백오프, 최대 더블링 | 지수 백오프 정책의 최소/최대 백오프 |
| 무한 재시도 | 구성된 경우 가능하지만 최대 태스크 보관 한도로 제한됨 | 만료될 때까지 미확인 메시지의 기본값, DLQ로 완화됨 |