Cloud

[GCP] Pub/Sub μ •μ˜μ™€ Push& Pull 차이 | LIM

forestlim 2023. 1. 7. 01:49
728x90
λ°˜μ‘ν˜•

🧐 Cloud Pub/Sub μ΄λž€

λŒ€μš©λŸ‰ λΆ„μ‚° 큐 μ„œλΉ„μŠ€μ΄λ©° λ©”μ‹œμ§• μ‹œμŠ€ν…œμ΄λ‹€. λ©”μ‹œμ§€λ₯Ό Queue에 μŒ“μ•„λ‘λŠ” 토픽을 μƒμ„±ν•˜κ³  κ·Έ 토픽을 κ΅¬λ…ν•˜λŠ” κ΅¬λ…μžλ₯Ό λ§Œλ“€μ–΄ λ©”μ‹œμ§€λ₯Ό μ†ŒλΉ„ν•˜λŠ” μ‹œμŠ€ν…œμ΄λ‹€. Pub/Sub을 톡해 μ„œλΉ„μŠ€λŠ” λΉ„λ™κΈ°μ μœΌλ‘œ 100밀리 초의 μ§€μ—° μ‹œκ°„μœΌλ‘œ 톡신할 수 μžˆλ‹€.

 

πŸ“ Cloud Pub/Sub 의 핡심 κ°œλ…

Topic: κ²Œμ‹œμžκ°€ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•˜λŠ” λ¦¬μ†ŒμŠ€

 

Message: κ²Œμ‹œμžκ°€ Topic 에 전달해 결과적으둜 κ΅¬λ…μžμ—κ²Œ μ „λ‹¬λ˜λŠ” 데이터와 μ†μ„±μ˜ μ‘°ν•©

 

Subscriber: 단일 λ˜λŠ” 닀쀑 μ£Όμ œμ— λŒ€ν•œ ꡬ독을 μ‚¬μš©ν•˜μ—¬ λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜

 

Acknowledgement(or "Ack"): Subscriber κ°€ λ©”μ‹œμ§€λ₯Ό μ •μƒμ μœΌλ‘œ μˆ˜μ‹ ν•œ ν›„ κ΅¬λ…μžκ°€ Pub/Sub 에 λ³΄λ‚΄λŠ” μ‹ ν˜Έ. 이 Ack을 λ°›μ•„ ν™•μΈλœ λ©”μ‹œμ§€λŠ” κ΅¬λ…λ©”μ‹œμ§€ νμ—μ„œ μ‚­μ œλœλ‹€. 

 

Push and Pull: 두 κ°€μ§€ λ©”μ‹œμ§€ 전솑방법. Push의 경우 κ΅¬λ…μžκ°€ μ„ νƒν•œ μ—”λ“œν¬μΈνŠΈλ‘œ Pub/Sub 이 λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λŠ”κ²ƒ. Pull의 경우 κ΅¬λ…μžκ°€ λ©”μ‹œμ§€λ₯Ό Pull ν•˜λŠ” 것

 

그쀑 λ‚˜λŠ” Push와 Pull의 κ°œλ…μ΄ 쑰금 ν—·κ°ˆλ Έλ‹€. 

 

βœ”οΈ Push/Pull ꡬ독 방법

μ•„λž˜ ν•˜μ΄λΌμ΄νŠΈν•œ 뢀뢄이 핡심인 것 κ°™λ‹€. 

 

Pull: Subscriber κ°€ Message λ₯Ό μš”μ²­ν•  λ•Œ μ „λ‹¬λ°›λŠ” ꡬ독 방식

즉, κ·Έλ¦Όκ³Ό 같이 Pull 방식은 μ‚¬μš©μžκ°€ 데이터λ₯Ό μš”μ²­ν•˜λ©΄ Pub/Sub μ—μ„œ λ³΄λ‚΄μ£ΌλŠ” ν˜•μ‹μ΄κ³  Subscriber μ—κ²Œμ„œ Ack을 λ°›μœΌλ©΄ λ©”μ‹œμ§€λŠ” μ‚­μ œλœλ‹€. 

 

 

