๊ณต๊ฐœ ๋ณด์•ˆ ์—ฐ๊ฒฐ Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๊ณต๊ฐœ ๋ณด์•ˆ ์—ฐ๊ฒฐ Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ํ”„๋กœ๋•์…˜ ๋˜๋Š” ๋น„ํ”„๋กœ๋•์…˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ๊ตฌ์„ฑ์„ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์•ˆ๋‚ด๋Š” ๋‹ค์Œ ์ ˆ์ฐจ ๋Œ€์‹  Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) Private Service Connect ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ (๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์•ก์„ธ์Šค) Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ๋ฌธ์„œ ํŽ˜์ด์ง€์˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

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

  1. ์˜์—…ํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ์—ฐ๊ฐ„ ๊ณ„์•ฝ์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€, ํ”„๋กœ์ ํŠธ์— ํ• ๋‹น๋Ÿ‰์ด ํ• ๋‹น๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. Google Cloud ํ”„๋กœ์ ํŠธ์— ๊ฒฐ์ œ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. Google Cloud ์ฝ˜์†”์˜ ํ”„๋กœ์ ํŠธ ์„ ํƒ๊ธฐ ํŽ˜์ด์ง€์—์„œ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

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

  4. Google Cloud ์ฝ˜์†”์—์„œ ํ”„๋กœ์ ํŠธ์— Looker API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ๋•Œ๋Š” API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ˜์†” ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  5. OAuth ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ  ์Šน์ธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. OAuth ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ธ์ฆํ•˜๊ณ  ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด OAuth๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  6. VPC ์„œ๋น„์Šค ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ณต๊ฐœ ๋ณด์•ˆ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค ๋Œ€์‹  ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ (๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์•ก์„ธ์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Looker ๊ด€๋ฆฌ์ž (roles/looker.admin) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ฐ ๊ด€๋ฆฌ ์•”ํ˜ธํ™” ํ‚ค (CMEK)๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ IAM ์—ญํ• ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Key Management Service ๋ฌธ์„œ์˜ IAM์œผ๋กœ ์•ก์„ธ์Šค ์ œ์–ด ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค)์—์„œ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์•ฝ 60๋ถ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์˜ ํ”„๋กœ์ ํŠธ์—์„œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ œํ’ˆ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์—์„œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ์ด๋ฏธ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

    Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค)๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์ธ์Šคํ„ด์Šค ์ด๋ฆ„ ์„น์…˜์—์„œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค)์˜ URL๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  4. OAuth ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ์„น์…˜์—์„œ OAuth ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋งŒ๋“  OAuth ํด๋ผ์ด์–ธํŠธ ID ๋ฐ OAuth ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฆฌ์ „ ์„น์…˜์˜ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ ์ ˆํ•œ ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ํ• ๋‹น๋Ÿ‰์ด ํ• ๋‹น๋˜๋Š” ๊ตฌ๋… ๊ณ„์•ฝ์˜ ๋ฆฌ์ „์— ํ•ด๋‹นํ•˜๋Š” ๋ฆฌ์ „์„ ์„ ํƒํ•˜์„ธ์š”. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์€ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์œ„์น˜ ๋ฌธ์„œ ํŽ˜์ด์ง€์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋ฆฌ์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  6. ๋ฒ„์ „ ์„น์…˜์—์„œ ์กฐ์ง์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ธ์Šคํ„ด์Šค ๋ฒ„์ „์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ์œ ํ˜•์€ ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์—ฐ๊ฐ„ ๊ณ„์•ฝ์— ๋‚˜์—ด๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฒ„์ „ ์œ ํ˜•์„ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ๋ฒ„์ „ ์œ ํ˜•์— ํ• ๋‹น๋œ ํ• ๋‹น๋Ÿ‰์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Standard: ์‚ฌ์šฉ์ž๊ฐ€ 50๋ช… ๋ฏธ๋งŒ์ธ ์†Œ๊ทœ๋ชจ ์กฐ์ง ๋˜๋Š” ํŒ€์„ ์œ„ํ•œ Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ํ”Œ๋žซํผ
    • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ: ๋‹ค์–‘ํ•œ ๋‚ด๋ถ€ BI ๋ฐ ๋ถ„์„ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ•ํ™” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ํ”Œ๋žซํผ
    • ์‚ฝ์ž…: ์•ˆ์ •์ ์ธ ์™ธ๋ถ€ ๋ถ„์„ ๋ฐ ์ปค์Šคํ…€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ€๊ทœ๋ชจ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์œ„ํ•œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ํ”Œ๋žซํผ
    • ๋น„ํ”„๋กœ๋•์…˜ ๋ฒ„์ „: ์ค€๋น„ ๋ฐ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋น„ํ”„๋กœ๋•์…˜ ๋ฒ„์ „ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋น„ํ”„๋กœ๋•์…˜ ์ธ์Šคํ„ด์Šค ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  7. ์ธ์Šคํ„ด์Šค ๋งž์ถค์„ค์ • ์„น์…˜์—์„œ ๊ตฌ์„ฑ ์˜ต์…˜ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ๋งž๊ฒŒ ๋งž์ถค์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ์„ค์ • ๊ทธ๋ฃน์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

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

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

  10. ์œ ์ง€๋ณด์ˆ˜ ๊ธฐ๊ฐ„ ์„น์…˜์—์„œ ์„ ํƒ์ ์œผ๋กœ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค)๊ฐ€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ์š”์ผ ๋ฐ ์‹œ๊ฐ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€๋ณด์ˆ˜ ๊ธฐ๊ฐ„์€ 1์‹œ๊ฐ„ ๋™์•ˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜ ๊ธฐ๊ฐ„์˜ ์„ ํ˜ธ ๊ธฐ๊ฐ„ ์˜ต์…˜์€ ์‹œ์Šคํ…œ ์ž๋™ ์„ ํƒ ๊ธฐ๊ฐ„์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

  11. ์œ ์ง€๋ณด์ˆ˜ ๊ฑฐ๋ถ€ ๊ธฐ๊ฐ„ ์„น์…˜์—์„œ ์„ ํƒ์ ์œผ๋กœ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค)๊ฐ€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์˜ˆ์•ฝํ•˜์ง€ ์•Š๋Š” ์ผ ๋‹จ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€๋ณด์ˆ˜ ๊ฑฐ๋ถ€ ๊ธฐ๊ฐ„์€ ์ตœ๋Œ€ 60์ผ๊นŒ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€๋ณด์ˆ˜ ๊ฑฐ๋ถ€ ๊ธฐ๊ฐ„ 2๊ฐœ ์‚ฌ์ด์—๋Š” ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋‚ ์ด 14์ผ ์ด์ƒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  12. Looker์˜ Gemini ์„น์…˜์—์„œ ์„ ํƒ์ ์œผ๋กœ Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค์— Looker์˜ Gemini ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Looker์˜ Gemini๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด Gemini๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์Šคํ„ฐ ๊ธฐ๋Šฅ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์Šคํ„ฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ Looker์˜ Gemini์— ํฌํ•จ๋œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์Šคํ„ฐ ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์Šคํ„ฐ์˜ ๋น„๊ณต๊ฐœ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž๋ณ„๋กœ Looker์˜ Gemini ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์–‘์‹์„ ํ†ตํ•ด ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GA ์ „ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ค‘์— Gemini๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์„ค์ •์„ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์Šคํ„ฐ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด Google Cloud ๋ฅผ ์œ„ํ•œ Gemini ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์Šคํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์•ฝ๊ด€์— ์„ค๋ช…๋œ ๋Œ€๋กœ Google์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค์—์„œ Gemini๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด Gemini ์„ค์ •์„ ์„ ํƒ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

  13. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. CMEK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € Looker ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  CMEK ์„ค์ • ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  2. gcloud looker instances create ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud looker instances create INSTANCE_NAME \
    --project=PROJECT_ID \
    --oauth-client-id=OAUTH_CLIENT_ID \
    --oauth-client-secret=OAUTH_CLIENT_SECRET \
    --region=REGION \
    --edition=EDITION \
    [--consumer-network=CONSUMER_NETWORK --private-ip-enabled --reserved-range=RESERVED_RANGE]
    [--no-public-ip-enabled]
    [--public-ip-enabled]
    [--async]
    

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

    • INSTANCE_NAME: Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค URL๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • PROJECT_ID: Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” Google Cloud ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • OAUTH_CLIENT_ID ๋ฐ OAUTH_CLIENT_SECRET: OAuth ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋งŒ๋“  OAuth ํด๋ผ์ด์–ธํŠธ ID ๋ฐ OAuth ์•”ํ˜ธ์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ด์ „์— ๋งŒ๋“  OAuth ํด๋ผ์ด์–ธํŠธ์—์„œ ์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • REGION: Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๊ฐ€ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ๊ตฌ๋… ๊ณ„์•ฝ์˜ ๋ฆฌ์ „์— ํ•ด๋‹นํ•˜๋Š” ๋ฆฌ์ „์„ ์„ ํƒํ•˜์„ธ์š”. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ „์€ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์œ„์น˜ ๋ฌธ์„œ ํŽ˜์ด์ง€์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋ฆฌ์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • EDITION: ์ธ์Šคํ„ด์Šค์˜ ๋ฒ„์ „ ๋ฐ ํ™˜๊ฒฝ ์œ ํ˜• (ํ”„๋กœ๋•์…˜ ๋˜๋Š” ๋น„ํ”„๋กœ๋•์…˜)์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ core-standard-annual, core-enterprise-annual, core-embed-annual, nonprod-core-standard-annual, nonprod-core-enterprise-annual ๋˜๋Š” nonprod-core-embed-annual์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Looker (Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • CONSUMER_NETWORK: VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๊ณต์œ  VPC์ž…๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • RESERVED_RANGE: Google์—์„œ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค์˜ ์„œ๋ธŒ๋„คํŠธ์›Œํฌ๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•  VPC ๋‚ด์˜ IP ์ฃผ์†Œ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ๋น„๊ณต๊ฐœ ์—ฐ๊ฒฐ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜์ง€ ๋งˆ์„ธ์š”.

    ๋‹ค์Œ ํ”Œ๋ž˜๊ทธ๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    • --public-ip-enabled๋Š” ๊ณต๊ฐœ ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” --async๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  3. ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    [--maintenance-window-day=MAINTENANCE_WINDOW_DAY
          --maintenance-window-time=MAINTENANCE_WINDOW_TIME]
    [--deny-maintenance-period-end-date=DENY_MAINTENANCE_PERIOD_END_DATE
          --deny-maintenance-period-start-date=DENY_MAINTENANCE_PERIOD_START_DATE
          --deny-maintenance-period-time=DENY_MAINTENANCE_PERIOD_TIME]
    --kms-key=KMS_KEY_ID
    [--fips-enabled]
    
    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • MAINTENANCE_WINDOW_DAY: friday, monday, saturday, sunday, thursday, tuesday, wednesday ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ง€๋ณด์ˆ˜ ๊ธฐ๊ฐ„ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค)์˜ ์œ ์ง€๋ณด์ˆ˜ ์ •์ฑ… ๊ด€๋ฆฌ ๋ฌธ์„œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    • MAINTENANCE_WINDOW_TIME ๋ฐ DENY_MAINTENANCE_PERIOD_TIME: UTC ์‹œ๊ฐ„ ๊ธฐ์ค€ 24์‹œ๊ฐ„ ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: 13:00, 17:45).
    • DENY_MAINTENANCE_PERIOD_START_DATE ๋ฐ DENY_MAINTENANCE_PERIOD_END_DATE: YYYY-MM-DD ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • KMS_KEY_ID: ๊ณ ๊ฐ ๊ด€๋ฆฌ ์•”ํ˜ธํ™” ํ‚ค(CMEK)๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ƒ์„ฑ๋œ ํ‚ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    --fips-enabled ํ”Œ๋ž˜๊ทธ๋ฅผ ํฌํ•จํ•˜์—ฌ FIPS 140-2 Level 1 ๊ทœ์ • ์ค€์ˆ˜๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Terraform

