GCP Price Info Driver Development Guide - cloud-barista/cb-spider GitHub Wiki

    * GCP Price Info ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ๊ด€๋ จ ์ด์Šˆ ๋ฐ ์ถ”์ง„ ํ˜„ํ™ฉ

[์ด์Šˆ]

  • GetPriceInfo() ์ œ๊ณต ํ˜•์ƒ์„ ์œ„ํ•œ ์ ํ•ฉํ•œ API ๋ถ€์žฌ
  • 1๊ฐœ ์ด์ƒ์˜ API ์กฐํ•ฉ์œผ๋กœ ์ƒ์„ฑ/๋ณ€ํ™˜์œผ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,
    • (์ด์Šˆ-1) ๋ฒ ํƒ€ ๋ฒ„์ „ API ํ™œ์šฉ์œผ๋กœ ์ถ”ํ›„ ์ž ์žฌ์  ์ด์Šˆ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
    • (์ด์Šˆ-2) CSP API์˜ ๊ณผํ•œ ํ˜ธ์ถœ ํ•„์š” => Call Limit ๋ฐœ์ƒ => worst elapsed time (์ตœ์†Œ 18๋ถ„)
  • ์„ธ๋ถ€ ๋‚ด์šฉ: ๋‹ค์Œ MSG ์ฐธ๊ณ 
    • image

[๋‹ค์Œ ๋ฐฉ์•ˆ์œผ๋กœ ์ถ”์ง„] 2024.01.10 ์ดํ›„

  • 1์•ˆ) ๋Œ€๊ธฐ์ค‘, best, ๊ตฌ๊ธ€ ์‘๋‹ต ์˜์กด์ 

  • 3์•ˆ) ์ถ”์ง„์ค‘, Call Limit/์†Œ์š”์‹œ๊ฐ„ ์ด์Šˆ ์กด์žฌ

    • ๊ตฌ๊ธ€ ์‘๋‹ต ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ 1์•ˆ)์œผ๋กœ ์ „ํ™˜ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ
  • ์ฐธ๊ณ : 1์•ˆ)/2์•ˆ) ์„ธ๋ถ€ ์„ค๋ช…

    • image

[์ดํ•˜ ๋‚ด์šฉ์€ GCP ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๊ด€๋ จ ์ฐธ๊ณ  ์šฉ์œผ๋กœ ํ™œ์šฉ] 2024.01.10 ์ด์ „

1. GCP ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ• ๊ด€๋ จ (Compute Engine ์ค‘์‹ฌ)

  • ๋” ๋งŽ์€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Spider ๊ฐ€๊ฒฉ์ •๋ณด ์ œ๊ณต๊ณผ ๊ด€๋ จ ์žˆ๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ฆฌ
  • (1) SKU ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ•
  • (2) Cost Estimation, Cost Calculator๋ฅผ ํ™œ์šฉํ•œ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ•
  • (3) ์ธ์Šคํ„ด์Šค ํƒ€์ž…(๋จธ์‹  ํƒ€์ž…) ์ค‘์‹ฌ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ•
  • โ€ป (1), (2), (3) ๊ฐœ๋ณ„ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Spider GetPriceInfo() ํ˜•์ƒ ์ œ๊ณต ์–ด๋ ค์›€
    • (1) ๋ฐฉ๋ฒ•: ํƒ€ CSP์™€ ๋‹ฌ๋ฆฌ SKU ์ œํ’ˆ ์ •๋ณด์— ์ธ์Šคํ„ด์Šค ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑ
    • (2) ๋ฐฉ๋ฒ•: ์‚ฌ์šฉํ•  ์ž์›/์„œ๋น„์Šค ๋‹จ์œ„ ์ž…๋ ฅ์„ ํ†ตํ•œ ์˜ˆ์ƒ ๊ฐ€๊ฒฉ์„ ์ œ๊ณต => ํ•„์š”ํ•œ ๋ชจ๋“  ์ž์›/์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ž…๋ ฅ ํ•„์š”, Call Limit ์ด์Šˆ ๋“ฑ
    • (3) ๋ฐฉ๋ฒ•: Cached ์ •๋ณด ๋˜๋Š” Web Page ํ˜•ํƒœ๋กœ ์ œ๊ณต => old ๊ฐ€๊ฒฉ ์ •๋ณด ๋˜๋Š” html ํŒŒ์‹ฑ์ด ํ•„์š” => ์œ ์ง€๋ณด์ˆ˜ ์ด์Šˆ ๋“ฑ ๋ฆฌ์Šคํฌ ์กด์žฌ
  • ๊ด€๋ จ ํ˜„ํ™ฉ
    • SKU ID์— ๊ด€๋ จ๋œ Instance type์„ ์–ป๊ณ ์ž ํ•˜๋Š”๋ฐ, ์–ป๊ธฐ ํž˜๋“ค ๋‹ค๋Š” ์ด์Šˆ (๊ทผ๋ž˜์—๋„ ๋ฆฌํ”Œ์ด ๋‹ฌ๋ฆฌ๊ณ  ์žˆ์Œ)
  • [์ฐธ๊ณ : SKU & Cloud SKU]
    • image
  • image

2. (1) SKU ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ํ˜„ํ™ฉ

  • API/CLI ๋“ฑ์„ ํ†ตํ•ด์„œ ์ „์ฒด ์ œํ’ˆ/์„œ๋น„์Šค๋ณ„ ๊ฐ€๊ฒฉ ์ •์ฑ…์„ ์ƒ์„ธํ•˜๊ฒŒ ์ œ๊ณต
  • ๋‹ค๋งŒ, VM ์ธ์Šคํ„ด์Šค ํƒ€์ž…(๋จธ์‹  ํƒ€์ž…) ์ •๋ณด๊ฐ€ Spider์—์„œ ์ œ๊ณตํ•˜๋Š” ์ˆ˜์ค€์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Œ
  • SKU ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ •๋ณด์— ํฌํ•จ๋œ ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์ •๋ณด๋Š” resourceGroup ๋ฐ description ๋“ฑ์— ์•ฝํ•˜๊ฒŒ ํฌํ•จ
  • ์‚ฌ์‹ค, GCP์˜ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค ํƒ€์ž…์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— SKU ์ž…์žฅ์—์„œ๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์ธ์Šคํ„ด์Šค ํƒ€์ž…์˜ ์ค‘์š”๋„๊ฐ€ ํฌ์ง€ ์•Š๋Š” ๋“ฏํ•จ
    • ๋Œ€์‹ , ์ธ์Šคํ„ด์Šค ํƒ€์ž… ๊ทธ๋ฃน(N1Standard ๋“ฑ)์˜ CPU, Mem ๊ธฐ์ค€ ๊ฐ€๊ฒฉ์„ ์ œ์‹œํ•˜๊ณ  ์žˆ์Œ
    • ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค ํƒ€์ž…(n1-standard-16 )์— ๋Œ€ํ•œ ๊ฐ€๊ฒฉ์€ ๊ณ„์‚ฐ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Œ

