์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” PostgreSQL์šฉ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ธ์Šคํ„ด์Šค ์„ค์ •์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒˆ๋กœ ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์—๋Š” postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ ํ”„๋กœ์ ํŠธ์— ๋ณด์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • ์ƒˆ SQL ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜: ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ์ ํŠธ๋‹น ์ตœ๋Œ€ 1,000๊ฐœ๊นŒ์ง€ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ „ SQL ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜: ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ์ ํŠธ๋‹น ์ตœ๋Œ€ 100๊ฐœ๊นŒ์ง€ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‘ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋‘ ์‚ฌ์šฉ: ๋‘ ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ ์ธ์Šคํ„ด์Šค ๋ฐฐํฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํ•œ๋„๋Š” 100~1,000๊ฐœ์ž…๋‹ˆ๋‹ค.

์ƒํ–ฅ์„ ์š”์ฒญํ•˜๋ ค๋ฉด ์ง€์› ์ผ€์ด์Šค๋ฅผ ์ ‘์ˆ˜ํ•˜์„ธ์š”. ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์€ ์ธ์Šคํ„ด์Šค๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

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

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Install the gcloud CLI.

  5. ์™ธ๋ถ€ ID ๊ณต๊ธ‰์—…์ฒด(IdP)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์ œํœด ID๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  6. gcloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  9. Install the gcloud CLI.

  10. ์™ธ๋ถ€ ID ๊ณต๊ธ‰์—…์ฒด(IdP)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์ œํœด ID๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  11. gcloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud init
  12. ์‚ฌ์šฉ์ž ๊ณ„์ •์— Cloud SQL ๊ด€๋ฆฌ์ž ๋ฐ Compute ๋ทฐ์–ด ์—ญํ• ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    IAM ํŽ˜์ด์ง€๋กœ ์ด๋™

    ์—ญํ•  ๋ฐ ๊ถŒํ•œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

  13. PostgreSQL ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

    ์ฝ˜์†”

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

      Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

    2. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    3. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„ ์„ ํƒ ํŒจ๋„์—์„œ PostgreSQL ์„ ํƒ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    4. SQL Server ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์˜ Cloud SQL ๋ฒ„์ „ ์„ ํƒ ์„น์…˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ Cloud SQL ๋ฒ„์ „(Enterprise ๋˜๋Š” Enterprise Plus)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

      Cloud SQL ๋ฒ„์ „์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๋ฒ„์ „ ์†Œ๊ฐœ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    5. ์ธ์Šคํ„ด์Šค์˜ ๋ฒ„์ „ ์‚ฌ์ „ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‚ฌ์ „ ์„ค์ •์„ ๋ณด๋ ค๋ฉด ๋ฒ„์ „ ์‚ฌ์ „ ์„ค์ • ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    6. ์ธ์Šคํ„ด์Šค ์ •๋ณด ์„น์…˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    7. ์ธ์Šคํ„ด์Šค ์ •๋ณด ์ฐฝ์˜ ์ธ์Šคํ„ด์Šค ID ํ•„๋“œ์— ์ธ์Šคํ„ด์Šค ID๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

      ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ).

    8. postgres ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    9. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ๋ณด๋ ค๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ํ‘œ์‹œ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ Cloud SQL์—์„œ ์ž๋™์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋งŒ๋“ค๋„๋ก ์ƒ์„ฑ์„ ํด๋ฆญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    10. ์„ ํƒ์‚ฌํ•ญ: ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์Šคํ„ด์Šค์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
      1. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ์‚ฌ์šฉ ์„ค์ • ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      2. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ์„ค์ • ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์„ค์ •ํ•œ ๋‹ค์Œ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
        • ์ตœ์†Œ ๊ธธ์ด: ๋น„๋ฐ€๋ฒˆํ˜ธ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๋ฌธ์ž ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
        • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณต์žก์„ฑ: ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์ˆซ์ž, ์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์˜ ์กฐํ•ฉ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        • ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์‚ฌ์šฉ ์ œํ•œ: ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
        • ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์‚ฌ์šฉ ๊ธˆ์ง€: ๋น„๋ฐ€๋ฒˆํ˜ธ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
        • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๊ฐ„๊ฒฉ ์„ค์ •: ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    11. ๋ฆฌ์ „ ๋ฐ ์˜์—ญ ๊ฐ€์šฉ์„ฑ ์„ ํƒ ์„น์…˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ ๋ฆฌ์ „๊ณผ ์˜์—ญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „ ๊ฐ€์šฉ์„ฑ์€ PostgreSQL์šฉ Cloud SQL ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ธ์Šคํ„ด์Šค ์„ค์ • ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

      ์ธ์Šคํ„ด์Šค๋ฅผ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฆฌ์†Œ์Šค์™€ ๊ฐ™์€ ๋ฆฌ์ „์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ๋ฆฌ์ „์€ ๋‚˜์ค‘์— ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์˜์—ญ์„ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

      ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋™์•ˆ ๋ณด์กฐ ์˜์—ญ์ด ์‚ฌ์šฉ๋˜๋ฉด ๋‹ค์Œ ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

      • ์˜์—ญ์ด ๊ธฐ๋ณธ ์˜์—ญ์€ Any๋กœ ๋ณด์กฐ ์˜์—ญ์€ Any (different from primary)๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
      • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ๋ชจ๋‘ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์„œ๋กœ ๋ณ„๋„์˜ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    12. ์ธ์Šคํ„ด์Šค ๋งž์ถค์„ค์ • ์„น์…˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์˜ต์…˜ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„ค์ • ๊ทธ๋ฃน์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์„ค์ •์„ ๊ฒ€ํ† ํ•˜๊ณ  ๋งž์ถค์„ค์ •ํ•  ๊ทธ๋ฃน์„ ํŽผ์นฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ๋ชจ๋“  ์˜ต์…˜์˜ ์š”์•ฝ์ด ์˜ค๋ฅธ์ชฝ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธ์Šคํ„ด์Šค ์„ค์ •์˜ ๋งž์ถค์„ค์ •์€ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๋งž์ถค์„ค์ •์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์— ๊ธฐ๋ณธ๊ฐ’์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

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

      ์„ค์ • ์ฐธ๊ณ 
      ๋จธ์‹  ์œ ํ˜•
      ๋จธ์‹  ์œ ํ˜• ๊ณต์œ  ์ฝ”์–ด ๋˜๋Š” ์ „์šฉ ์ฝ”์–ด ์ค‘์—์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ์ฝ”์–ด์˜ ๊ฒฝ์šฐ ๊ฐ ๋จธ์‹  ์œ ํ˜•์€ CPU(์ฝ”์–ด) ์ˆ˜์™€ ์ธ์Šคํ„ด์Šค ๋ฉ”๋ชจ๋ฆฌ ์–‘์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.
      ์ฝ”์–ด ์ธ์Šคํ„ด์Šค์˜ vCPU ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ฉ”๋ชจ๋ฆฌ ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ์–‘(GB)์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์ปค์Šคํ…€ ์ „์šฉ ์ฝ”์–ด ๋จธ์‹  ์œ ํ˜•์˜ ๊ฒฝ์šฐ ์‚ฌ์ „ ์ •์˜๋œ ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜๋Š” ๋Œ€์‹  ์ปค์Šคํ…€ ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ ์ปค์Šคํ…€ ๊ตฌ์„ฑ์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์„ ํƒํ•  ๋•Œ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์ฝ”์–ด ์ˆ˜์™€ ๋ฉ”๋ชจ๋ฆฌ ์–‘์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์Šคํ† ๋ฆฌ์ง€
      ์Šคํ† ๋ฆฌ์ง€ ์œ ํ˜• ์ธ์Šคํ„ด์Šค ์Šคํ† ๋ฆฌ์ง€ ์œ ํ˜•(SSD ๋˜๋Š” HDD)์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰ ์ธ์Šคํ„ด์Šค์— ์ œ๊ณต๋œ ์ €์žฅ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์Šคํ† ๋ฆฌ์ง€ ์ž๋™ ์ฆ๊ฐ€ ์‚ฌ์šฉ ์„ค์ • ์ธ์Šคํ„ด์Šค์— ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๋•Œ Cloud SQL์—์„œ ์ž๋™์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์•”ํ˜ธํ™”
      Google ๊ด€๋ฆฌ ์•”ํ˜ธํ™”๊ธฐ๋ณธ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
      ๊ณ ๊ฐ ํ‚ค ๊ด€๋ฆฌ ์•”ํ˜ธํ™” ํ‚ค(CMEK)Google Cloud Key Management Service์—์„œ ์ž์ฒด ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์—ฐ๊ฒฐ
      ๋น„๊ณต๊ฐœ IP ์ธ์Šคํ„ด์Šค์˜ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
      ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ์— ์‚ฌ์šฉํ•  ์ธ์Šคํ„ด์Šค์— ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      1. ํ• ๋‹น๋œ IP ๋ฒ”์œ„ ์˜ต์…˜ ํ‘œ์‹œ๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.
      2. ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ IP ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

      ์ธ์Šคํ„ด์Šค์—๋Š” ๊ณต๊ฐœ ๋ฐ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ๊ณต๊ฐœ IP ์ธ์Šคํ„ด์Šค์˜ ๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

      ์ธ์Šคํ„ด์Šค์—๋Š” ๊ณต๊ฐœ ๋ฐ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ๊ณต๊ฐœ IP ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

      ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ

      ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํฌ ์ด๋ฆ„๊ณผ ๋„คํŠธ์›Œํฌ ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

      Google Cloud ์„œ๋น„์Šค ๋น„๊ณต๊ฐœ ๊ฒฝ๋กœ

      ์ด ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด BigQuery์™€ ๊ฐ™์€ ๋‹ค๋ฅธ Google Cloud ์„œ๋น„์Šค๊ฐ€ Cloud SQL์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ๊ด€๋ฆฌํ˜• ์—ฐ๊ฒฐ ํ’€๋ง ์‚ฌ์šฉ ์„ค์ •

      ์ด ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด ์ธ์Šคํ„ด์Šค์— ๊ด€๋ฆฌํ˜• ์—ฐ๊ฒฐ ํ’€๋ง์ด ์‚ฌ์šฉ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ์—ฐ๊ฒฐ ํ’€๋ง์„ ์‚ฌ์šฉํ•˜๋ฉด ํ’€๋ง ๋ฐ ๋‹ค์ค‘ํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋ฅ ๊ณผ ์—ฐ๊ฒฐ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•˜์—ฌ ์›Œํฌ๋กœ๋“œ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ์—ฐ๊ฒฐ ํ’€๋ง์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ด€๋ฆฌํ˜• ์—ฐ๊ฒฐ ํ’€๋ง ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

      ๋ณด์•ˆ
      ์„œ๋ฒ„ ์ธ์ฆ ๊ธฐ๊ด€ ๋ชจ๋“œ

      ์ด Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๋Š” ์ธ์ฆ ๊ธฐ๊ด€(CA)์˜ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

      ๊ธฐ๋ณธ์ ์œผ๋กœ Google Cloud ์ฝ˜์†”์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์ธ์Šคํ„ด์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ณ„ CA ์˜ต์…˜์ธ Google ๊ด€๋ฆฌ ๋‚ด๋ถ€ ์ธ์ฆ ๊ธฐ๊ด€(GOOGLE_MANAGED_INTERNAL_CA)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ
      ๋ฐฑ์—… ์ž๋™ํ™” ๋ฐฑ์—…์„ ์‹œ์ž‘ํ•  ์‹œ๊ฐ„ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ฐฑ์—…์„ ์ €์žฅํ•  ์œ„์น˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „์„ ์„ ํƒํ•˜์„ธ์š”. ํŠน์ • ๋ฆฌ์ „์— ๋ฐฑ์—…์„ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ๋ฅผ ๋“ค์–ด ๊ทœ์ • ์ƒ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•  ์ด์œ ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ) ๋ฆฌ์ „์„ ์„ ํƒํ•˜๊ณ  ์œ„์น˜ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      ์ €์žฅํ•  ์ž๋™ ๋ฐฑ์—… ์ˆ˜ ์„ ํƒ๋ณด๊ด€ํ•  ์ž๋™ ๋ฐฑ์—…์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค(1~365์ผ). ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      point-in-time recovery ์‚ฌ์šฉ ์„ค์ • point-in-time recovery ๋ฐ ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์‚ญ์ œ ๋ณดํ˜ธ ์‚ฌ์šฉ ์„ค์ • ์‹ค์ˆ˜๋กœ ์ธํ•œ ์ธ์Šคํ„ด์Šค ์‚ญ์ œ๋ฅผ ๋ณดํ˜ธํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์ธ์Šคํ„ด์Šค ์‚ญ์ œ ํ›„ ๋ณด๊ด€๋œ ๋ฐฑ์—… ์‚ฌ์šฉ ์„ค์ • ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ญ์ œ๋œ ํ›„ ์ž๋™ ๋ฐ ์ฃผ๋ฌธํ˜• ๋ฐฑ์—…์„ ๋ณด๊ด€ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋กœ๊ทธ ๋ณด๊ด€ ์ผ์ˆ˜ ์„ ํƒ ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ ๋ณด๊ด€ ๊ธฐ๊ฐ„์„ 1~7์ผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์„ค์ •์€ 7์ผ์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์œ ์ง€๋ณด์ˆ˜
      ์„ ํ˜ธ ๊ธฐ๊ฐ„ Cloud SQL์ด ์ธ์Šคํ„ด์Šค์— ์„œ๋น„์Šค ์ค‘๋‹จ ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์‹œ๊ฐ„(1์‹œ๊ฐ„)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋•Œ์— ์—…๋ฌด์— ์ฐจ์งˆ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์—…๋ฐ์ดํŠธ ์ˆœ์„œ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์™€ ๋น„๊ตํ•˜์—ฌ ์„ ํ˜ธํ•˜๋Š” ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ํ”Œ๋ž˜๊ทธ
      ํ”Œ๋ž˜๊ทธ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์˜ ์„ค์ •๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ผ๋ฒจ
      ๋ผ๋ฒจ ์ถ”๊ฐ€์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ ๋ผ๋ฒจ์˜ ํ‚ค์™€ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ๋ฐ์ดํ„ฐ ์บ์‹œ
      ๋ฐ์ดํ„ฐ ์บ์‹œ ์‚ฌ์šฉ ์„ค์ •(์„ ํƒ์‚ฌํ•ญ) PostgreSQL์šฉ Cloud SQL Enterprise Plus ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค์šฉ ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์บ์‹œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    13. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      ์ฐธ๊ณ : ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋™์•ˆ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud

    gcloud CLI ์„ค์น˜ ๋ฐ ์‹œ์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud CLI ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Cloud Shell ์‹œ์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Shell ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    1. gcloud sql instances create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    2. Cloud SQL Enterprise Plus ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ:
          gcloud sql instances create INSTANCE_NAME \
          --database-version=DATABASE_VERSION \
          --region=REGION \
          --tier=TIER \
          --edition=ENTERPRISE_PLUS
          

      Cloud SQL Enterprise ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ:
          gcloud sql instances create INSTANCE_NAME \
          --database-version=DATABASE_VERSION \
          --region=REGION \
          --cpu=NUMBER_CPUS \
          --memory=MEMORY_SIZE \
          --edition=ENTERPRISE
          
      ๋˜๋Š” ๋จธ์‹  ์œ ํ˜•์œผ๋กœ db-f1-micro ๋˜๋Š” db-g1-small์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ --tier ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
          gcloud sql instances create INSTANCE_NAME \
            --tier=API_TIER_STRING \
            --region=REGION
        

      vCPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๊ฐ’์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

      • vCPU๋Š” 1 ๋˜๋Š” 2~96 ์‚ฌ์ด์˜ ์ง์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
        • vCPU๋‹น 0.9~6.5GB
        • 256MB์˜ ๋ฐฐ์ˆ˜
        • ์ตœ์†Œ 3.75GB(3,840MB)

      ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” vCPU๊ฐ€ 2๊ฐœ์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 7,680MB์ธ Cloud SQL Enterprise ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

        gcloud sql instances create myinstance \
        --database-version=POSTGRES_16 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1
        

      ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” ์ฝ”์–ด 4๊ฐœ๊ฐ€ ์žˆ๋Š” Cloud SQL Enterprise Plus ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

        gcloud sql instances create myinstance \
        --database-version=POSTGRES_16 \
        --tier=db-perf-optimized-N-4 \
        --edition=ENTERPRISE_PLUS \
        --region=us-central1
        
      --cpu๋ฐ --memory์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปค์Šคํ…€ ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

      REGION์˜ ๊ธฐ๋ณธ๊ฐ’์€ us-central1์ž…๋‹ˆ๋‹ค.

      ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์€ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.
      ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ).

      ๊ณ ๊ฐ€์šฉ์„ฑ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ --zone ๋งค๊ฐœ๋ณ€์ˆ˜์™€ --secondary-zone ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋™์•ˆ ๋ณด์กฐ ์˜์—ญ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

      • ์˜์—ญ์ด ์œ ํšจํ•œ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๋ณด์กฐ ์˜์—ญ์ด ์ง€์ •๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์˜์—ญ๋„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์„œ๋กœ ๋ณ„๋„์˜ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ๋‘ ์˜์—ญ์ด ๊ฐ™์€ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฐธ๊ณ 
      ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜
      ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „ --database-version ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์€ Cloud SQL ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
      ์ง€์—ญ --region ์œ ํšจํ•œ ๊ฐ’ ์•Œ์•„๋ณด๊ธฐ
      ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ์„ค์ •
      ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ์‚ฌ์šฉ ์„ค์ • --enable-password-policy ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์€ ์‚ฌ์šฉ ์ค‘์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. --clear-password-policy ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ฉด ๋‹ค๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
      ์ตœ์†Œ ๊ธธ์ด --password-policy-min-length ๋น„๋ฐ€๋ฒˆํ˜ธ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๋ฌธ์ž ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณต์žก์„ฑ --password-policy-complexity ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณต์žก์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ์— ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์ˆซ์ž, ์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž ๋“ฑ ๊ฐ ๋ฌธ์ž ์œ ํ˜• ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์„ COMPLEXITY_DEFAULT๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
      ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์‚ฌ์šฉ ์ œํ•œ --password-policy-reuse-interval ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ—ˆ์šฉ ์•ˆํ•จ --password-policy-disallow-username-substring ๋น„๋ฐ€๋ฒˆํ˜ธ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด --no-password-policy-disallow-username-substring ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๊ฐ„๊ฒฉ ์„ค์ • --password-policy-password-change-interval ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๊ธฐ๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: 2๋ถ„์˜ ๊ฒฝ์šฐ 2m).
      ์—ฐ๊ฒฐ
      ๋น„๊ณต๊ฐœ IP --network

      --no-assign-ip(์„ ํƒ์‚ฌํ•ญ)

      --allocated-ip-range-name(์„ ํƒ์‚ฌํ•ญ)

      --enable-google-private-path(์„ ํƒ์‚ฌํ•ญ)

      --network: ์ด ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์•ก์„ธ์Šค๊ฐ€ ์ด๋ฏธ ๋„คํŠธ์›Œํฌ์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ ํƒ€ ๋ช…๋ น์–ด(gcloud beta sql instances create)์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      --no-assign-ip: ์ธ์Šคํ„ด์Šค์— ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

      --allocated-ip-range-name: ์ง€์ •ํ•˜๋ฉด IP ๋ฒ”์œ„๊ฐ€ ํ• ๋‹น๋˜๋Š” ๋ฒ”์œ„ ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด google-managed-services-default์ž…๋‹ˆ๋‹ค. ๋ฒ”์œ„ ์ด๋ฆ„์€ RFC-1035๋ฅผ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋ฉฐ 1~63(์˜๋ฌธ ๊ธฐ์ค€)์ž ์ด๋‚ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (gcloud alpha sql instances create).

      --enable-google-private-path: ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด BigQuery์™€ ๊ฐ™์€ ๋‹ค๋ฅธ Google Cloud ์„œ๋น„์Šค์—์„œ Cloud SQL์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ๊ฒฝ์šฐ์—๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

      • --no-assign-ip ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • --network ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      ๊ณต๊ฐœ IP --authorized-networks ๊ณต๊ฐœ IP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ๋งŒ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      SSL ์‹œํ–‰

      --ssl-mode

      --require-ssl

      ssl-mode ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์—ฐ๊ฒฐ์— SSL/TLS ์‹œํ–‰์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ PostgreSQL์šฉ Cloud SQL ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

      require-ssl ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” IP๋ฅผ ํ†ตํ•œ SSL ์—ฐ๊ฒฐ์˜ ์ ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. require-ssl์€ ๊ธฐ์กด ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ssl-mode๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ IpConfiguration์„ ์ฐธ์กฐํ•˜์„ธ์š”.

      ์„œ๋ฒ„ CA ๋ชจ๋“œ --server-ca-mode

      --server-ca-mode ํ”Œ๋ž˜๊ทธ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ ๊ธฐ๊ด€(CA) ์œ ํ˜•์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

      • GOOGLE_MANAGED_INTERNAL_CA: ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ Cloud SQL ์ธ์Šคํ„ด์Šค ์ „์šฉ ๋‚ด๋ถ€ CA๊ฐ€ ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•ฉ๋‹ˆ๋‹ค.
      • GOOGLE_MANAGED_CAS_CA: ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด Cloud SQL์—์„œ ๊ด€๋ฆฌ๋˜๊ณ  Google Cloud Certificate Authority Service(CA ์„œ๋น„์Šค)์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฃจํŠธ CA ๋ฐ ํ•˜์œ„ ์„œ๋ฒ„ CA๋กœ ๊ตฌ์„ฑ๋œ CA ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ์ „์˜ ํ•˜์œ„ ์„œ๋ฒ„ CA๋Š” ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๊ณ  ๋ฆฌ์ „์˜ ์ธ์Šคํ„ด์Šค ๊ฐ„์— ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค.
      • CUSTOMER_MANAGED_CAS_CA: ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด CA ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  CA ์ธ์ฆ์„œ ์ˆœํ™˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์— ์žˆ๋Š” CA ์„œ๋น„์Šค์—์„œ CA ํ’€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ’€์˜ CA ์ค‘ ํ•˜๋‚˜๊ฐ€ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณ ๊ฐ ๊ด€๋ฆฌ CA ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
      ๋จธ์‹  ์œ ํ˜• ๋ฐ ์Šคํ† ๋ฆฌ์ง€
      ๋จธ์‹  ์œ ํ˜• --tier ๊ณต์œ  ์ฝ”์–ด ์ธ์Šคํ„ด์Šค(db-f1-micro ๋˜๋Š”db-g1-small)๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ ๋Œ€์‹  --cpu ๋˜๋Š” --memory ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
      ์Šคํ† ๋ฆฌ์ง€ ์œ ํ˜• --storage-type ์ธ์Šคํ„ด์Šค ์Šคํ† ๋ฆฌ์ง€ ์œ ํ˜•(SSD ๋˜๋Š” HDD)์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰ --storage-size ์ธ์Šคํ„ด์Šค์— ์ œ๊ณต๋œ ์Šคํ† ๋ฆฌ์ง€ ์šฉ๋Ÿ‰(GB)์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์ €์žฅ์šฉ๋Ÿ‰ ์ž๋™ ์ฆ๊ฐ€ --storage-auto-increase ์ธ์Šคํ„ด์Šค์— ์—ฌ์œ  ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•  ๋•Œ Cloud SQL์—์„œ ์ž๋™์œผ๋กœ ์ €์žฅ์šฉ๋Ÿ‰์„ ์ œ๊ณตํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์Šคํ† ๋ฆฌ์ง€ ์ž๋™ ์ฆ๊ฐ€ ํ•œ๋„ --storage-auto-increase-limit Cloud SQL์ด ์ž๋™์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋Š” ์ •๋„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ ํƒ€ ๋ช…๋ น์–ด(gcloud beta sql instances create)์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ฐ์ดํ„ฐ ์บ์‹œ(์„ ํƒ์‚ฌํ•ญ) --enable-data-cache ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ์‚ฌ์šฉ ์„ค์ • ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐ์ดํ„ฐ ์บ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
      ์ž๋™ ๋ฐฑ์—… ๋ฐ ๊ณ ๊ฐ€์šฉ์„ฑ
      ๊ณ ๊ฐ€์šฉ์„ฑ --availability-type ๊ณ ๊ฐ€์šฉ์„ฑ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ REGIONAL๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ณด์กฐ ์˜์—ญ --secondary-zone ๊ณ ๊ฐ€์šฉ์„ฑ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ --zone ๋ฐ --secondary-zone parameters๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ๋ชจ๋‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋™์•ˆ ๋ณด์กฐ ์˜์—ญ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ ์ œํ•œ ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
      • ์˜์—ญ์ด ์œ ํšจํ•œ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๋ณด์กฐ ์˜์—ญ์ด ์ง€์ •๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์˜์—ญ๋„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์„œ๋กœ ๋ณ„๋„์˜ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

        ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ๋‘ ์˜์—ญ์ด ๊ฐ™์€ ๋ฆฌ์ „์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      ์ž๋™ ๋ฐฑ์—… --backup-start-time ๋ฐฑ์—…์„ ์‹œ์ž‘ํ•  ์‹œ๊ฐ„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์ž๋™ ๋ฐฑ์—… ๋ณด๊ด€ ์„ค์ • --retained-backups-count ๋ณด๊ด€ํ•  ์ž๋™ ๋ฐฑ์—… ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊น… ๋ณด๊ด€ ์„ค์ • --retained-transaction-log-days PITR(point-in-time recovery)์— ๋Œ€ํ•œ ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ๋ฅผ ๋ณด๊ด€ํ•  ์ผ์ˆ˜์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
      point-in-time recovery --enable-point-in-time-recovery point-in-time recovery ๋ฐ ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ์ถ”๊ฐ€
      ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ --database-flags ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์˜ ์„ค์ •๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์œ ์ง€๋ณด์ˆ˜ ์ผ์ •
      ์œ ์ง€๋ณด์ˆ˜ ๊ธฐ๊ฐ„ --maintenance-window-day,
      --maintenance-window-hour
      Cloud SQL์ด ์ธ์Šคํ„ด์Šค์— ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ธฐ๊ฐ„(1์‹œ๊ฐ„)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋น„์Šค ์ค‘๋‹จ์„ ์ดˆ๋ž˜ํ•˜๋Š” ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์ด ์–ธ์ œ๋“ ์ง€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      ์œ ์ง€๋ณด์ˆ˜ ์‹œ์  --maintenance-release-channel ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์™€ ๋น„๊ตํ•˜์—ฌ ์„ ํ˜ธํ•˜๋Š” ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ์—…๋ฐ์ดํŠธ์—๋Š” preview๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ดํ›„ ์—…๋ฐ์ดํŠธ์—๋Š” production์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
      Vertex AI์™€์˜ ํ†ตํ•ฉ
      --enable-google-ml-integration Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ Vertex AI์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์˜ˆ์ธก ๋ฐ ํ†ต๊ณ„ ์š”์ฒญ์„ AI์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      --database-flags cloudsql.enable_google_ml_integration=on ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด Cloud SQL์„ Vertex AI์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์ปค์Šคํ…€ SAN
      ์ปค์Šคํ…€ ์ฃผ์ฒด ๋Œ€์ฒด ์ด๋ฆ„(SAN) ์ถ”๊ฐ€ --custom-subject-alternative-names=DNS_NAMES

      IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ปค์Šคํ…€ DNS ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ปค์Šคํ…€ ์ฃผ์ฒด ๋Œ€์ฒด ์ด๋ฆ„(SAN) ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ SAN ์„ค์ •์— ์‚ฝ์ž…ํ•œ ์ปค์Šคํ…€ DNS ์ด๋ฆ„์ด ์ธ์Šคํ„ด์Šค ์„œ๋ฒ„ ์ธ์ฆ์„œ์˜ SAN ํ•„๋“œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๊ฒ€์ฆ๊ณผ ํ•จ๊ป˜ ์ปค์Šคํ…€ DNS ์ด๋ฆ„์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ํด๋ผ์ด์–ธํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ปค์Šคํ…€ DNS ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋จผ์ € DNS ์ด๋ฆ„๊ณผ IP ์ฃผ์†Œ ์‚ฌ์ด์— ๋งคํ•‘์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ DNS ๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ SAN ์„ค์ •์— ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ปค์Šคํ…€ DNS ์ด๋ฆ„ ๋ชฉ๋ก์„ ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    3. ์ž๋™ ํ• ๋‹น๋œ IP ์ฃผ์†Œ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

      Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด ์ฃผ์†Œ๋ฅผ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๋„๊ตฌ์—์„œ ์ธ์Šคํ„ด์Šค๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

    4. postgres ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
            gcloud sql users set-password postgres \
            --instance=INSTANCE_NAME \
            --password=PASSWORD
            

    Terraform

    ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    resource "google_sql_database_instance" "postgres_pvp_instance_name" {
      name             = "postgres-pvp-instance-name"
      region           = "asia-northeast1"
      database_version = "POSTGRES_14"
      root_password    = "abcABC123!"
      settings {
        tier = "db-custom-2-7680"
        password_validation_policy {
          min_length                  = 6
          reuse_interval              = 2
          complexity                  = "COMPLEXITY_DEFAULT"
          disallow_username_substring = true
          password_change_interval    = "30s"
          enable_password_policy      = true
        }
      }
      # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
      # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
      deletion_protection = false
    }

    ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

    ํ”„๋กœ์ ํŠธ์— Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ ค๋ฉด Google Cloud ๋‹ค์Œ ์„น์…˜์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

    Cloud Shell ์ค€๋น„

    1. Cloud Shell์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    2. Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•  ๊ธฐ๋ณธ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      ์ด ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฉฐ ์–ด๋–ค ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ช…์‹œ์  ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

    ๋””๋ ‰ํ„ฐ๋ฆฌ ์ค€๋น„

    ๊ฐ Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—๋Š” ์ž์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ(๋ฃจํŠธ ๋ชจ๋“ˆ์ด๋ผ๊ณ ๋„ ํ•จ)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    1. Cloud Shell์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“œ์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„์—๋Š” .tf ํ™•์žฅ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: main.tf). ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํŒŒ์ผ์„ main.tf๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์„น์…˜์ด๋‚˜ ๋‹จ๊ณ„์—์„œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  main.tf์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

      ํ•„์š”ํ•œ ๊ฒฝ์šฐ GitHub์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Terraform ์Šค๋‹ˆํŽซ์ด ์—”๋“œ ํˆฌ ์—”๋“œ ์†”๋ฃจ์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

    3. ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ƒ˜ํ”Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    5. Terraform์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
      terraform init

      ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  Google ๊ณต๊ธ‰์—…์ฒด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด -upgrade ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

      terraform init -upgrade

    ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

    1. ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ  Terraform์—์„œ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ˆ์ƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      terraform plan

      ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
      terraform apply

      Terraform์— '์ ์šฉ ์™„๋ฃŒ' ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

    3. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ UI์˜ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋™ํ•˜์—ฌ Terraform์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋ณ€๊ฒฝ์‚ฌํ•ญ ์‚ญ์ œ

    ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด deletion_protection ์ธ์ˆ˜๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
      deletion_protection =  "false"
    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
      terraform apply
    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ด์ „์— Terraform ๊ตฌ์„ฑ์— ์ ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

      terraform destroy

    REST v1

    ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

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

    ์ธ์Šคํ„ด์Šค ID๋Š” ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ID์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.
    ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ).

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID
    • INSTANCE_ID: ์ธ์Šคํ„ด์Šค ID
    • REGION: ๋ฆฌ์ „
    • DATABASE_VERSION: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด(์˜ˆ: POSTGRES_17)
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]์™€ ๊ฐ™์€ ๋จธ์‹ (๋“ฑ๊ธ‰) ์œ ํ˜•์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • EDITION_TYPE: Cloud SQL ๋ฒ„์ „

    • DATA_CACHE_ENABLED: (์„ ํƒ์‚ฌํ•ญ) true๋กœ ์„ค์ •ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ๋ฐ์ดํ„ฐ ์บ์‹œ ์‚ฌ์šฉ ์„ค์ •
    • PRIVATE_NETWORK: ์ด ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉํ•˜๋ ค๋Š” Virtual Private Cloud(VPC) ๋„คํŠธ์›Œํฌ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์•ก์„ธ์Šค๊ฐ€ ์ด๋ฏธ ๋„คํŠธ์›Œํฌ์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • AUTHORIZED_NETWORKS: ๊ณต๊ฐœ IP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • CA_MODE: ์ธ์Šคํ„ด์Šค์˜ ์ธ์ฆ ๊ธฐ๊ด€ ๊ณ„์ธต ๊ตฌ์กฐ(GOOGLE_MANAGED_INTERNAL_CA ๋˜๋Š” GOOGLE_MANAGED_CAS_CA)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. serverCaMode๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ตฌ์„ฑ์€ GOOGLE_MANAGED_INTERNAL_CA์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ”„๋ฆฌ๋ทฐ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
    • DNS_NAMES: Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ DNS ์ด๋ฆ„ ๋ชฉ๋ก์„ ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์ธ์ฆ์„œ๋กœ ์—ฌ๋Ÿฌ DNS ์ด๋ฆ„์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ”„๋ฆฌ๋ทฐ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณต๋˜๊ณ  CUSTOMER_MANAGED_CAS_CA ์ธ์Šคํ„ด์Šค์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์š”์ฒญ์— passwordValidationPolicy ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • enablePasswordPolicy: true๋กœ ์„ค์ •ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์‚ญ์ œํ•˜๋ ค๋ฉด null์„ ์‚ฌ์šฉํ•˜์—ฌ PATCH ์š”์ฒญ์„ enablePasswordPolicy ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

    • minLength: ๋น„๋ฐ€๋ฒˆํ˜ธ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๋ฌธ์ž ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • complexity: ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์ˆซ์ž, ์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์˜ ์กฐํ•ฉ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ COMPLEXITY_DEFAULT์ž…๋‹ˆ๋‹ค.
    • reuseInterval: ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • disallowUsernameSubstring: true๋กœ ์„ค์ •ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ์— ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • passwordChangeInterval: ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๊ธฐ๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ์ดˆ ๋‹จ์œ„์ด๋ฉฐ, ์†Œ์ˆ˜์  ์•„๋ž˜ 9์ž๋ฆฌ๊นŒ์ง€ ์ง€์ • ๊ฐ€๋Šฅํ•˜๊ณ  s๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 3.5s์ž…๋‹ˆ๋‹ค.

    Vertex AI์™€ ํ†ตํ•ฉ๋˜๋„๋ก ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์š”์ฒญ์— enableGoogleMlIntegration ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ํ†ตํ•ฉ์„ ํ†ตํ•ด Vertex AI์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)์„ PostgreSQL์šฉ Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • enableGoogleMlIntegration: ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ true๋กœ ์„ค์ •๋˜๋ฉด Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ Vertex AI์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์˜ˆ์ธก ๋ฐ ํ†ต๊ณ„ ์š”์ฒญ์„ AI์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • cloudsql.enable_google_ml_integration: ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ on์œผ๋กœ ์„ค์ •๋˜๋ฉด Cloud SQL์ด Vertex AI์™€ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        "databaseFlags":
        [
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
        ]
        "dataCacheConfig": {
          "dataCacheEnabled": DATA_CACHE_ENABLED
        },
        "backupConfiguration": {
          "enabled": true
        },
        "passwordValidationPolicy": {
          "enablePasswordPolicy": true
          "minLength": "MIN_LENGTH",
          "complexity": COMPLEXITY_DEFAULT,
          "reuseInterval": "REUSE_INTERVAL",
          "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
          "passwordChangeInterval": "PASSWORD_CHANGE_INTERVAL"
        }
        "ipConfiguration": {
          "privateNetwork": "PRIVATE_NETWORK",
          "authorizedNetworks": [AUTHORIZED_NETWORKS],
          "ipv4Enabled": false,
          "enablePrivatePathForGoogleCloudServices": true,
          "serverCaMode": "CA_MODE",
          "customSubjectAlternativeNames": "DNS_NAMES"
        }
      }
    }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2019-09-25T22:19:33.735Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    ์‘๋‹ต์€ ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…์ด๋ฏ€๋กœ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    IPv4 ์ฃผ์†Œ ๊ฒ€์ƒ‰

    ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค์— ์ž๋™์œผ๋กœ ํ• ๋‹น๋œ IPv4 ์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • project-id: ํ”„๋กœ์ ํŠธ ID
    • instance-id: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค ID

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "MYSQL_8_0_18",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "us-west1-a",
          "kind": "sql#locationPreference"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "18:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "1",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "--redacted--",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        ...
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "us-west1",
      "gceZone": "us-west1-a"
    }
    

    ์‘๋‹ต์—์„œ ipAddress ํ•„๋“œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

    REST v1beta4

    ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

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

    ์ธ์Šคํ„ด์Šค ID๋Š” ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ID์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๋‚˜ ๊ฐœ์ธ ์‹๋ณ„ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.
    ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ID๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ๋กœ๊ทธ ํŒŒ์ผ์—์„œ).

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID
    • INSTANCE_ID: ์ธ์Šคํ„ด์Šค ID
    • REGION: ๋ฆฌ์ „
    • DATABASE_VERSION: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด(์˜ˆ: POSTGRES_17)
    • PASSWORD: ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
    • MACHINE_TYPE : db-custom-[CPUS]-[MEMORY_MBS]์™€ ๊ฐ™์€ ๋จธ์‹ (๋“ฑ๊ธ‰) ์œ ํ˜•์˜ ์—ด๊ฑฐํ˜• ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • EDITION_TYPE: Cloud SQL ๋ฒ„์ „

    • DATA_CACHE_ENABLED: (์„ ํƒ์‚ฌํ•ญ) true๋กœ ์„ค์ •ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ๋ฐ์ดํ„ฐ ์บ์‹œ ์‚ฌ์šฉ ์„ค์ •
    • PRIVATE_NETWORK: ์ด ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฐ€์ƒ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ(VPC) ๋„คํŠธ์›Œํฌ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์•ก์„ธ์Šค๊ฐ€ ์ด๋ฏธ ๋„คํŠธ์›Œํฌ์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • AUTHORIZED_NETWORKS: ๊ณต๊ฐœ IP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • CA_MODE: ์ธ์Šคํ„ด์Šค์˜ ์ธ์ฆ ๊ธฐ๊ด€ ๊ณ„์ธต ๊ตฌ์กฐ(GOOGLE_MANAGED_INTERNAL_CA ๋˜๋Š” GOOGLE_MANAGED_CAS_CA)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. serverCaMode๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ตฌ์„ฑ์€ GOOGLE_MANAGED_INTERNAL_CA์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ”„๋ฆฌ๋ทฐ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
    • DNS_NAMES: Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ DNS ์ด๋ฆ„ ๋ชฉ๋ก์„ ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ์ธ์ฆ์„œ๋กœ ์—ฌ๋Ÿฌ DNS ์ด๋ฆ„์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ”„๋ฆฌ๋ทฐ ๋ฒ„์ „์œผ๋กœ ์ œ๊ณต๋˜๊ณ  CUSTOMER_MANAGED_CAS_CA ์ธ์Šคํ„ด์Šค์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์š”์ฒญ์— passwordValidationPolicy ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • enablePasswordPolicy: true๋กœ ์„ค์ •ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…์„ ์‚ญ์ œํ•˜๋ ค๋ฉด null์„ ์‚ฌ์šฉํ•˜์—ฌ PATCH ์š”์ฒญ์„ enablePasswordPolicy ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

    • minLength: ๋น„๋ฐ€๋ฒˆํ˜ธ์— ํ•„์š”ํ•œ ์ตœ์†Œ ๋ฌธ์ž ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • complexity: ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์†Œ๋ฌธ์ž, ๋Œ€๋ฌธ์ž, ์ˆซ์ž, ์˜์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์˜ ์กฐํ•ฉ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ COMPLEXITY_DEFAULT์ž…๋‹ˆ๋‹ค.
    • reuseInterval: ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • disallowUsernameSubstring: true๋กœ ์„ค์ •ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ์— ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • passwordChangeInterval: ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๊ธฐ๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ์ดˆ ๋‹จ์œ„์ด๋ฉฐ, ์†Œ์ˆ˜์  ์•„๋ž˜ 9์ž๋ฆฌ๊นŒ์ง€ ์ง€์ • ๊ฐ€๋Šฅํ•˜๊ณ  s๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 3.5s์ž…๋‹ˆ๋‹ค.

    Vertex AI์™€ ํ†ตํ•ฉ๋˜๋„๋ก ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์š”์ฒญ์— enableGoogleMlIntegration ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ํ†ตํ•ฉ์„ ํ†ตํ•ด Vertex AI์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)์„ PostgreSQL์šฉ Cloud SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • enableGoogleMlIntegration: ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ true๋กœ ์„ค์ •๋˜๋ฉด Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ Vertex AI์— ์—ฐ๊ฒฐํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์˜ˆ์ธก ๋ฐ ํ†ต๊ณ„ ์š”์ฒญ์„ AI์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • cloudsql.enable_google_ml_integration: ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ on์œผ๋กœ ์„ค์ •๋˜๋ฉด Cloud SQL์ด Vertex AI์™€ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "edition": "EDITION_TYPE",
        "enableGoogleMlIntegration": "true" | "false"
        "databaseFlags":
        [
          {
            "name": "cloudsql.enable_google_ml_integration",
            "value": "on" | "off"
          }
        ]
        "dataCacheConfig": {
          "dataCacheEnabled": DATA_CACHE_ENABLED
        },
        "backupConfiguration": {
          "enabled": true
        },
        "passwordValidationPolicy": {
          "enablePasswordPolicy": true
          "minLength": "MIN_LENGTH",
          "complexity": COMPLEXITY_DEFAULT,
          "reuseInterval": "REUSE_INTERVAL",
          "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
          "passwordChangeInterval": "PASSWORD_CHANGE_INTERVAL"
        }
        "ipConfiguration": {
          "privateNetwork": "PRIVATE_NETWORK",
          "authorizedNetworks": [AUTHORIZED_NETWORKS],
          "ipv4Enabled": false,
          "enablePrivatePathForGoogleCloudServices": true,
          "serverCaMode": "CA_MODE",
          "customSubjectAlternativeNames": "DNS_NAMES"
        }
      }
    }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    ์‘๋‹ต์€ ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…์ด๋ฏ€๋กœ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    IPv4 ์ฃผ์†Œ ๊ฒ€์ƒ‰

    ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค์— ์ž๋™์œผ๋กœ ํ• ๋‹น๋œ IPv4 ์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • project-id: ํ”„๋กœ์ ํŠธ ID
    • instance-id: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค ID

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "MYSQL_8_0_18",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "us-west1-a",
          "kind": "sql#locationPreference"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "18:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "1",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "--redacted--",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        ...
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "us-west1",
      "gceZone": "us-west1-a"
    }
    

    ์‘๋‹ต์—์„œ ipAddress ํ•„๋“œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

    ์ด ์ž‘์—…์— ์ ํ•ฉํ•œ ๊ธฐ๋ณธ REST API ์š”์ฒญ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ instances:insert ํŽ˜์ด์ง€์˜ API ํƒ์ƒ‰๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ

    ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋Š” ํ˜„์žฌ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ IP ์ฃผ์†Œ๋กœ ์ž๋™ ํ™•์ธ๋˜๋Š” ์ „์—ญ ๋„๋ฉ”์ธ ์ด๋ฆ„ ์„œ๋น„์Šค(DNS) ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์—”๋“œํฌ์ธํŠธ๋Š” ๋ณต์ œ๋ณธ ์žฅ์•  ์กฐ์น˜ ๋˜๋Š” ์ „ํ™˜ ์ž‘์—… ์‹œ ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ์šด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋กœ ์ž๋™ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ๋Œ€์‹  SQL ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์—์„œ ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์ „ ์„œ๋น„์Šค ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—ฐ๊ฒฐ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

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

    ์ปค์Šคํ…€ ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ

    Cloud SQL ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ€์ƒ ์ฝ”์–ด๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋จธ์‹  ์œ ํ˜•์€ ๋จธ์‹  ์‹œ๋ฆฌ์ฆˆ์— ์†ํ•˜๋ฉฐ ๋จธ์‹  ์‹œ๋ฆฌ์ฆˆ ๊ฐ€์šฉ์„ฑ์€ Cloud SQL ๋ฒ„์ „์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

    Cloud SQL Enterprise Plus ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ Cloud SQL์€ N2 ๋ฐ C4A ๋จธ์‹  ์‹œ๋ฆฌ์ฆˆ์—์„œ ์ธ์Šคํ„ด์Šค์— ์‚ฌ์ „ ์ •์˜๋œ ๋จธ์‹  ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL Enterprise ๋ฒ„์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ Cloud SQL์€ ์‚ฌ์ „ ์ •์˜๋œ ๋จธ์‹  ์œ ํ˜•๊ณผ ์ปค์Šคํ…€ ๋จธ์‹  ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    ์˜จ๋ผ์ธ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ(OLTP)์™€ ๊ฐ™์ด ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค์— ์ „์ฒด ์ž‘์—… ์„ธํŠธ๋ฅผ ํฌํ•จํ•  ๋งŒํผ ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์š”์ธ(์˜ˆ: ํ™œ์„ฑ ์—ฐ๊ฒฐ ์ˆ˜ ๋ฐ ๋‚ด๋ถ€ ์˜ค๋ฒ„ํ—ค๋“œ ํ”„๋กœ์„ธ์Šค)๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

    Cloud SQL ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋จธ์‹  ์œ ํ˜•๊ณผ ๋จธ์‹  ์‹œ๋ฆฌ์ฆˆ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋จธ์‹  ์‹œ๋ฆฌ์ฆˆ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋ฌธ์ œ ํ•ด๊ฒฐ

    ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. ํ• ๋‹น๋œ IP ๋ฒ”์œ„์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ๊ฐ€ ๋” ์ด์ƒ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ํ• ๋‹น๋œ IP ๋ฒ”์œ„์˜ ํฌ๊ธฐ๊ฐ€ /24๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค.
    • ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ํ• ๋‹น๋œ IP ๋ฒ”์œ„์˜ ํฌ๊ธฐ๊ฐ€ Cloud SQL ์ธ์Šคํ„ด์Šค ์ˆ˜์— ๋น„ํ•ด ๋„ˆ๋ฌด ์ž‘์Šต๋‹ˆ๋‹ค.
    • ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๋ฆฌ์ „์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ ํ• ๋‹น๋œ IP ๋ฒ”์œ„์˜ ํฌ๊ธฐ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋” ์ปค์ง‘๋‹ˆ๋‹ค. ํ• ๋‹น๋œ ๋ฒ”์œ„ ํฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๊ธฐ์กด ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ IP ๋ฒ”์œ„๋ฅผ ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ IP ์ฃผ์†Œ ๋ฒ”์œ„ ํ• ๋‹น์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ --allocated-ip-range-name ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ์ง€์ •๋œ IP ๋ฒ”์œ„๋งŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ƒˆ ๋ฒ”์œ„๋ฅผ ํ• ๋‹นํ•  ๊ฒฝ์šฐ ํ• ๋‹น์ด ๊ธฐ์กด ํ• ๋‹น๊ณผ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    ์ƒˆ IP ๋ฒ”์œ„๋ฅผ ๋งŒ๋“  ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPC ํ”ผ์–ด๋ง์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
    --network=VPC_NETWORK \
    --project=PROJECT_ID \
    --force
        

    ๊ธฐ์กด ํ• ๋‹น์„ ํ™•์žฅํ•˜๋Š” ๊ฒฝ์šฐ ํ• ๋‹น ๋ฒ”์œ„๋ฅผ ๋Š˜๋ฆฌ๊ธฐ๋งŒ ํ•˜๊ณ  ์ค„์ด์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์›๋ž˜ ํ• ๋‹น์ด 10.0.10.0/24์ธ ๊ฒฝ์šฐ ์ƒˆ ํ• ๋‹น์„ ์ตœ์†Œ 10.0.10.0/23์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ์ผ๋ฐ˜์ ์œผ๋กœ /24 ํ• ๋‹น์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์กฐ๊ฑด(์ถ”๊ฐ€ ์ธ์Šคํ„ด์Šค ์œ ํ˜• ๊ทธ๋ฃน, ์ถ”๊ฐ€ ๋ฆฌ์ „)์— ๋Œ€ํ•ด /mask๋ฅผ 1๋งŒํผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋™์ผํ•œ ํ• ๋‹น์—์„œ ๋‘ ์ธ์Šคํ„ด์Šค ์œ ํ˜• ๊ทธ๋ฃน์„ ๋ชจ๋‘ ๋งŒ๋“ค๋ ค๋Š” ๊ฒฝ์šฐ /24์—์„œ /23์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

    ๊ธฐ์กด IP ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPC ํ”ผ์–ด๋ง์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=RESERVED_RANGE_NAME \
    --network=VPC_NETWORK \
    --project=PROJECT_ID
        
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]. Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”.
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED.

    ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Service Networking API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”.

    gcloud services enable servicenetworking.googleapis.com \
    --project=PROJECT_ID
        
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID. ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด Service Networking API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ์‹œ์— ์„œ๋น„์Šค ๊ณ„์ •์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์— Service Networking API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์ด ์ƒ์„ฑ๋˜์ง€ ์•Š๊ณ  ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์ด ์‹œ์Šคํ…œ ์ „์ฒด์— ์ „ํŒŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: More than 3 subject alternative names are not allowed. ์ปค์Šคํ…€ SAN์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— DNS ์ด๋ฆ„์„ 3๊ฐœ ์ด์ƒ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— DNS ์ด๋ฆ„์„ 3๊ฐœ ์ด์ƒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: Subject alternative names %s is too long. The maximum length is 253 characters. Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” DNS ์ด๋ฆ„์ด 253์ž(์˜๋ฌธ ๊ธฐ์ค€)๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: Subject alternative name %s is invalid.

    Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ฒ„ ์ธ์ฆ์„œ์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” DNS ์ด๋ฆ„์ด ๋‹ค์Œ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • ํ›„ํ–‰ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.
    • RFC 1034 ์‚ฌ์–‘์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค.

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

    1. ์ธ์Šคํ„ด์Šค์— PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ
    2. ์ธ์Šคํ„ด์Šค์— PostgreSQL ์‚ฌ์šฉ์ž ๋งŒ๋“ค๊ธฐ
    3. ์ธ์Šคํ„ด์Šค ์•ก์„ธ์Šค ๋ณด์•ˆ ๋ฐ ์ œ์–ด
    4. ์ธ์Šคํ„ด์Šค์™€ PostgreSQL ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ
    5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
    6. ์ธ์Šคํ„ด์Šค ์„ค์ • ์•Œ์•„๋ณด๊ธฐ