Dataflow ์ด๋ฒคํŠธ๋ฅผ Workflows๋กœ ๋ผ์šฐํŒ…

Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ํŠน์ • ์ด๋ฒคํŠธ ๋˜๋Š” ์ด๋ฒคํŠธ ์ง‘ํ•ฉ์— ๊ด€์‹ฌ์ด ์žˆ์Œ์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ์†Œ์Šค๋‚˜ ๋Œ€์ƒ ์„œ๋น„์Šค ๋“ฑ์˜ ํŠธ๋ฆฌ๊ฑฐ ํ•„ํ„ฐ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ด๋ฒคํŠธ ๋ผ์šฐํŒ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ๋Š” HTTP ์š”์ฒญ์„ ํ†ตํ•ด CloudEvents ํ˜•์‹์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. Workflows ์„œ๋น„์Šค๋Š” ์ด๋ฒคํŠธ๋ฅผ JSON ๊ฐ์ฒด(CloudEvents ์‚ฌ์–‘์— ๋”ฐ๋ฆ„)๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์— ์›Œํฌํ”Œ๋กœ ๋Ÿฐํƒ€์ž„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ํฌ๊ธฐ๊ฐ€ 512KB๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก ์œ ์˜ํ•˜์„ธ์š”. ์ด๋ฒคํŠธ๊ฐ€ ์ตœ๋Œ€ Workflows ์ธ์ˆ˜ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์ด ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์•ˆ๋‚ด์—์„œ๋Š” ์ง์ ‘Dataflow ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์›Œํฌํ”Œ๋กœ ์‹คํ–‰์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋„๋ก ์ด๋ฒคํŠธ ๋ผ์šฐํŒ…์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์›๋˜๋Š” ์ง์ ‘ ์ด๋ฒคํŠธ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ ์ค€๋น„

๋Œ€์ƒ ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•œ Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ ์ž‘์—…์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์˜ ํ”„๋กœ์ ํŠธ ์„ ํƒ๊ธฐ ํŽ˜์ด์ง€์—์„œ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœ์ ํŠธ ์„ ํƒ๊ธฐ๋กœ ์ด๋™

  2. Eventarc, Eventarc Publishing, Workflows, Workflow Executions API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    API ์‚ฌ์šฉ ์„ค์ •

  3. ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Dataflow ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐDataflow API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ์•„์ง ๊ณ„์ •์ด ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  Eventarc๊ฐ€ ๋Œ€์ƒ ์›Œํฌํ”Œ๋กœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•„์š”ํ•œ ์—ญํ• ๊ณผ ๊ถŒํ•œ์„ ๊ณ„์ •์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    1. Google Cloud ์ฝ˜์†”์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ด๋™

    2. ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    3. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„ ํ•„๋“œ์— ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์€ ์ด ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค ๊ณ„์ • ID ํ•„๋“œ๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.

      ์„œ๋น„์Šค ๊ณ„์ • ์„ค๋ช… ํ•„๋“œ์— ์„ค๋ช…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด Service account for event trigger์ž…๋‹ˆ๋‹ค.

    4. ๋งŒ๋“ค๊ณ  ๊ณ„์†ํ•˜๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    5. ์ ์ ˆํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์—ญํ•  ์„ ํƒ ๋ชฉ๋ก์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์— ๋ถ€์—ฌํ•  ํ•„์š”ํ•œ Identity and Access Management(IAM) ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Workflows ๋Œ€์ƒ์˜ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

      ์—ญํ• ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ์—ญํ•  ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๊ฐ ์—ญํ• ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    6. ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    7. ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ๋งˆ์น˜๋ ค๋ฉด ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Eventarc, Eventarc Publishing, Workflows, Workflow Executions API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com

  3. ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Dataflow ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ dataflow.googleapis.com๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ์•„์ง ๊ณ„์ •์ด ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  Eventarc๊ฐ€ ๋Œ€์ƒ ์›Œํฌํ”Œ๋กœ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•„์š”ํ•œ ์—ญํ• ๊ณผ ๊ถŒํ•œ์„ ๊ณ„์ •์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    1. ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME์„ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. 6~30์ž(์˜๋ฌธ ๊ธฐ์ค€) ์‚ฌ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ์†Œ๋ฌธ์ž ์˜์ˆซ์ž ๋ฌธ์ž์™€ ๋Œ€์‹œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“  ํ›„์—๋Š” ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    2. ํ•„์š”ํ•œ Identity and Access Management(IAM) ์—ญํ•  ๋˜๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Workflows ๋Œ€์ƒ์˜ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ

Google Cloud CLI(gcloud ๋˜๋Š” Terraform)๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Google Cloud ์ฝ˜์†”์„ ํ†ตํ•ด ๋ฐฐํฌ๋œ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ด๋ฒคํŠธ ์ˆ˜์‹ ์ž๋กœ ์‚ฌ์šฉํ•˜์—ฌ Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Eventarc ํŠธ๋ฆฌ๊ฑฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ด๋™

  2. ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ์˜ ID์ด๋ฉฐ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ 63์ž(์˜๋ฌธ ๊ธฐ์ค€)์˜ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ํ•˜์ดํ”ˆ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ํŠธ๋ฆฌ๊ฑฐ ์œ ํ˜•์œผ๋กœ Google ์†Œ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด๋ฒคํŠธ ์ œ๊ณต์ž ๋ชฉ๋ก์—์„œ Dataflow๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์—ฐ๊ฒฐ๋œ Google Cloud ๋ฌธ์„œ์— ์‚ฌ์šฉ๋œ ์ด๋ฒคํŠธ ์ œ๊ณต์ž ์ด๋ฆ„์— Cloud ๋˜๋Š” Google Cloud ํ”„๋ฆฌํ”ฝ์Šค๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜์†”์—์„œ๋Š” Redis์šฉ Memorystore๋ฅผ Redis์šฉGoogle Cloud Memorystore๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  6. ์ด๋ฒคํŠธ ์œ ํ˜• ๋ชฉ๋ก์˜ ์ง์ ‘ ์ด๋ฒคํŠธ์—์„œ ์ด๋ฒคํŠธ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  7. ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์˜ ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์ฝ˜ํ…์ธ  ์œ ํ˜• ๋ชฉ๋ก์—์„œ application/json ๋˜๋Š” application/protobuf๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    JSON์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋Š” Protobuf๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ ์ด๋ฒคํŠธ ํฌ๊ธฐ ํ•œ๋„์— ๋”ฐ๋ผ ์•ˆ์ •์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  8. ๋ฆฌ์ „ ๋ชฉ๋ก์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š”Google Cloud ์„œ๋น„์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ Eventarc ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  9. ์ด๋ฒคํŠธ ์ œ๊ณต์ž์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ํ•„ํ„ฐ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    1. ์†์„ฑ 1 ํ•„๋“œ์—์„œ ์„ ํƒํ•œ ์ง์ ‘ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ ํ•„ํ„ฐ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค ID๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    2. ์—ฐ์‚ฐ์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. ์†์„ฑ ๊ฐ’ 1 ํ•„๋“œ์—์„œ ์„ ํƒํ•œ ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ ์ •ํ™•ํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๊ฒฝ๋กœ ํŒจํ„ด์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    4. ๋” ๋งŽ์€ ์†์„ฑ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ํ•„ํ„ฐ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ ํ•ฉํ•œ ๊ฐ’์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  10. ์„œ๋น„์Šค ๋˜๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ํ˜ธ์ถœํ•  ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋˜๋Š” ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  ์ด์ „์— Eventarc์— ํ•„์š”ํ•œ ํŠน์ • ์—ญํ• ์„ ๋ถ€์—ฌํ•œ Identity and Access Management(IAM) ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  11. ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ชฉ๋ก์—์„œ Workflows์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  12. ์›Œํฌํ”Œ๋กœ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•  ์›Œํฌํ”Œ๋กœ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ ์‹คํ–‰ ์ด๋ฒคํŠธ๊ฐ€ ๋ณ€ํ™˜๋˜์–ด ๋Ÿฐํƒ€์ž„ ์ธ์ˆ˜๋กœ ์›Œํฌํ”Œ๋กœ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ Workflows์˜ ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  13. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋ผ๋ฒจ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ์€Google Cloud ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ‚ค-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ผ๋ฒจ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  14. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  15. ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ์ด๋ฒคํŠธ ์†Œ์Šค ํ•„ํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด์ „ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŠธ๋ฆฌ๊ฑฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