๋‹ค์Œ Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์œผ๋กœ ํ‘œ์ค€ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜์„ธ์š”.

# Creates a Standard edition Looker (Google Cloud core) instance with basic functionality enabled.
resource "google_looker_instance" "main" {
  name             = "my-instance"
  platform_edition = "LOOKER_CORE_STANDARD"
  region           = "us-central1"
  oauth_config {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
}

๋‹ค์Œ Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ์„ค์ •์ด ์ ์šฉ๋œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜์„ธ์š”.

# Creates a Standard edition Looker (Google Cloud core) instance with full functionality enabled.

resource "google_looker_instance" "main" {
  name              = "my-instance"
  platform_edition  = "LOOKER_CORE_STANDARD"
  region            = "us-central1"
  public_ip_enabled = true
  admin_settings {
    allowed_email_domains = ["google.com"]
  }
  // User metadata config is only available when platform edition is LOOKER_CORE_STANDARD.
  user_metadata {
    additional_developer_user_count = 10
    additional_standard_user_count  = 10
    additional_viewer_user_count    = 10
  }
  maintenance_window {
    day_of_week = "THURSDAY"
    start_time {
      hours   = 22
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  deny_maintenance_period {
    start_date {
      year  = 2050
      month = 1
      day   = 1
    }
    end_date {
      year  = 2050
      month = 2
      day   = 1
    }
    time {
      hours   = 10
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  oauth_config {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
}

๋‹ค์Œ Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๊ณต๊ฐœ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๋กœ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Looker(Google Cloud ํ•ต์‹ฌ ์„œ๋น„์Šค) ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜์„ธ์š”.

# Creates an Enterprise edition Looker (Google Cloud core) instance with full, Private IP functionality.
resource "google_looker_instance" "main" {
  name               = "my-instance"
  platform_edition   = "LOOKER_CORE_ENTERPRISE_ANNUAL"
  region             = "us-central1"
  private_ip_enabled = true
  public_ip_enabled  = false
  reserved_range     = google_compute_global_address.main.name
  consumer_network   = data.google_compute_network.main.id
  admin_settings {
    allowed_email_domains = ["google.com"]
  }
  encryption_config {
    kms_key_name = google_kms_crypto_key.main.id
  }
  maintenance_window {
    day_of_week = "THURSDAY"
    start_time {
      hours   = 22
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  deny_maintenance_period {
    start_date {
      year  = 2050
      month = 1
      day   = 1
    }
    end_date {
      year  = 2050
      month = 2
      day   = 1
    }
    time {
      hours   = 10
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  oauth_config {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  depends_on = [
    google_service_networking_connection.main,
    google_kms_crypto_key.main
  ]
}

resource "google_kms_key_ring" "main" {
  name     = "keyring-example"
  location = "us-central1"
}

resource "google_kms_crypto_key" "main" {
  name     = "crypto-key-example"
  key_ring = google_kms_key_ring.main.id
}

resource "google_service_networking_connection" "main" {
  network                 = data.google_compute_network.main.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.main.name]
}

resource "google_compute_global_address" "main" {
  name          = "looker-range"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 20
  network       = data.google_compute_network.main.id
}

data "google_project" "main" {}

data "google_compute_network" "main" {
  name = "default"
}

resource "google_kms_crypto_key_iam_member" "main" {
  crypto_key_id = google_kms_crypto_key.main.id
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
  member        = "serviceAccount:service-${data.google_project.main.number}@gcp-sa-looker.iam.gserviceaccount.com"
}

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

์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์€ ์ผ๋‹จ ์‹œ์ž‘ํ•˜๋ฉด ์ผ์‹œ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Terraform ๋ฆฌ์†Œ์Šค๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹๋˜๋ฉด ํ„ฐ๋ฏธ๋„์— ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

Creation complete after XmXs [id=projects/PROJECT-ID/locations/REGION/instances/my-instance-randomly-generated-name]

Apply complete! Resources: X added, X changed, X destroyed.

๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ์ด๋ฆ„์ด ํ• ๋‹น๋˜๋Š” ์ƒˆ ์ธ์Šคํ„ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณด๋ ค๋ฉด ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋™์•ˆ ์ฝ˜์†” ๋‚ด์˜ ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€์—์„œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†” ๋ฉ”๋‰ด์—์„œ ์•Œ๋ฆผ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ํ™œ๋™์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฐœ ๋ณด์•ˆ ์—ฐ๊ฒฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ธ์Šคํ„ด์Šค์˜ ๊ณต๊ฐœ URL์ด ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€์˜ ์ธ์Šคํ„ด์Šค URL ์—ด์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ด์ „์— ๋งŒ๋“  OAuth ํด๋ผ์ด์–ธํŠธ์—์„œ ์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  OAuth ์„ค์ •์„ ์™„๋ฃŒํ•œ ํ›„์—๋Š” ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€์— ํ‘œ์‹œ๋œ ์ธ์Šคํ„ด์Šค URL๋กœ ์ด๋™ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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