์„œ๋น„์Šค CPU ํ•œ๋„ ๊ตฌ์„ฑ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๊ฐ Cloud Run ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉํ•  CPU ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Cloud Run ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค๋Š” CPU 1๊ฐœ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์˜ ์„ค๋ช…๋Œ€๋กœ ์ด ๊ฐ’์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์‹œ์ž‘ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ์ค‘์— CPU ํ• ๋‹น์„ ์ผ์‹œ์ ์œผ๋กœ ๋Š˜๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ธ ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

CPU ํ•œ๋„ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ

๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” 1๊ฐœ์˜ CPU๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ์— ํ‘œ์‹œ๋œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ‘œ

๋‹ค์Œ์€ CPU์˜ ์ตœ์†Œ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

CPU ์ตœ์†Œ ๋ฉ”๋ชจ๋ฆฌ
1 128MB
2 128MB
4 2GiB
6 4GiB
8 4GiB

๋˜๋Š” CPU 1๊ฐœ ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 0.08~1 ์‚ฌ์ด์˜ ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(0.01 ๋‹จ์œ„). 1๋ณด๋‹ค ํฐ ๊ฐ’์€ ์ •์ˆ˜ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CPU 1๊ฐœ ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์„ค์ • ์š”๊ตฌ์‚ฌํ•ญ
๋ฉ”๋ชจ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„๋ฅผ 512MiB ์ด์ƒ์œผ๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด CPU๊ฐ€ ์ตœ์†Œ 0.5๊ฐœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„๋ฅผ 1GiB ์ด์ƒ์œผ๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด CPU๊ฐ€ ์ตœ์†Œ 1๊ฐœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋™์‹œ ์‹คํ–‰ ์ตœ๋Œ€ ๋™์‹œ ์‹คํ–‰์„ 1๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐ์ œ ๊ฒฐ์ œ ์„ค์ •์„ ์š”์ฒญ ๊ธฐ๋ฐ˜ ๊ฒฐ์ œ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ํ™˜๊ฒฝ 1์„ธ๋Œ€ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์—ญํ• 

Cloud Run ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋‹ค์Œ IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”.

Cloud Run๊ณผ ์—ฐ๊ฒฐ๋œ IAM ์—ญํ•  ๋ฐ ๊ถŒํ•œ ๋ชฉ๋ก์€ Cloud Run IAM ์—ญํ•  ๋ฐ Cloud Run IAM ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. Cloud Run ์„œ๋น„์Šค๊ฐ€ Cloud ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์€Google Cloud API์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์„œ๋น„์Šค ID ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐฐํฌ ๊ถŒํ•œ ๋ฐ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

CPU ํ•œ๋„ ๊ตฌ์„ฑ

๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ƒˆ ๋ฒ„์ „์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…์‹œ์  ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์œผ๋ฉด ์ดํ›„ ๋ฒ„์ „์—๋„ ์ด ๊ตฌ์„ฑ ์„ค์ •์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ƒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ƒˆ ๋ฒ„์ „์„ ๋ฐฐํฌํ•  ๋•Œ Google Cloud ์ฝ˜์†”, gcloud ๋ช…๋ น์ค„ ๋˜๋Š” YAML ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ CPU ํ•œ๋„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Run์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Run์œผ๋กœ ์ด๋™

  2. ๋ฉ”๋‰ด์—์„œ ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ƒˆ ๋ฒ„์ „ ์ˆ˜์ • ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ดˆ๊ธฐ ์„œ๋น„์Šค ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํ‚น, ๋ณด์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

  4. ์ปจํ…Œ์ด๋„ˆ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฏธ์ง€

    • CPU 1๊ฐœ ๋ฏธ๋งŒ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ปค์Šคํ…€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ์›ํ•˜๋Š” CPU ํ•œ๋„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 1, 2, 4, 6 ๋˜๋Š” 8 CPU ๊ฐ’์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ CPU 1๊ฐœ ๋ฏธ๋งŒ์˜ ๊ฒฝ์šฐ 0.08์—์„œ 1.00 ๋ฏธ๋งŒ์˜ ๊ฐ’์„ 0.01 ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์„ค์ •์€ CPU ํ•œ๋„ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ์˜ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  5. ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์„œ๋น„์Šค์˜ CPU ํ•œ๋„๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud run services update SERVICE --cpu CPU

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • SERVICE๋ฅผ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • CPU๋ฅผ ์›ํ•˜๋Š” CPU ํ•œ๋„๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. 1, 2, 4, 6 ๋˜๋Š” 8 CPU ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ CPU 1๊ฐœ ๋ฏธ๋งŒ์˜ ๊ฒฝ์šฐ 0.08์—์„œ 1.00 ๋ฏธ๋งŒ์˜ ๊ฐ’์„ 0.01 ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์„ค์ •์€ CPU ํ•œ๋„ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ์˜ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋˜ํ•œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์ค‘ CPU๋ฅผ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud run deploy --image IMAGE_URL --cpu CPU

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • IMAGE_URL: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ(์˜ˆ: us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ €์žฅ์†Œ REPO_NAME์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. URL์˜ ํ˜•์‹์€ LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG์ž…๋‹ˆ๋‹ค.
  • CPU๋ฅผ 1, 2, 4, 6 ๋˜๋Š” 8 CPU ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ CPU 1๊ฐœ ๋ฏธ๋งŒ์˜ ๊ฒฝ์šฐ 0.08์—์„œ 1.00 ๋ฏธ๋งŒ์˜ ๊ฐ’์„ 0.01 ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์„ค์ •์€ CPU ํ•œ๋„ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ์˜ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

YAML

  1. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ YAML ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services describe SERVICE --format export > service.yaml
  2. cpu ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                cpu: CPU

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • SERVICE: Cloud Run ์„œ๋น„์Šค ์ด๋ฆ„
    • IMAGE_URL: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ(์˜ˆ: us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ €์žฅ์†Œ REPO_NAME์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. URL์˜ ํ˜•์‹์€ LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG์ž…๋‹ˆ๋‹ค.
    • CPU๋ฅผ ์›ํ•˜๋Š” CPU ํ•œ๋„ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. 1, 2, 4, 6 ๋˜๋Š” 8 CPU ๊ฐ’์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ CPU 1๊ฐœ ๋ฏธ๋งŒ์˜ ๊ฒฝ์šฐ 0.08์—์„œ 1.00 ๋ฏธ๋งŒ์˜ ๊ฐ’์„ 0.01 ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์„ค์ •์€ CPU ํ•œ๋„ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ์˜ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    • REVISION์„ ์ƒˆ ๋ฒ„์ „ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค(์žˆ๋Š” ๊ฒฝ์šฐ). ์ƒˆ ๋ฒ„์ „ ์ด๋ฆ„์„ ์ œ๊ณตํ•  ๊ฒฝ์šฐ ๋‹ค์Œ ๊ธฐ์ค€์„ ๋ฐ˜๋“œ์‹œ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • SERVICE-๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ์†Œ๋ฌธ์ž, ์ˆซ์ž, -๋งŒ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
      • -๋กœ ๋๋‚˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
      • 63์ž(์˜๋ฌธ ๊ธฐ์ค€) ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services replace service.yaml

Terraform

Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ Terraform ๋ช…๋ น์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Terraform ๊ตฌ์„ฑ์—์„œ ๋‹ค์Œ์„ google_cloud_run_v2_service ๋ฆฌ์†Œ์Šค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          # CPU usage limit
          cpu = "1"
        }
      }
    }
  }
}

์•ž์„œ ๋‚˜์˜จ google_cloud_run_v2_service ๋ฆฌ์†Œ์Šค๋Š” template.containers.resources.limits์—์„œ CPU ํ•œ๋„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

1์„ ์›ํ•˜๋Š” CPU ์ˆ˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ํŒ: 1์€ vCPU 1๊ฐœ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ ์„ค์ •

๋ฒ„์ „์˜ ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ ๊ธฐ๋Šฅ์€ ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ์‹œ๊ฐ„ ๋™์•ˆ ๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘๋œ ํ›„ 10์ดˆ ๋™์•ˆ ์ถ”๊ฐ€ CPU๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ CPU ๋ถ€์ŠคํŠธ๋Š” CPU ํ•œ๋„ ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

CPU ํ•œ๋„ ๋ถ€์Šคํ‹ฐ๋“œ CPU
0~1 2
2 4
4 8
6 8
8 8

์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„ ๋™์•ˆ ํ• ๋‹น๋œ ๋ถ€์ŠคํŠธ๋œ CPU์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ ์‹œ๊ฐ„์ด 15์ดˆ์ด๊ณ  ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ 2๊ฐœ์˜ CPU๋ฅผ ํ• ๋‹นํ•œ ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘์„ ์™„๋ฃŒํ•œ ํ›„ 10์ดˆ๋ฅผ ํฌํ•จํ•œ ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ์‹œ๊ฐ„(๋” ์งง์„ ์ˆ˜ ์žˆ์Œ) ๋™์•ˆ 4๊ฐœ CPU์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋˜๊ณ  ๋‚˜๋จธ์ง€ ์ปจํ…Œ์ด๋„ˆ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ 2๊ฐœ์˜ CPU์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค.