ํ•„์ˆ˜ ๋ฐ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ gcloud eventarc triggers create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  gcloud eventarc triggers create TRIGGER \
      --location=LOCATION \
      --destination-workflow=DESTINATION_WORKFLOW \
      --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
      --event-filters="type=EVENT_FILTER_TYPE" \
      --event-filters="COLLECTION_ID=RESOURCE_ID" \
      --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
      --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
      --service-account="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • TRIGGER: ํŠธ๋ฆฌ๊ฑฐ์˜ ID ๋˜๋Š” ์ •๊ทœํ™”๋œ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
  • LOCATION: Eventarc ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ๋˜๋Š” eventarc/location ์†์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: gcloud config set eventarc/location us-central1).

    ์„ฑ๋Šฅ ๋ฐ ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ด ์œ„์น˜๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” Google Cloud ์„œ๋น„์Šค์˜ ์œ„์น˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Eventarc ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • DESTINATION_WORKFLOW: ํŠธ๋ฆฌ๊ฑฐ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐฐํฌ๋œ ์›Œํฌํ”Œ๋กœ์˜ ID์ž…๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ๋Š” Workflows ์ง€์› ์œ„์น˜ ์ค‘ ํ•˜๋‚˜์— ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ์œ„์น˜์— ์žˆ์„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์›Œํฌํ”Œ๋กœ๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • DESTINATION_WORKFLOW_LOCATION(์„ ํƒ์‚ฌํ•ญ): ๋Œ€์ƒ ์›Œํฌํ”Œ๋กœ๊ฐ€ ๋ฐฐํฌ๋˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์›Œํฌํ”Œ๋กœ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ์œ„์น˜์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • EVENT_FILTER_TYPE: ์ด๋ฒคํŠธ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ API ํ˜ธ์ถœ์ด ์„ฑ๊ณตํ•˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ž‘์—…์ด ๋๋‚  ๋•Œ์™€ ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์ด๋ฒคํŠธ ์œ ํ˜• ๋ชฉ๋ก์€ Eventarc์—์„œ ์ง€์›๋˜๋Š” Google ์ด๋ฒคํŠธ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • COLLECTION_ID(์„ ํƒ์‚ฌํ•ญ): ์ด๋ฒคํŠธ ํ•„ํ„ฐ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์š”์†Œ๋กœ, job์ž…๋‹ˆ๋‹ค.
  • RESOURCE_ID: ์—ฐ๊ฒฐ๋œ ์ปฌ๋ ‰์…˜์˜ ํ•„ํ„ฐ๋ง ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์†Œ์Šค ID๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • PATH_PATTERN: ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•  ๋•Œ ์ ์šฉํ•  ๊ฒฝ๋กœ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.
  • EVENT_DATA_CONTENT_TYPE: (์„ ํƒ์‚ฌํ•ญ) ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์˜ ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ application/json ๋˜๋Š” application/protobuf์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์€ application/json์ž…๋‹ˆ๋‹ค.

    JSON์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋Š” Protobuf๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ ์ด๋ฒคํŠธ ํฌ๊ธฐ ํ•œ๋„์— ๋”ฐ๋ผ ์•ˆ์ •์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • SERVICE_ACCOUNT_NAME: Workflows์— ํ•„์š”ํ•œ ํŠน์ • ์—ญํ• ์„ ๋ถ€์—ฌํ•˜์—ฌ ๋งŒ๋“  IAM ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ :

  • --event-filters="type=EVENT_FILTER_TYPE" ํ”Œ๋ž˜๊ทธ๋Š” ํ•„์ˆ˜ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฒคํŠธ ํ•„ํ„ฐ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์˜ ์ด๋ฒคํŠธ๊ฐ€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ ํ›„์—๋Š” EVENT_FILTER_TYPE์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. EVENT_FILTER_TYPE์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ƒˆ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด์ „ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ํŠธ๋ฆฌ๊ฑฐ์— ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ ํ•„ํ„ฐ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜(--event-filters=[ATTRIBUTE=VALUE,...] ํ”Œ๋ž˜๊ทธ ํ•˜๋‚˜์— ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ) ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•„ํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ์ด๋ฒคํŠธ๋งŒ ๋Œ€์ƒ์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ ์นด๋“œ์™€ ์ •๊ทœ ํ‘œํ˜„์‹์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ --event-filters-path-pattern ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ ํŒจํ„ด์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • --service-account ํ”Œ๋ž˜๊ทธ๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ์—ฐ๊ฒฐ๋œ Identity and Access Management(IAM) ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-workflow=my-workflow \
      --destination-workflow-location=us-central1 \
      --event-filters="type=google.cloud.dataflow.job.v1beta3.statusChanged" \
      --event-filters-path-pattern="job=my-job-*" \
      --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

์ด ๋ช…๋ น์–ด๋Š” google.cloud.dataflow.job.v1beta3.statusChanged๋กœ ์‹๋ณ„๋œ ์ด๋ฒคํŠธ์˜ ํŠธ๋ฆฌ๊ฑฐ(helloworld-trigger)๋ฅผ ๋งŒ๋“ค๊ณ  my-job-๋กœ ์‹œ์ž‘ํ•˜๋Š” job ID์˜ ์ด๋ฒคํŠธ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

Terraform

Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Eventarc ๋ฐ Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌํ”Œ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠธ๋ฆฌ๊ฑฐ ๋‚˜์—ด

Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Google Cloud ์ฝ˜์†”์„ ํ†ตํ•ด Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Eventarc ํŠธ๋ฆฌ๊ฑฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ด๋™

    ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๋ชจ๋“  ์œ„์น˜์˜ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ์ด๋ฆ„, ๋ฆฌ์ „, ์ด๋ฒคํŠธ ์ œ๊ณต์ž, ๋Œ€์ƒ ๋“ฑ๊ณผ ๊ฐ™์€ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  2. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ํ•„ํ„ฐ ๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ํ•„ํ„ฐ๋ง ํ•„๋“œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ์†์„ฑ ๋ชฉ๋ก์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์†์„ฑ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ OR ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด ์ง€์›๋˜๋Š” ์—ด ์ œ๋ชฉ ์˜†์— ์žˆ๋Š” ์ •๋ ฌ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

gcloud eventarc triggers list --location=-

์ด ๋ช…๋ น์–ด๋Š” ๋ชจ๋“  ์œ„์น˜์˜ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ์ด๋ฆ„, ์œ ํ˜•, ๋Œ€์ƒ, ์ƒํƒœ์™€ ๊ฐ™์€ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„