Push: Message κ°€ 였면 λ°”λ‘œ Subscriber μ—κ²Œ μ „λ‹¬λ˜λŠ” 방식

 

Push 방식은 Topic 으둜 데이터가 μ „μ†‘λ˜μžλ§ˆμž Subscriberμ—κ²Œ λ°”λ‘œ 보내주고 Subscriber κ°€ Ack을 μ „μ†‘ν•˜λ©΄ λ©”μ‹œμ§€λŠ” μ‚­μ œλœλ‹€. 

GCP의 EventArc μ„œλΉ„μŠ€κ°€ μžˆλŠ”λ° 이 μ„œλΉ„μŠ€κ°€ λ°”λ‘œ Push λ°©μ‹μœΌλ‘œ μž‘λ™λœλ‹€. 

바라보고 μžˆλŠ” νŠΉμ • cloud μ„œλΉ„μŠ€μ— μ΄λ²€νŠΈκ°€ λ°œμƒν•˜λ©΄ ν•΄λ‹Ή μ΄λ²€νŠΈμ— λŒ€ν•œ λ©”μ‹œμ§€λ₯Ό Subscriberμ—κ²Œ 보낸닀. 

 

EventArc에 λŒ€ν•΄ κΆκΈˆν•˜λ‹€λ©΄ 이 포슀트λ₯Ό 읽어보면 μ’‹λ‹€. 개인적으둜 ꡬ글 μ„œλΉ„μŠ€λŠ” 이 λΆ„ λΈ”λ‘œκ·Έλ₯Ό λ³΄λ©΄μ„œ 많이 λ°°μ› λ‹€. ν˜„μž¬ EventArcλ₯Ό μ‚¬μš©ν•΄ 주기적으둜 데이터λ₯Ό μ²˜λ¦¬ν•˜κ³  μžˆλŠ”λ° ν•΄λ‹Ή ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ‚¬μš©ν–ˆλ˜ EventArc에 λŒ€ν•œ 글을 더 μžμ„Ένžˆ 써봐야겠닀.

https://medium.com/google-cloud-apac/gcp-serverless-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%9D%B8-cloud-run-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-5%EB%B6%80-eventarc-%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%B0%9B%EA%B8%B0-f0771b656c4f

 

[GCP]Serverless μ„œλΉ„μŠ€μΈ Cloud Run μ•Œμ•„λ³΄κΈ° 5λΆ€β€Š—β€ŠEventarc λ₯Ό ν†΅ν•œ 이벀트 λ°›κΈ°

μ•ˆλ…•ν•˜μ„Έμš” μ΄μ •μš΄ μž…λ‹ˆλ‹€.

medium.com

 

πŸ“Cloud Pub/Sub μ„€μ • μš”μ†Œ

λ§ˆμ§€λ§‰μœΌλ‘œ Pub/Sub의 setting 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž.

 

βœ”οΈ Ack Deadline

  • How long Pub/Sub waits for the subscriber to acknowledge receipt before resending the message
  • Pub/Sub 이 subscriber 의 ack messageλ₯Ό μ–Όλ§ˆνΌκΉŒμ§€ κΈ°λ‹€λ¦¬κ²Œ ν•  건지에 λŒ€ν•œ 섀정이닀.
  • 10s ~ 600s(10m) κΉŒμ§€ μ„€μ • κ°€λŠ₯ν•˜λ‹€.
  • 10s둜 λ„ˆλ¬΄ 짧으면 κ·Έ 사이 ack을 λ°›μ§€ λͺ»ν•΄ μ€‘λ³΅λœ λ©”μ‹œμ§€κ°€ μ—¬λŸ¬ 번 λ°œν–‰λ  수 μžˆμœΌλ‹ˆ κ΅¬ν˜„ν•œ μ„œλΉ„μŠ€μ— 맞게 잘 μ‘°μ ˆν•˜λ„λ‘ ν•΄μ•Ό ν•œλ‹€.

βœ”οΈ Dead Letter

  • Pub/Sub μ„œλΉ„μŠ€κ°€ λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜λ €κ³  ν•˜μ§€λ§Œ κ΅¬λ…μžκ°€ 이λ₯Ό 확인할 수 μ—†λŠ” 경우 Pub/SubλŠ” 전달할 수 μ—†λŠ” λ©”μ‹œμ§€λ₯Ό λ°λ“œ λ ˆν„° 주제둜 전달할 수 μžˆλ‹€.