Cloud Run ๋ฐฐํฌ์—์„œ ์‚ฌ์ด๋“œ์นด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ CPU ๋ถ€์ŠคํŠธ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. Cloud Run์€ CPU ํ•œ๋„์— ๋”ฐ๋ผ ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ถ€์ŠคํŒ…๋œ CPU ์–‘์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†”, Google Cloud CLI, YAML ํŒŒ์ผ ๋˜๋Š” Terraform ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Run์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Run์œผ๋กœ ์ด๋™

  2. ๋ฉ”๋‰ด์—์„œ ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ƒˆ ๋ฒ„์ „ ์ˆ˜์ • ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ดˆ๊ธฐ ์„œ๋น„์Šค ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํ‚น, ๋ณด์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

  4. ์ปจํ…Œ์ด๋„ˆ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฏธ์ง€

    • ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒ ํ•ด์ œํ•˜์„ธ์š”.
  5. ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ์„œ๋น„์Šค์— ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud run services update SERVICE --cpu-boost

    SERVICE๋ฅผ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ๋ฐฐํฌ ์ค‘์— ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud run deploy --image IMAGE_URL --cpu-boost

    IMAGE_URL์„ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ(์˜ˆ: us-docker.pkg.dev/cloudrun/container/hello:latest)๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. Artifact Registry๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ €์žฅ์†Œ REPO_NAME์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. URL์˜ ํ˜•์‹์€ LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG์ž…๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud run services update SERVICE --no-cpu-boost

    SERVICE๋ฅผ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ๋ฐฐํฌ ์ค‘์— ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud run deploy --image IMAGE_URL --no-cpu-boost

YAML

  1. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ YAML ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services describe SERVICE --format export > service.yaml
  2. ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด 'true'๋ฅผ ์ง€์ •ํ•˜๊ณ  ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด 'false'๋ฅผ ์ง€์ •ํ•˜์—ฌ run.googleapis.com/startup-cpu-boost ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/startup-cpu-boost: 'true'

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • SERVICE: Cloud Run ์„œ๋น„์Šค ์ด๋ฆ„
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services replace service.yaml

Terraform

Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ Terraform ๋ช…๋ น์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Terraform ๊ตฌ์„ฑ์—์„œ ๋‹ค์Œ์„ google_cloud_run_v2_service ๋ฆฌ์†Œ์Šค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        startup_cpu_boost = CPU_BOOST
      }
    }
  }
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • SERVICE๋ฅผ Cloud Run ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • REGION์„ Google Cloud ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด europe-west1์ž…๋‹ˆ๋‹ค.
  • CPU_BOOST๋ฅผ ์‹œ์ž‘ CPU ๋ถ€์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด true๋กœ, ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด false๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

CPU ์„ค์ • ๋ณด๊ธฐ

Cloud Run ์„œ๋น„์Šค์˜ ํ˜„์žฌ CPU ํ• ๋‹น ์„ค์ •์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud Run์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Run์œผ๋กœ ์ด๋™

  2. ๊ด€์‹ฌ์ด ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  3. ๋ฒ„์ „ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์˜ค๋ฅธ์ชฝ์˜ ์„ธ๋ถ€์ •๋ณด ํŒจ๋„์—์„œ CPU ์„ค์ •์ด ์ปจํ…Œ์ด๋„ˆ ํƒญ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

gcloud

  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

    gcloud run services describe SERVICE
  2. ๋ฐ˜ํ™˜๋œ ๊ตฌ์„ฑ์—์„œ CPU ์„ค์ •์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋”ฉ ๋ฐ CPU ์‚ฌ์šฉ๋ฅ 

vCPU๊ฐ€ 1๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” CPU ํ•œ๋„๋ฅผ ์„ ํƒํ•  ๋•Œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์Šค๋ ˆ๋”ฉ ๋ชจ๋ธ์„ ๊ณ ๋ คํ•˜์„ธ์š”. ์ž๋™ ํ™•์žฅ ์‹œ Cloud Run์€ ํ• ๋‹น๋œ ๋ชจ๋“  CPU์˜ ํ‰๊ท  CPU ์‚ฌ์šฉ๋ฅ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ธ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์ฝ”์–ด๋งŒ ์™„์ „ํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ ค๋„ ํ‰๊ท  CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด CPU ๊ธฐ๋ฐ˜ ์ž๋™ ํ™•์žฅ์ด ์˜ˆ์ƒ๋Œ€๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ ์Šค๋ ˆ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด ๋™์ž‘์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์ด ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ vCPU 1๊ฐœ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CPU ๊ธฐ๋ฐ˜ ์ž๋™ ํ™•์žฅ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋‹ค์ค‘ CPU๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋™์‹œ ์‹คํ–‰ ์„ค์ •์„ ์กฐ์ •ํ•ด ๋ณด์„ธ์š”.