클라우드 컴퓨팅 & NoSQL/분산컴퓨팅&클라우드

구글 클라우드-AppDev 알아보기 #2 CloudTask 를 이용한 Advanced Message

Terry Cho 2025. 10. 31. 14:37

CloudTask는 GCP의 Pub/Sub 처럼 본질적으로는 메시지 큐라고 보면 된다. 단 Pub/Sub 보다 발전된 메시지 컨트롤 기능을 가지고 있다. 

개념을 먼저 이해하자고 하면, 먼저 다음 그림을 참고하자. 

 

 

CloudTask에 전달/저장되는 메시지를 Task라고 하며, 메시지는 CloudTask 내부 큐에 저장이 된다. 그리고, Target Destination으로 최종 전달이 되는데, 이 Task를 받아서 처리하는 부분을 Handler라고 한다. 

아래 구조와 같이 Cloud Task를 큐로 사용하여, Cloud Run등에 메시지를 Push (HTTP 호출) 방식으로 전달이 가능하다. 

 

그렇다면, Cloud Task는 기존의 Pub/Sub Message Queue에 비해서 무엇이 다른가?

  • Pub/Sub은 at Least Once delivery로, 중복 딜리버리가 발생할 수 있으나, CloudTask는 자체 de-duplication 기능을 가지고 있다. (Exactly once, 그리고 같은 메시지가 중복으로 add 되더라도 de-duplication 가능하다)
  • Rate Limit : 동시 처리 가능한 Task수와, TPS 설정이 가능하다. 
  • Pub/Sub은 Pull/Push가 모두 가능한데, Task는 Push만 가능하다. 
  • Scheduled delivery : 메시지에 delivery time을 설정하여, 원하는 시간에 Task를 delivery할 수 있다. 

그러면 Pub/Sub에 비해서 장점만 있는가? 당연히 단점도 있다.

  • Pub/Sub은 순차 보장 전달이 가능하나, CloudTask는 순차 보장이 불가능하다.
  • Pub/Sub 메시지 최대 크기는 10MB이나 CloudTask는 1M까지만 전달 가능하다
  • Pub/Sub은 Global delivery (across region)이 가능하나, Cloud Task는 region안에서만 가능하다. 

 

그러면 어떤 시나리오에 사용이 가능할까?

 

아래 구조는 EventArc에서 특정 메시지를 CloudRun으로 보낼때, CloudRun이 Over Scale out이 되지 않도록 Cloud Tasks 를 중간에 넣어서 Rate limit (throttling 용도로 사용한 구조이다.)

이렇게 메시지 처리에 대한 Rate throttling이 필요하거나 scheduled delivery가 필요할때 사용할 수 있다.