[์‚ฌ์ „ ์ค€๋น„]

  • API Key ์ƒ์„ฑ: Web Console => API ๋ฐ ์„œ๋น„์Šค => ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด => + ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋งŒ๋“ค๊ธฐ => API Key
  • Cloud Billing API Enable ๋ฐฉ๋ฒ• ์˜ˆ์‹œ

[ํ™œ์šฉ ์˜ˆ์‹œ ๋ฐ ์ œ๊ณต ์ •๋ณด]

$ curl https://cloudbilling.googleapis.com/v1/services?key={your API KEY}  # ํ•œ๋ฒˆ์— ์ „๋ถ€ ์ œ๊ณต
{
  "services": [
    {
      "name": "services/0017-8C5E-5B91",
      "serviceId": "0017-8C5E-5B91",
      "displayName": "OpenLogic CentOS 7.8 (v20200922) - Security Hardened",
      "businessEntityName": "businessEntities/GCP"
    },
    ...
$ curl https://cloudbilling.googleapis.com/v1/services/6F81-5844-456A/skus?key={your API KEY}   # Next Page 3๋ฒˆ ์ •๋„ Call ํ•ด์•ผ ํ•จ(https://...&pageToken=xxx)
{
  "skus": [
    {
      "name": "services/6F81-5844-456A/skus/0006-C9C8-BB6F",
      "skuId": "0006-C9C8-BB6F",
      "description": "Commitment v1: Memory-optimized Cpu in Phoenix for 1 Year",
      "category": {
        "serviceDisplayName": "Compute Engine",
        "resourceFamily": "Compute",
        "resourceGroup": "CPU",
        "usageType": "Commit1Yr"
      },
      "serviceRegions": [
        "us-west8"
      ],
      "pricingInfo": [
        {
          "summary": "",
          "pricingExpression": {
            "usageUnit": "h",
            "displayQuantity": 1,
            "tieredRates": [
              {
                "startUsageAmount": 0,
                "unitPrice": {
                  "currencyCode": "USD",
                  "units": "0",
                  "nanos": 20550000
                }
              }
            ],
            "usageUnitDescription": "hour",
            "baseUnit": "s",
            "baseUnitDescription": "second",
            "baseUnitConversionFactor": 3600
          },
          "currencyConversionRate": 1,
          "effectiveTime": "2024-01-08T08:49:30.488759Z"
        }
      ],
      "serviceProviderName": "Google",
      "geoTaxonomy": {
        "type": "REGIONAL",
        "regions": [
          "us-west8"
        ]
      }
    },
    ...

3. (2) Cost Estimation, Cost Calculator๋ฅผ ํ™œ์šฉํ•œ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ•

  • ์ƒ๋žต: Call Limit ์ด์Šˆ ๋“ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ

4. (3) ์ธ์Šคํ„ด์Šค ํƒ€์ž…(๋จธ์‹  ํƒ€์ž…) ์ค‘์‹ฌ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ํ˜„ํ™ฉ

  • GCP Web: html ํŒŒ์‹ฑ ๋ฐ ์œ ์ง€๋“ฑ ๋ฆฌ์Šคํฌ๊ฐ€ ์žˆ์Œ
    • ํ™œ์šฉํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ, ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์ข…๋ฅ˜ ๋ฐ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๊ธฐ์ค€/๊ฒ€์ฆ ๋“ฑ์— ํ™œ์šฉ
  • Cached json file ๋ฐ GCP Web ๋“ฑ์„ ํ†ตํ•ด์„œ VM ์ธ์Šคํ„ด์Šค ์ค‘์‹ฌ์˜ ๊ฐ€๊ฒฉ ์ •์ฑ…์„ ์ œ๊ณต
    • Cached json file: ํ˜„์žฌ ์‹ค๊ธฐ๊ฐ„ ๊ฐ€๊ฒฉ ์ œ๊ณต์ด ์–ด๋ ค์›€,

[ํ™œ์šฉ ์˜ˆ์‹œ ๋ฐ ์ œ๊ณต ์ •๋ณด]

  • VM ์ธ์Šคํ„ด์Šค ํƒ€์ž…(๋จธ์‹  ํƒ€์ž…) ์ œ๊ณต ์›น ํŽ˜์ด์ง€

    https://cloud.google.com/compute/docs/machine-resource?hl=ko#standard_machine_types
    
  • VM ์ธ์Šคํ„ด์Šค ๊ฐ€๊ฒฉ ์ฑ…์ • ์ œ๊ณต ์›นํŽ˜์ด์ง€

    • ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์‹œ Compute Engine ๋จธ์‹  ์œ ํ˜•๋ณ„ ๊ฐ€๊ฒฉ ์ •๋ณด ๊ฒ€์ฆ ๋“ฑ์œผ๋กœ ์ฐธ๊ณ 
    https://cloud.google.com/compute/vm-instance-pricing?hl=ko
    
  • Cached json file

    • ์ฒซ์ค„ comment๋ฅผ ์ž˜ ๋ด์•ผ ํ•จ: update ๋˜๊ธฐ ์ „ ์‚ฌ์ด์˜ ๊ฐ€๊ฒฉ์€ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ

      • ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๋ฉด์„œ ์œ ์ง€ ๋˜๋Š” ๊ฒƒ์€ ๋‚ด๋ถ€์—์„œ ๋˜๋Š” ํŠน์ˆ˜ ๊ทธ๋ฃน์—์„œ ๊ณ„์† ํ™œ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •๋˜๋ฉฐ,
      • ๋‚ด๋ถ€์—์„œ๋„ ์ธ์Šคํ„ด์Šค ์„ธ๋ถ€ ํƒ€์ž…๋ณ„ ๊ฐ€๊ฒฉ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ์Œ
      • ํ•„์š”์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ๊ตฌ๊ธ€๋ง์—์„œ๋„ ๋ณด์ด๊ณ  ๋‹ค์Œ ๋“ฑ๋ก๋œ ์ด์Šˆ๋ฅผ ๋ณด๋ฉด, ์ง€์†์ ์œผ๋กœ ์ฐพ๊ณ  ์žˆ๋Š” ์ƒํ™ฉ
    • ์ž์› ๊ทธ๋ฃน๋ณ„๋กœ 1๋…„ ์•ฝ์ • ๋ฐ 3๋…„ ์•ฝ์ • ๊ฐ€๊ฒฉ ์ œ๊ณต

    • ์ œํ’ˆ/์„œ๋น„์Šค์— ๋Œ€ํ•œ Region๋ณ„ OnDemand ๊ฐ€๊ฒฉ๊ณผ Preemptible ๊ฐ€๊ฒฉ ์ •๋ณด ํฌํ•จ

    • ํ™œ์šฉ ๋ฐฉ๋ฒ• ๋ฐ ์ •๋ณด ์˜ˆ์‹œ

curl https://cloudpricingcalculator.appspot.com/static/data/pricelist.json
{
  "comment": "This JSON data is obsolete. Please use https://cloud.google.com/billing/v1/how-tos/catalog-api instead.",
  "updated": "3-January-2024",
  "version": "v1.75",
  "gcp_price_list": {
    "CP-ALLOYDB-BACKUP": {
      "asia-east1": 0.0001589,
      "asia-east2": 0.0001918,
      "asia-northeast1": 0.0001753,
      "asia-northeast2": 0.0001753,
      "asia-northeast3": 0.0001753,
      "asia-south1": 0.0001425,
      ...
  • N1 ๋จธ์‹  ์œ ํ˜• ์•ฝ์ • ๋ชฉ๋ก ํ™•์ธ ์˜ˆ์‹œ
grep N1 pricelist.json |grep YEAR
    "CP-COMPUTEENGINE-N1-CUD-1-YEAR-CPU": {
    "CP-COMPUTEENGINE-N1-CUD-1-YEAR-RAM": {
    "CP-COMPUTEENGINE-N1-CUD-3-YEAR-CPU": {
    "CP-COMPUTEENGINE-N1-CUD-3-YEAR-RAM": {
  • N1 ๋จธ์‹  ์œ ํ˜• 1๋…„ ์•ฝ์ • ๊ฐ€๊ฒฉ (3๋…„ ์•ฝ์ • ๊ฐ€๊ฒฉ์€ ์ƒ๋žต)
    • CPU ๊ฐ€๊ฒฉ ์ •๋ณด ์˜ˆ์‹œ
cat pricelist.json |jq '.gcp_price_list."CP-COMPUTEENGINE-N1-CUD-1-YEAR-CPU"'
{
  "africa-south1": 0.02604882,
  "asia-east1": 0.023059,
  "asia-east2": 0.0278655,
  "asia-northeast1": 0.025589,
  "asia-northeast2": 0.025589,
  "asia-northeast3": 0.025589,      <=========
  "asia-south1": 0.0239186,
  ...
    • Memory ๊ฐ€๊ฒฉ ์ •๋ณด ์˜ˆ์‹œ
cat pricelist.json |jq '.gcp_price_list."CP-COMPUTEENGINE-N1-CUD-1-YEAR-RAM"'
{
  "africa-south1": 0.003491052,
  "asia-east1": 0.003091,
  "asia-east2": 0.0037346,
  "asia-northeast1": 0.003414,
  "asia-northeast2": 0.003414,
  "asia-northeast3": 0.003414,       <=========
  "asia-south1": 0.003205,
  • GCP Web์—์„œ ํ™•์ธ
    • image
  • n1-standard-16 OnDemand ๊ฐ€๊ฒฉ ์ •๋ณด ์˜ˆ์‹œ
cat pricelist.json |jq '.gcp_price_list."CP-COMPUTEENGINE-VMIMAGE-N1-STANDARD-16"'
{
  "asia": 0.88,
  "asia-east": 0.88,
  "asia-east1": 0.88,
  "asia-east2": 1.0634,
  "asia-northeast": 0.976,
  "asia-northeast1": 0.976,
  "asia-northeast2": 0.976,
  "asia-northeast3": 0.976,        <===========
  "asia-south1": 0.9127,
  ...
  • n1-standard-16 Preemptible ๊ฐ€๊ฒฉ ์˜ˆ์‹œ
cat pricelist.json |jq '.gcp_price_list."CP-COMPUTEENGINE-VMIMAGE-N1-STANDARD-16-PREEMPTIBLE"'
{
  "asia": 0.176,
  "asia-east": 0.176,
  "asia-east1": 0.176,
  "asia-east2": 0.2242,
  "asia-northeast": 0.212,
  "asia-northeast1": 0.212,
  "asia-northeast2": 0.212,
  "asia-northeast3": 0.212,      <==========
  "asia-south1": 0.19243,
  • GCP Web์—์„œ ํ™•์ธ
    • image

5. ์ œ์•ˆ ๋ฐฉ๋ฒ• ๋ฐ ๊ฐ€์ด๋“œ

  • ๋จธ์‹  ํƒ€์ž… ์ƒ์„ธ ์ •๋ณด์™€ ์œ„ ๋ฐฉ๋ฒ• ์ค‘ (1) SKU ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ• ์กฐํ•ฉ/๋ณ€ํ™˜ํ•˜์—ฌ ํ™œ์šฉ

['๋จธ์‹  ํƒ€์ž… ์ƒ์„ธ ์ •๋ณด' ํ™œ์šฉ ์˜ˆ์‹œ ๋ฐ ์ œ๊ณต ์ •๋ณด]

  • getPriceInfo()๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ œํ’ˆ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ
  • GCP๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋จธ์‹  ํƒ€์ž… ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ™œ์šฉ
  • ๋ณธ ๊ฐ€์ด๋“œ์—์„œ๋Š” ํŽธ์˜์ƒ cli๋ฅผ ํ™œ์šฉ(๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์‹œ์—๋Š” SDK API ํ™œ์šฉ)
  • ํŽธ์˜์ƒ ์ผ๋‹จ ์ „์ฒด ๋จธ์‹  ํƒ€์ž…์„ ํŒŒ์ผ๋กœ ๋ฐ›๊ธฐ
gcloud compute machine-types list --format=json > gcloud.compute.machine-types.list-json.json
  • Zone๋ณ„๋กœ ์ œ๊ณตํ•˜๋Š” ๋จธ์‹  ํƒ€์ž…๊ณผ ๊ด€๋ จ๋œ ๊ทœ๊ฒฉ ์ •๋ณด๋ฅผ ์ œ๊ณต
  • ์ œ๊ณต ์ •๋ณด ์˜ˆ์‹œ
[
  {
    "accelerators": [
      {
        "guestAcceleratorCount": 1,
        "guestAcceleratorType": "nvidia-tesla-a100"
      }
    ],
    "creationTimestamp": "1969-12-31T16:00:00.000-08:00",
    "description": "Accelerator Optimized: 1 NVIDIA Tesla A100 GPU, 12 vCPUs, 85GB RAM",
    "guestCpus": 12,
    "id": "1000012",
    "imageSpaceGb": 0,
    "isSharedCpu": false,
    "kind": "compute#machineType",
    "maximumPersistentDisks": 128,
    "maximumPersistentDisksSizeGb": "263168",
    "memoryMb": 87040,
    "name": "a2-highgpu-1g",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/powerkimhub/zones/us-central1-a/machineTypes/a2-highgpu-1g",
    "zone": "us-central1-a"
  },
  ...
  • ์ฐธ๊ณ : ์ œ๊ณตํ•˜๋Š” ๋จธ์‹  ํƒ€์ž… ์ข…๋ฅ˜ (243๊ฐœ)
grep name gcloud.compute.machine-types.list-json.json |sort |uniq
    "name": "a2-highgpu-1g",
    "name": "a2-highgpu-2g",
    "name": "a2-highgpu-4g",
    "name": "a2-highgpu-8g",
    "name": "a2-megagpu-16g",
  • ์ œ๊ณตํ•˜๋Š” ๋จธ์‹  ํƒ€์ž… ์ •๋ณด๋Š” ๋Œ€์ƒ ๋จธ์‹  ํƒ€์ž…์„ ์ œ๊ณตํ•˜๋Š” zone๋งˆ๋‹ค ์ค‘๋ณต ํ•˜์—ฌ ์ œ๊ณต
    • ์ฐธ๊ณ : ๋จธ์‹  ํƒ€์ž…์ด ๋™์ผํ•˜๋ฉด, zone ์ •๋ณด๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ ๋™์ผํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณต
cat gcloud.compute.machine-types.list-json.json | jq 'map(select(.name=="n1-standard-1"))'
[
  {
    "creationTimestamp": "1969-12-31T16:00:00.000-08:00",
    "description": "1 vCPU, 3.75 GB RAM",
    "guestCpus": 1,
    "id": "3001",
    "imageSpaceGb": 10,
    "isSharedCpu": false,
    "kind": "compute#machineType",
    "maximumPersistentDisks": 128,
    "maximumPersistentDisksSizeGb": "263168",
    "memoryMb": 3840,
    "name": "n1-standard-1",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/powerkimhub/zones/us-central1-a/machineTypes/n1-standard-1",
    "zone": "us-central1-a"
  },

  ... ์ค‘๋žต

  {
    "creationTimestamp": "1969-12-31T16:00:00.000-08:00",
    "description": "1 vCPU, 3.75 GB RAM",
    "guestCpus": 1,
    "id": "3001",
    "imageSpaceGb": 10,
    "isSharedCpu": false,
    "kind": "compute#machineType",
    "maximumPersistentDisks": 128,
    "maximumPersistentDisksSizeGb": "263168",
    "memoryMb": 3840,
    "name": "n1-standard-1",
    "selfLink": "https://www.googleapis.com/compute/v1/projects/powerkimhub/zones/me-west1-c/machineTypes/n1-standard-1",
    "zone": "me-west1-c"
  }
]

['SKU ๊ธฐ๋ฐ˜ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต ๋ฐฉ๋ฒ•' ํ™œ์šฉ ์˜ˆ์‹œ ๋ฐ ๊ฐ€์ด๋“œ]

  • ํŽธ์˜์ƒ ์ผ๋‹จ SKU ๊ฐ€๊ฒฉ ์ •๋ณด ํŒŒ์ผ๋กœ ๋ฐ›๊ธฐ
  • ํŽธ์˜์ƒ ์ฒซ ํŽ˜์ด์ง€๋งŒ ๋ฐ›๊ธฐ(next page๋Š” ์ƒ๋žต)
curl https://cloudbilling.googleapis.com/v1/services/6F81-5844-456A/skus?key={your API KEY} > get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json
  • ์ œํ’ˆ/์„œ๋น„์Šค์˜ ๋ชจ๋“  SKU์— ๋Œ€ํ•œ ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ์ œ๊ณต
  • Compute Engine ์ •๋ณด์˜ ๊ฒฝ์šฐ ๋จธ์‹  ํƒ€์ž…์— ๋Œ€ํ•ด์„œ ์›ํ•˜๋Š” ์ •๋„์˜ ์„ธ๋ถ€ ์ •๋ณด๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š์Œ(์ œ์•ˆ ํ•ด์ฃผ์‹  ๋‚ด์šฉ๊ณผ ๊ฐ™์ด ์œ„ ์ •๋ณด ํ™œ์šฉ ํ•„์š”)
  • ๋Œ€๋žต ์ œ๊ณต ๋‚ด์šฉ
$ head -n 50 get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json
{
  "skus": [
    {
      "name": "services/6F81-5844-456A/skus/0006-C9C8-BB6F",
      "skuId": "0006-C9C8-BB6F",
      "description": "Commitment v1: Memory-optimized Cpu in Phoenix for 1 Year",
      "category": {
        "serviceDisplayName": "Compute Engine",
        "resourceFamily": "Compute",
        "resourceGroup": "CPU",
        "usageType": "Commit1Yr"
      },
      "serviceRegions": [
        "us-west8"
      ],
      "pricingInfo": [
        {
          "summary": "",
          "pricingExpression": {
            "usageUnit": "h",
            "displayQuantity": 1,
            "tieredRates": [
              {
                "startUsageAmount": 0,
                "unitPrice": {
                  "currencyCode": "USD",
                  "units": "0",
                  "nanos": 20550000
                }
              }
            ],
            "usageUnitDescription": "hour",
            "baseUnit": "s",
            "baseUnitDescription": "second",
            "baseUnitConversionFactor": 3600
          },
          "currencyConversionRate": 1,
          "effectiveTime": "2024-01-07T21:00:52.562729Z"
        }
      ],
      "serviceProviderName": "Google",
      "geoTaxonomy": {
        "type": "REGIONAL",
        "regions": [
          "us-west8"
        ]
      }
    },
    ...
  • ํŠน์ • SKU์— ๋Œ€ํ•ด ์›๋ณธ json ๊ตฌ์กฐ ์ •๋ณด๋กœ ํ™•์ธ ๋ฐฉ๋ฒ•
cat get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json |jq '.skus' |jq 'map(select(.skuId=="0006-C9C8-BB6F"))'
[
  {
    "name": "services/6F81-5844-456A/skus/0006-C9C8-BB6F",
    "skuId": "0006-C9C8-BB6F",
    "description": "Commitment v1: Memory-optimized Cpu in Phoenix for 1 Year",
    "category": {
      "serviceDisplayName": "Compute Engine",
      "resourceFamily": "Compute",
      "resourceGroup": "CPU",
      "usageType": "Commit1Yr"
    },
    "serviceRegions": [
      "us-west8"
    ],
    "pricingInfo": [
      {
        "summary": "",
        "pricingExpression": {
          "usageUnit": "h",
          "displayQuantity": 1,
          "tieredRates": [
            {
              "startUsageAmount": 0,
              "unitPrice": {
                "currencyCode": "USD",
                "units": "0",
                "nanos": 20550000
              }
            }
          ],
          "usageUnitDescription": "hour",
          "baseUnit": "s",
          "baseUnitDescription": "second",
          "baseUnitConversionFactor": 3600
        },
        "currencyConversionRate": 1,
        "effectiveTime": "2024-01-07T21:00:52.562729Z"
      }
    ],
    "serviceProviderName": "Google",
    "geoTaxonomy": {
      "type": "REGIONAL",
      "regions": [
        "us-west8"
      ]
    }
  }
]
  • ์ œ๊ณตํ•˜๋Š” ๊ฐ€๊ฒฉ ์ •์ฑ… ์ข…๋ฅ˜
cat get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json |grep usageType |sort |uniq
        "usageType": "Commit1Yr"
        "usageType": "Commit3Yr"
        "usageType": "OnDemand"
        "usageType": "Preemptible"
  • ์ œ๊ณตํ•˜๋Š” ์ •๋ณด ์ค‘ ์ œํ’ˆ/์„œ๋น„์Šค ๊ด€๋ จ ์ •๋ณด
    • ๋‹ค์Œ์— ํ‘œ์‹œ๋œ ์ •๋ณด๋“ค
    • **์ฆ‰, ์ด ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์„œ VM ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์ •๋ณด์™€ ๋งตํ•‘ ํ•ด์•ผ ํ•จ ** <------------------------------------------
    • skuId๋ฅผ ์ด์šฉํ•ด์„œ ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์ •๋ณด๋ฅผ ์–ป์œผ๋ฉด ์ข‹์€๋ฐ, ๊ทธ๋Ÿฐ API๋Š” ์—†๋Š” ๋“ฏํ•จ(๊ตฌ๊ธ€๋ง: ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ข…์ข… ์žˆ์Œ)
      • API๊ฐ€ ์กด์žฌํ•ด๋„, skuId๊ณผ ๋จธ์‹  ํƒ€์ž… ์ •๋ณด๊ฐ€ ์ „์ฒด sku์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ๋‚ด์ง€ ๋ช‡๋ฒˆ์˜ API Call๋กœ ์–ป์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ(Call Limit ์ด์Šˆ ๊ด€๋ จ)
    {
      "name": "services/6F81-5844-456A/skus/0006-C9C8-BB6F",
      "skuId": "0006-C9C8-BB6F",
      "description": "Commitment v1: Memory-optimized Cpu in Phoenix for 1 Year",   <---------- description์ด๋ฏ€๋กœ, ๊ฐ€๋Šฅํ•˜๋ฉด ๋ณด์กฐ ์ •๋ณด๋กœ๋งŒ ํ™œ์šฉ
      "category": {
        "serviceDisplayName": "Compute Engine",    <------ sku ์ •๋ณด ์š”์ฒญ์‹œ "6F81-5844-456A" ์ธ์ž๋กœ ์–ป์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์–ป์€ ์ •๋ณด๋Š” ๋ชจ๋‘ ๋™์ผํ•œ ๊ฐ’
        "resourceFamily": "Compute",         <-------- ์•„๋ž˜ resourceFamily ์ข…๋ฅ˜ ์ฐธ๊ณ , productFamily ์ข…๋ฅ˜ filtering์— ํ™œ์šฉ ๊ฐ€๋Šฅ
        "resourceGroup": "CPU",              <-------- ์ด ์ •๋ณด๊ฐ€ ์ผ๋ถ€ ๋จธ์‹  ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅ, ์•„๋ž˜ resoruceGroup ์ •๋ณด ๊ด€๋ จ ๋‚ด์šฉ ์ฐธ๊ณ 
        "usageType": "Commit1Yr"             <-------- (Commit1Yr, Commit3Yr, OnDemand, Preemptible)๊ฐ€๊ฒฉ ์ •์ฑ… ์ข…๋ฅ˜ ์ •๋ณด๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅ
      },
      "serviceRegions": [
        "us-west8"                           <-------- ์ œ๊ณตํ•˜๋Š” ๋ฆฌ์ „ ์ •๋ณด๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅ
      ],
      "pricingInfo": ...                     <-------- ๊ฐ€๊ฒฉ ์ •์ฑ…์œผ๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ์ œ๊ณตํ•˜๋Š” resourceFamily ์ข…๋ฅ˜
cat get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json |grep resourceFamily |sort |uniq
        "resourceFamily": "Compute",
        "resourceFamily": "License",
        "resourceFamily": "Network",
        "resourceFamily": "Storage",
  • ์ œ๊ณตํ•˜๋Š” resourceGroup ์ข…๋ฅ˜
cat get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json |grep resource
Group |sort |uniq
        "resourceGroup": "AdvancedNetworking",
        "resourceGroup": "AlmaLinux",
        "resourceGroup": "AppScale",
        "resourceGroup": "BitnamiAlchemy",
        "resourceGroup": "BitnamiCanvas",
        "resourceGroup": "BitnamiCloud9",
        "resourceGroup": "BitnamiDevPack",
        "resourceGroup": "BitnamiGallery",
        "resourceGroup": "BitnamiGerrit",
        "resourceGroup": "BitnamiMeteor",
        "resourceGroup": "BitnamiNexus",
        "resourceGroup": "BitnamiNodeBB",
        "resourceGroup": "BitnamiPHP7",
        "resourceGroup": "BitnamiRadiant",
        "resourceGroup": "BitnamiReportServer",
        "resourceGroup": "BitnamiWebPack",
        "resourceGroup": "CDNCacheFill",
        "resourceGroup": "CPU",
        "resourceGroup": "Canonical",
        "resourceGroup": "CentOS",
        "resourceGroup": "CloudEndure",
        "resourceGroup": "ConfidentialSpace",
        "resourceGroup": "CoreOSBeta",
        "resourceGroup": "CoreOSStable",
        "resourceGroup": "Couchbase",
        "resourceGroup": "DaceITLLCd/b/aSenseTrafficPulse",
        "resourceGroup": "DataflowStreaming",
        "resourceGroup": "Debian",
        "resourceGroup": "Debian8",
        "resourceGroup": "Debian9",
        "resourceGroup": "Dokku",
        "resourceGroup": "F1Micro",
        "resourceGroup": "FedoraCoreOS",
        "resourceGroup": "Flink",
        "resourceGroup": "FreeBSD",
        "resourceGroup": "G1Small",
        "resourceGroup": "GPU",
        "resourceGroup": "Google",
        "resourceGroup": "GoogleEgress",
        "resourceGroup": "GoogleIngress",
        "resourceGroup": "GreenSQL",
        "resourceGroup": "InterconnectAttachment",
        "resourceGroup": "InterconnectPort",
        "resourceGroup": "InterregionEgress",
        "resourceGroup": "InterregionIngress",
        "resourceGroup": "IntrazoneEgress",
        "resourceGroup": "IpAddress",
        "resourceGroup": "LocalSSD",
        "resourceGroup": "MachineImage",
        "resourceGroup": "MasterConcept",
        "resourceGroup": "Microsoft",
        "resourceGroup": "N1Standard",
        "resourceGroup": "Nuggeta",
        "resourceGroup": "OpenSUSELeap42",
        "resourceGroup": "PDSnapshot",
        "resourceGroup": "PDStandard",
        "resourceGroup": "PacketMirroring",
        "resourceGroup": "PdSnapshotEgress",
        "resourceGroup": "PeeringOrInterconnectEgress",
        "resourceGroup": "PeeringOrInterconnectIngress",
        "resourceGroup": "PremiumInternetEgress",
        "resourceGroup": "PremiumInternetIngress",
        "resourceGroup": "Quobyte",
        "resourceGroup": "RAM",
        "resourceGroup": "RHEL6",
        "resourceGroup": "RedHat",
        "resourceGroup": "Rhel",
        "resourceGroup": "Ruby",
        "resourceGroup": "SLES12ForSAP",
        "resourceGroup": "SQLServer2014Web",
        "resourceGroup": "SQLServer2016Express",
        "resourceGroup": "SQLServer2016Standard",
        "resourceGroup": "SSD",
        "resourceGroup": "SUSE",
        "resourceGroup": "SUSE11",
        "resourceGroup": "SUSE12",
        "resourceGroup": "Sles",
        "resourceGroup": "SlesSap",
        "resourceGroup": "StandardInternetEgress",
        "resourceGroup": "StandardInternetIngress",
        "resourceGroup": "StorReduceLarge",
        "resourceGroup": "StorReduceXLarge",
        "resourceGroup": "Storage",
        "resourceGroup": "StorageImage",
        "resourceGroup": "TPU",
        "resourceGroup": "Ubuntu1204LTS",
        "resourceGroup": "Ubuntu1404LTS",
        "resourceGroup": "Ubuntu1604",
        "resourceGroup": "Ubuntu1610",
        "resourceGroup": "Ubuntu1710",
        "resourceGroup": "UbuntuCore",
        "resourceGroup": "UbuntuCore16",
        "resourceGroup": "UbuntuDev",
        "resourceGroup": "UbuntuSnappy1604",
        "resourceGroup": "VPNInternetEgress",
        "resourceGroup": "VPNInternetIngress",
        "resourceGroup": "VPNInterregionEgress",
        "resourceGroup": "VPNInterregionIngress",
        "resourceGroup": "VarnishSoftwareInc",
        "resourceGroup": "VmState",
        "resourceGroup": "Windows2008",
        "resourceGroup": "Windows2016",
        "resourceGroup": "WindowsActiveDirectory",
        "resourceGroup": "WindowsCore",
        "resourceGroup": "WindowsServer2008R2",
        "resourceGroup": "WindowsServer2012",
        "resourceGroup": "WindowsServer2012R2",
  • resourceGroup ์ •๋ณด์™€ N1 ๋จธ์‹  ์œ ํ˜• ๋งตํ•‘ ๊ฐ€์ด๋“œ
  • N1 ๊ด€๋ จ ์ •๋ณด ์–ป๋Š” ๋ฐฉ๋ฒ•(resourceGroup="N1Standard") ๋ฐ ๊ทธ์ค‘ ์ฒซ๋ฒˆ์งธ ์ •๋ณด ํ™•์ธ
cat get_https.cloudbilling.googleapis.com-v1-services-6F81-5844-456A-skus.json |jq '.skus' |jq 'map(select(.category.resourceGroup=="N1Standard"))' |more
[
  {
    "name": "services/6F81-5844-456A/skus/000F-E31B-1D6F",
    "skuId": "000F-E31B-1D6F",
    "description": "N1 Predefined Instance Ram running in Zurich",  <---------------- 'Ram': ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€๊ฒฉ ์ •๋ณด ์ž„์„ ์ฐธ๊ณ 
    "category": {
      "serviceDisplayName": "Compute Engine",
      "resourceFamily": "Compute",
      "resourceGroup": "N1Standard",           <---------------- N1 ๊ณ„์—ด
      "usageType": "OnDemand"                  <---------------- ๊ฐ€๊ฒฉ ์ •์ฑ…
    },
    "serviceRegions": [
      "europe-west6"                           <--------------- ๋ฆฌ์ „
    ],
    "pricingInfo": [
      {
        "summary": "",
        "pricingExpression": {
          "usageUnit": "GiBy.h",               <--------------- ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€๊ฒฉ ์ •๋ณด์ž„์„ ํ™œ์šฉ ๊ฐ€๋Šฅ
          "displayQuantity": 1,
          "tieredRates": [
            {
              "startUsageAmount": 0,
              "unitPrice": {
                "currencyCode": "USD",
                "units": "0",
                "nanos": 5928000      <--------------- ๊ฐ€๊ฒฉ ์ •๋ณด ํ™œ์šฉ ๊ฐ€๋Šฅ, dollar  ๋ณ€ํ™˜ ๊ทœ์น™์€ ์—ฌ๊ธฐ์„œ(https://cloud.google.com/skus/?hl=ko) ํ™•์ธ ๊ฐ€๋Šฅ 
              }                                        skuid(ex:000F-E31B-1D6F)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ™˜์‚ฐํ•˜์—ฌ ๋ณด์—ฌ์คŒ
            }
          ],
          "usageUnitDescription": "gibibyte hour",
          "baseUnit": "By.s",
          "baseUnitDescription": "byte second",
          "baseUnitConversionFactor": 3865470566400
        },
        "currencyConversionRate": 1,
        "effectiveTime": "2024-01-07T21:00:52.562729Z"
      }
    ],
    "serviceProviderName": "Google",
    "geoTaxonomy": {
      "type": "REGIONAL",
      "regions": [
        "europe-west6"
      ]
    }
  },
  ...
  • ๊ด€๋ จ๋œ ์›น ํŽ˜์ด์ง€์—์„œ ์ •๋ณด ํ™•์ธ
    • N1 ๋จธ์‹  ์œ ํ˜•, ์ทจ๋ฆฌํžˆ, OnDemand, ๋ฉ”๋ชจ๋ฆฌ, ์‹œ๊ฐ„๋‹น GB ์‚ฌ์šฉ ๋‹จ๊ฐ€
    • image
  • (resourceGroup="N1Standard") ์ •๋ณด ์ค‘ vCPU ๊ด€๋ จ ์ •๋ณด ์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ๋” ๋ณด์ž๋ฉด,
    • services.sku.lisk ์ œ๊ณต ์ •๋ณด ์˜ˆ์‹œ
 {
    "name": "services/6F81-5844-456A/skus/718A-81BA-2CBB",
    "skuId": "718A-81BA-2CBB",
    "description": "N1 Predefined Instance Core running in Zurich",    <---------------- 'Core': CPU ์ •๋ณด ์ž„์„ ์ฐธ๊ณ 
    "category": {
      "serviceDisplayName": "Compute Engine",
      "resourceFamily": "Compute",
      "resourceGroup": "N1Standard",                      <---------------- N1 ๊ณ„์—ด
      "usageType": "OnDemand"                             <---------------- ๊ฐ€๊ฒฉ ์ •์ฑ…
    },
    "serviceRegions": [
      "europe-west6"                                      <---------------- ๋ฆฌ์ „
    ],
    "pricingInfo": [
      {
        "summary": "",
        "pricingExpression": {
          "usageUnit": "h",                               <---------------- vCPU ๊ฐ€๊ฒฉ ์ •๋ณด ์ถ”์ •(N1 ๊ณ„์—ด์ธ ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ: "GiBy.h") 
          "displayQuantity": 1,
          "tieredRates": [
            {
              "startUsageAmount": 0,
              "unitPrice": {
                "currencyCode": "USD",
                "units": "0",
                "nanos": 44231000                         <---------------- ๊ฐ€๊ฒฉ ์ •๋ณด: 0.044231 USD per 1 hour
              }
            }
          ],
          "usageUnitDescription": "hour",
          "baseUnit": "s",
          "baseUnitDescription": "second",
          "baseUnitConversionFactor": 3600
        },
        "currencyConversionRate": 1,
        "effectiveTime": "2024-01-08T08:57:38.057755Z"
      }
    ],
    "serviceProviderName": "Google",
    "geoTaxonomy": {
      "type": "REGIONAL",
      "regions": [
        "europe-west6"
      ]
    }
  },
  • Web ํŽ˜์ด์ง€ ์ œ๊ณต ์ •๋ณด ์˜ˆ์‹œ
    • image

[์„ธ๋ถ€ ๋จธ์‹  ํƒ€์ž… ๊ฐ€๊ฒฉ ์ •๋ณด ์ƒ์„ฑ ๊ฐ€์ด๋“œ]

  • ํŽธ์˜์ƒ ๊ฐ€์ด๋“œ ์„ค๋ช…์€ services.sku.list API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , Web ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…
  • services.sku.list API๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด๋Š” ์„ธ๋ถ€ ๋จธ์‹  ํƒ€์ž… ์ •๋ณด(์ฆ‰, VCPU 1๊ฐœ, Memory 16GB ๋“ฑ์˜ ์ •๋ณด)๊ฐ€ ์—†๊ณ ,
  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋จธ์‹  ์œ ํ˜•๋ณ„ CPU ๊ธฐ์ค€ ๊ฐ€๊ฒฉ๊ณผ Memory ๊ธฐ๋ถ„ ๊ฐ€๊ฒฉ์„ ์ œ๊ณต
    • image
  • ์„ธ๋ถ€ ๋จธ์‹  ํƒ€์ž… ๊ฐ€๊ฒฉ ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Œ
    • API๋กœ ์–ป์€ ๊ฐ€๊ฒฉ๊ณผ ๊ณ„์‚ฐ์œผ๋กœ ์–ป์€ ๊ฐ€๊ฒฉ์ด ์†Œ์ˆซ์  5์ž๋ฆฌ ์ •๋„๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋ฅผ ๋“œ๋ฌผ๊ฒŒ ๋ชฉ๊ฒฉํ–ˆ์ง€๋งŒ, ๊ฑฐ์˜ ๋™์ผํ•˜์˜€์Œ
    • ์˜ˆ์‹œ: n1-highmem-96 ์„ ์ ํ˜• ๊ฐ€๊ฒฉ ์ •๋ณด
      • image
    • ํ™•์ธ: ๊ด€๋ จ ์›นํŽ˜์ด์ง€ ๊ฐ€๊ฒฉ ์ •๋ณด
      • image
  • ์œ„์—์„œ ํ™•์ธํ•œ ์ธ์Šคํ„ด์Šค ํƒ€์ž… ์„ธ๋ถ€ ์ •๋ณด ๋ฐ SKU ๊ฐ€๊ฒฉ ์ •๋ณด ๋ฐ ์ƒ์„ฑํ•œ ์„ธ๋ถ€ ๋จธ์‹  ํƒ€์ž…๋ณ„ ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ,
  • CB-Spider ๊ฐ€๊ฒฉ ์ •๋ณด ์ถ”์ƒํ™” ์ •๋ณด Json์„ ์ƒ์„ฑ

6. ์ œ์•ˆ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐœ๋ฐœ ์ „ ํ™•์ธ ์‚ฌํ•ญ

  • ์ œ์•ˆ ๋ฐฉ๋ฒ•์€ ์ผ๋ถ€ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ์ƒ˜ํ”Œ๋ง์„ ํ†ตํ•œ ๊ฐ€๋Šฅ์„ฑ์„ ํƒ€์ง„ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์ „์ฒด๋ฅผ ์ถ”์ง„ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์ง€ ๋จธ์‹  ์œ ํ˜•๋ณ„ ์ถ”๊ฐ€ ์ ๊ฒ€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • N1 ๋จธ์‹  ์œ ํ˜•์€ resourceGroup์— "N1Standard"๋กœ ํ‘œ์‹œ๋˜์–ด ์ด ์ •๋ณด๋ฅผ ํ™œ์šฉํ–ˆ์ง€๋งŒ,
  • N1 ๋จธ์‹  ์™ธ์—๋Š” "description" ์ •๋ณด์— ๋จธ์‹  ์œ ํ˜• ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด description ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ •์ ์ธ์ง€ ์žฌ์ ๊ฒ€ ๋“ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด C3D ๋จธ์‹  ์œ ํ˜•์˜ ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด description ์ •๋ณด์™€ resourceGrop(RAM|CPU) ๋“ฑ์œผ๋กœ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค๋ฅธ ๋จธ์‹  ์œ ํ˜• ๋“ค๋„ ๋Œ€๋žต ์ ๊ฒ€ ํ›„ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.
    {
      "name": "services/6F81-5844-456A/skus/002F-AF8C-E90F",
      "skuId": "002F-AF8C-E90F",
      "description": "Spot Preemptible C3D Instance Ram running in Columbus",     <------------ 'C3D'
      "category": {
        "serviceDisplayName": "Compute Engine",
        "resourceFamily": "Compute",
        "resourceGroup": "RAM",                                                   <------------ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€๊ฒฉ
        "usageType": "Preemptible"
      },      ...

7. Plan B

  • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋งˆ๊ฐ์„ 1/17(์›”) ๊ธฐ์ค€์œผ๋กœ ๊ฒ€ํ† ํ•ด์ฃผ์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๊ณต์ˆ˜, ๊ธฐ๊ฐ„ ๋ฐ ๋‚œ์ด๋„ ๋“ฑ์„ ๊ณ ๋ คํ–ˆ์„ ๋•Œ, ์œ„ ์ œ์•ˆ ๋ฐฉ๋ฒ•์ด ๋น„๊ด€์ ์ผ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ถ”์ง„ ๋ถ€ํƒ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • GCP๊ฐ€ ์ œ๊ณตํ•˜๋Š” SKU ์ •๋ณด ์ฒด๊ณ„๋กœ ์ œ๊ณต

    • ์ฆ‰, serivces.skl.list API ์ œ๊ณต ์ •๋ณด๋งŒ ํ™œ์šฉ
    • ์ฆ‰, ์ธ์Šคํ„ด์Šค ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ , SKU ์ค‘์‹ฌ์˜ ๊ฐ€๊ฒฉ ์ •๋ณด ์ œ๊ณต์œผ๋กœ ๋ณ€ํ™˜
  • ๋ณ€ํ™˜ ์˜ˆ์‹œ

                    "productInfo": {
                        "productId": "2223RRAP6Z3VBN3N",  <======  SKU Id
                        "regionName": "us-east-1",        <====== Region ์ •๋ณด   
                        "zoneName": "NA",                 <====== NA
                        "instanceType": "c5d.2xlarge",    <====== description ์ •๋ณด
                        "vcpu": "8",                      <====== NA
                        "memory": "16 GiB",               <====== NA, ์ดํ•˜ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ •๋ณด๋Š” NA๋กœ ์„ค์ •
                        "storage": "1 x 200 NVMe SSD",
                        "gpu": "2", 
                        "gpuMemory": "NA",
                        "operatingSystem": "RHEL",
                        "preInstalledSw": "SQL Web",
                        "description": "Any helpful information",     <====== description ์ •๋ณด
                        + "cspProductInfo": { ... }                   <===== GCP ์ œ๊ณต ์ •๋ณด ์ถ”๊ฐ€
                        ์ดํ•˜ priceInfo ์ •๋ณด๋Š” ๊ฐ€๋Šฅํ•œ ๋ณ€ํ™˜ํ•ด์„œ ์ฑ„์›€

์ฐธ๊ณ : services.skus.list API์™€ Web ํŽ˜์ด์ง€ ์ •๋ณด๊ฐ€ ํ‹€๋ฆฐ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌ

  • ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ์ •๋ณด ์˜ˆ์‹œ๋Š” ์•„๋ž˜๋ฅผ ์ฐธ๊ณ 
  • ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ์—” API ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ์šฐ์„  ์ค€์ˆ˜ํ•œ๋‹ค.
    • ์›น ํŽ˜์ด์ง€๋‚˜ Cached json file์˜ ๊ฒฝ์šฐ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜์ด ์•„๋‹ˆ๊ณ , ๋ฐ˜์˜ ์‹œ์ ์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •

[SKU ๊ฐ€๊ฒฉ ์ •๋ณด ์ฐจ์ด]

  • us-east4 preemptibla, cpu ๊ฐ€๊ฒฉ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฆ„

    • API ์–ป์€ ๊ฐ€๊ฒฉ: 0.00668 USD per 1 hour
    • ์›นํŽ˜์ด์ง€ ๊ฐ€๊ฒฉ: $0.00712085 / vCPU hour
    • cached json file: $0.00701
    • ์ฐธ๊ณ : Zurich(europe-west6)์˜ ๊ฒฝ์šฐ๋Š” ๋ชจ๋‘ ๋™์ผํ•จ
  • services.sku.list๋กœ ์–ป์€ (resourceGroup="N1Standard") ์ •๋ณด ์ค‘ vCPU ๊ด€๋ จ ๊ฐ€๊ฒฉ ์ •๋ณด๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์Œ

  {
    "name": "services/6F81-5844-456A/skus/023F-CB27-DC68",
    "skuId": "023F-CB27-DC68",
    "description": "Spot Preemptible N1 Predefined Instance Core running in Virginia",     <---------------- 'Core': CPU ์ •๋ณด ์ž„์„ ์ฐธ๊ณ 
    "category": {
      "serviceDisplayName": "Compute Engine",
      "resourceFamily": "Compute",
      "resourceGroup": "N1Standard",                <---------------- N1 ๊ณ„์—ด
      "usageType": "Preemptible"                    <---------------- ๊ฐ€๊ฒฉ ์ •์ฑ…
    },
    "serviceRegions": [
      "us-east4"                                    <---------------- ๋ฆฌ์ „
    ],
    "pricingInfo": [
      {
        "summary": "",
        "pricingExpression": {
          "usageUnit": "h",                         <---------------- vCPU ๊ฐ€๊ฒฉ ์ •๋ณด
          "displayQuantity": 1,
          "tieredRates": [
            {
              "startUsageAmount": 0,
              "unitPrice": {
                "currencyCode": "USD",
                "units": "0",
                "nanos": 6680000                   <---------------- ๊ฐ€๊ฒฉ ์ •๋ณด: 0.00668 USD per 1 hour
              }
            }
          ],
          "usageUnitDescription": "hour",
          "baseUnit": "s",
          "baseUnitDescription": "second",
          "baseUnitConversionFactor": 3600
        },
        "currencyConversionRate": 1,
        "effectiveTime": "2024-01-07T21:00:52.562729Z"
      }
    ],
    "serviceProviderName": "Google",
    "geoTaxonomy": {
      "type": "REGIONAL",
      "regions": [
        "us-east4"
      ]
    }
  },
  • ์›น ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•˜๋ฉด: $0.00712085 / vCPU hour

    • image
  • cached json file์—์„œ ํ™•์ธํ•˜๋ฉด: 0.00701

[SKU ์ œ๊ณต ๋ฆฌ์ „ ์ฐจ์ด]

  • service list API๋กœ ์–ป์€ ์ •๋ณด ์ค‘: N1 ๊ณ„์—ด์ด "europe-west10(Berlin)"์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฑธ๋กœ ๋‚˜์˜ด
  {
    "name": "services/6F81-5844-456A/skus/007F-30EB-9169",
    "skuId": "007F-30EB-9169",
    "description": "Spot Preemptible N1 Predefined Instance Core running in Berlin",   <--------------
    "category": {
      "serviceDisplayName": "Compute Engine",
      "resourceFamily": "Compute",
      "resourceGroup": "N1Standard",             <-----------------------
      "usageType": "Preemptible"
    },
    "serviceRegions": [
      "europe-west10"                            <-----------------------
    ],
    "pricingInfo": [
      
   ... ์ค‘๋žต
  • Console ์ƒ์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด, N1 ๊ณ„์—ด์€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์ „์œผ๋กœ ๋‚˜์˜ด
    • API ์ •๋ณด๊ฐ€ ๋งž๋Š” ๊ฒƒ์ธ์ง€, Console ์ •๋ณด๊ฐ€ ๋งž๋Š” ๊ฒƒ์ธ์ง€, ์•„๋‹ˆ๋ฉด opt-in ์„ค์ • ๋“ฑ์˜ ๊ณ„์ • ์˜์กด ๋ฌธ์ œ์ธ์ง€ ํ™•์ธ์ด ํ•„์š”ํ•จ
    • image
  • ๋˜ํ•œ, Web ์ •๋ณด์˜ ๊ฒฝ์šฐ์—๋Š” ์ „์ฒด ์ ์œผ๋กœ "europe-west10" ๋ฆฌ์ „ ์ •๋ณด๋Š” ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ => ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๋ชจ๋“  ๊ฐ€๊ฒฉ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋จ. => ๋“œ๋ผ์ด๋ฒ„ ๊ฐœ๋ฐœ์‹œ ์ ˆ๋Œ€์ ์ธ ๋ ˆํผ๋Ÿฐ์Šค ์ •๋ณด๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์—†๊ณ , ์ฐธ๊ณ  ์ •๋ณด๋กœ ํ™œ์šฉ