gcloud CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋ก  ์ž‘์—… ์˜ˆ์•ฝ ๋ฐ ์‹คํ–‰

์ด ๋น ๋ฅธ ์‹œ์ž‘์—์„œ๋Š” Cloud Scheduler๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด gcloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

์ด ๋น ๋ฅธ ์‹œ์ž‘์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Cloud Scheduler ์ž‘์—… ๋Œ€์ƒ์œผ๋กœ ์„ค์ •ํ•  Pub/Sub ์ฃผ์ œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. Cloud Scheduler๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋ก  ์ž‘์—…์„ ๋งŒ๋“ค๊ณ  ์ž‘์—…์— ๋ฐ˜๋ณต ์ผ์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Cloud Scheduler์—๋Š” ๋ฌด๋ฃŒ ๋“ฑ๊ธ‰์ด ์žˆ์œผ๋ฏ€๋กœ ์ด ๋น ๋ฅธ ์‹œ์ž‘์„ ์‹คํ–‰ํ•ด๋„ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Scheduler, Pub/Sub APIs:

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com
  8. Install the Google Cloud CLI.

  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Cloud Scheduler, Pub/Sub APIs:

    gcloud services enable cloudscheduler.googleapis.com pubsub.googleapis.com

Pub/Sub ์ฃผ์ œ ๋ฐ ๊ตฌ๋… ๋งŒ๋“ค๊ธฐ

Pub/Sub ์ฃผ์ œ๋Š” ๊ฒŒ์‹œ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ์ฃผ์ œ์— ๊ฒŒ์‹œ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด ํ•ด๋‹น ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ตฌ๋…์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํฌ๋ก  ์ž‘์—…์— ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  Pub/Sub ์ฃผ์ œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud pubsub topics create cron-topic
    

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด cron-topic์ด๋ผ๋Š” ์ฃผ์ œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  2. ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Pub/Sub ๊ตฌ๋…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud pubsub subscriptions create cron-sub --topic cron-topic
    

Cloud Scheduler๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋ก  ์ž‘์—… ๋งŒ๋“ค๊ธฐ

gcloud scheduler jobs create pubsub ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต ์ผ์ •์œผ๋กœ Pub/Sub ๋Œ€์ƒ์œผ๋กœ ์ „์†ก๋˜๋Š” ํฌ๋ก  ์ž‘์—…์ด๋ผ๋Š” ์ž‘์—… ๋‹จ์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ์ •์€ unix-cron์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํฌ๋ก  ์ž‘์—… ํ˜•์‹ ๋ฐ ์‹œ๊ฐ„๋Œ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud scheduler jobs create pubsub my-cron-job \
    --schedule="30 16 * * 7" \
    --topic=cron-topic \
    --location="us-central1" \
    --message-body="Hello world"

์ผ์š”์ผ ์˜คํ›„ 4์‹œ 30๋ถ„์— Pub/Sub ์ฃผ์ œ์— 'Hello world' ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ์ž‘์—…์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ์‹คํ–‰

์ง€์ •๋œ ์ผ์ •์— ๋”ฐ๋ผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ์ž‘์—…์„ ๊ฐ•์ œ๋กœ ์ฆ‰์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud scheduler jobs run my-cron-job --location="us-central1"

์ดˆ๊ธฐ ๊ตฌ์„ฑ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ์—์„œ ๋งŒ๋“  ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ Pub/Sub ์ฃผ์ œ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Pub/Sub์—์„œ ๊ฒฐ๊ณผ ํ™•์ธ

Pub/Sub ์ฃผ์ œ๊ฐ€ ํ•ด๋‹น ์ž‘์—…์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

  1. ๊ตฌ๋…์—์„œ Pub/Sub ๋ฉ”์‹œ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ:

    gcloud pubsub subscriptions pull cron-sub --limit 5
    

    ์ฒ˜์Œ์— ๊ฐ€์ ธ์˜จ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์œผ๋ฉด ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ž‘์—… ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ด…๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    DATA: Hello world!
    MESSAGE_ID: 5028933846601543
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
    

์‚ญ์ œ

์ด ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค ๋น„์šฉ์ด Google Cloud ๊ณ„์ •์— ์ฒญ๊ตฌ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋œ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

๋˜๋Š” ์ด ๋น ๋ฅธ ์‹œ์ž‘์—์„œ ๋งŒ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

  1. ํฌ๋ก  ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. Cloud Shell ๋˜๋Š” gcloud CLI๋ฅผ ์„ค์น˜ํ•œ ๋จธ์‹ ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud scheduler jobs delete MY_JOB \
        --location="LOCATION"
    

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

    • MY_JOB: ์‚ญ์ œํ•  ์ž‘์—…์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • LOCATION: ์ž‘์—…์˜ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์•ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ App Engine ์•ฑ ์œ„์น˜๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. Pub/Sub ์ฃผ์ œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. Cloud Shell ๋˜๋Š” gcloud CLI๋ฅผ ์„ค์น˜ํ•œ ๋จธ์‹ ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud pubsub topics delete TOPIC_ID
    

    TOPIC_ID๋ฅผ ์‚ญ์ œํ•  Pub/Sub ์ฃผ์ œ์˜ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  3. Pub/Sub ๊ตฌ๋…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. Cloud Shell ๋˜๋Š” gcloud CLI๋ฅผ ์„ค์น˜ํ•œ ๋จธ์‹ ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    

    SUBSCRIPTION_ID๋ฅผ ์‚ญ์ œํ•  Pub/Sub ๊ตฌ๋…์˜ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

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