βœ”οΈ Retention

  • Retain unacknowledged messages for a specified duration. If retain acknowledged messages is enabled, acknowledged messages are retained for the same duration.
  • subscriberλ‘œλΆ€ν„° 정상적인 ack을 λ°›μ§€ λͺ»ν•œ λ©”μ‹œμ§€λ“€(즉 μ „μ†‘λ˜μ§€ μ•Šμ•˜λ‹€κ³  μ—¬κ²¨μ§€λŠ” λ©”μ‹œμ§€λ“€)을 μ–Όλ§ˆνΌ λ™μ•ˆ λ³΄κ΄€ν•˜κ³  μžˆμ„ 것인가에 λŒ€ν•œ 섀정이닀.

βœ”οΈ Backoff(Retry Policy)

  • μž¬μ‹œλ„ μ •μ±… 쀑 ν•˜λ‚˜λ‘œ, μž¬μ‹œλ„μ— λŒ€ν•œ 텀을 μ„€μ •ν•˜λŠ” μš”μ†Œλ‘œ 보면 λœλ‹€.
  • μ§€μˆ˜ λ°±μ˜€ν”„λ₯Ό μ‚¬μš©ν•˜λ©΄ μž¬μ‹œλ„ 사이에 μ μ§„μ μœΌλ‘œ μ’€ 더 κΈ΄ μ§€μ—° μ‹œκ°„μ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 첫 번째 전솑 μ‹€νŒ¨ ν›„ Pub/SubλŠ” μ΅œμ†Œ λ°±μ˜€ν”„ μ‹œκ°„μ„ κΈ°λ‹€λ¦° ν›„ μž¬μ‹œλ„ν•©λ‹ˆλ‹€. λ©”μ‹œμ§€κ°€ μ—°μ†ν•΄μ„œ μ‹€νŒ¨ν•  λ•Œλ§ˆλ‹€ μ§€μ—° μ‹œκ°„μ— 더 λ§Žμ€ μ‹œκ°„μ΄ μ΅œλŒ€ μ§€μ—° μ‹œκ°„(0~600초)κΉŒμ§€ μΆ”κ°€λ©λ‹ˆλ‹€.

 

μ°Έκ³ )

https://cloud.google.com/pubsub/docs/handling-failures

 

λ©”μ‹œμ§€ 처리 μ‹€νŒ¨  |  Cloud Pub/Sub  |  Google Cloud

의견 보내기 λ©”μ‹œμ§€ 처리 μ‹€νŒ¨ μ»¬λ ‰μ…˜μ„ μ‚¬μš©ν•΄ μ •λ¦¬ν•˜κΈ° λ‚΄ ν™˜κ²½μ„€μ •μ„ κΈ°μ€€μœΌλ‘œ μ½˜ν…μΈ λ₯Ό μ €μž₯ν•˜κ³  λΆ„λ₯˜ν•˜μ„Έμš”. κ΅¬λ…μžλŠ” λ‹€μ–‘ν•œ 이유둜 λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ©”

cloud.google.com

https://jhryu1208.github.io/gcp/2021/06/29/Cloud_Pub_Sub/

 

[GCP] Cloud Pub/Sub

Contents Cloud Pub/Subμ΄λž€? Pub/Sub의 ꡬ성 Pub/Sub λ©”μ‹œμ§€ 흐름 Pull(κ°€μ Έμ˜€κΈ°)/Push(내보내기) ꡬ독 방법 λ©”μ‹œμ§€ μ„œλΉ„μŠ€μ˜ μ„±λŠ₯ νŒλ‹¨ Pub/Sub 톡합

jhryu1208.github.io

 

λ‹€μŒμ—” λ©”μ‹œμ§€ 큐 ν”Œλž«νΌμΈ μΉ΄ν”„μΉ΄λ‘œ λ―Έλ‹ˆ ν”„λ‘œμ νŠΈλ₯Ό 진행해봐야겠닀!

728x90
λ°˜μ‘ν˜•