2๋‹จ๊ณ„: API ํ”„๋ก์‹œ ๋ฐฐํฌ

์ด์ œ Google Cloud์™€ Apigee UI๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์„ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ์ด ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณผ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. Apigee UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ API ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ

์ด ์„น์…˜์—์„œ๋Š” API ํ”„๋ก์‹œ ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI์—์„œ ์ƒˆ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Cloud ์ฝ˜์†”์˜ Apigee

Cloud ์ฝ˜์†”์—์„œ Apigee๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ Cloud ์ฝ˜์†”์˜ Apigee UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ์™ผ์ชฝ ์ƒ๋‹จ์— ์žˆ๋Š” ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์กฐ์ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ธฐ๋ณธ ๋ทฐ์—์„œ ํ”„๋ก์‹œ ๊ฐœ๋ฐœ > API ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. API ํ”„๋ก์‹œ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  5. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  6. ๋‹ค์Œ ์„ค์ •์œผ๋กœ ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋ก์‹œ ์ด๋ฆ„: myproxy๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์˜ ๋‚˜๋จธ์ง€ ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋ฅผ ํ”„๋ก์‹œ ID๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ธฐ๋ณธ ๊ฒฝ๋กœ: / ๋’ค์— ํ”„๋ก์‹œ ์ด๋ฆ„์ด ์˜ต๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” /myproxy์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” API์— ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” URL์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. Edge๋Š” URL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์‹  ์š”์ฒญ์„ ์ ์ ˆํ•œ API ํ”„๋ก์‹œ๋กœ ์ผ์น˜์‹œํ‚ค๋ฉฐ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) ์„ค๋ช…: '๊ฐ„๋‹จํ•œ ํ”„๋ก์‹œ๋กœ Apigee Hybrid ํ…Œ์ŠคํŠธ'์™€ ๊ฐ™์ด ์ƒˆ API ํ”„๋ก์‹œ์— ์„ค๋ช…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ€์ƒ(๊ธฐ์กด API): https://mocktarget.apigee.net์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Apigee๊ฐ€ API ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ์š”์ฒญ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์ƒ URL์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. mocktarget ์„œ๋น„์Šค๋Š” Apigee์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋ฉฐ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. API ํ‚ค ๋˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ์˜ ์„ธ๋ถ€์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ์˜ ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด

  7. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  8. ์ •์ฑ… ํ™”๋ฉด์—์„œ ๋ณด์•ˆ ์˜ต์…˜์œผ๋กœ ํ†ต๊ณผ(์Šน์ธ ์—†์Œ)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  10. ๋ฐฐํฌ(์„ ํƒ์‚ฌํ•ญ) ์•„๋ž˜์˜ ๋ฐฐํฌ ํ™˜๊ฒฝ ํ•„๋“œ์—์„œ ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•  ํ™˜๊ฒฝ์„ ํ•˜๋‚˜ ์ด์ƒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋ฐฐํฌ ํ™˜๊ฒฝ ํ•„๋“œ๋ฅผ ๋น„์›Œ ๋‘ก๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์–ธ์ œ๋“ ์ง€ ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  11. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. Apigee๋Š” ํ”„๋ก์‹œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋ก์‹œ ๋ฒˆ๋“ค์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Apigee๋Š” ํ”„๋ก์‹œ ์š”์•ฝ ๋ทฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•˜๋„๋ก ์„ ํƒํ•œ ๊ฒฝ์šฐ ๋ฐฐํฌ ์„น์…˜์— ์ฒ˜์Œ ๋ฐฐํฌํ•  ๋•Œ ๋ฒ„์ „ ๋ฒˆํ˜ธ 1์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ƒํƒœ ์—ด์— ํ”„๋ก์‹œ๊ฐ€ ๋ฐฐํฌ๋œ ํ™˜๊ฒฝ์ด ๋…น์ƒ‰ ์ƒํƒœ ํ‘œ์‹œ๊ธฐ์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ์•„๋ž˜์— ์—”๋“œํฌ์ธํŠธ ์„น์…˜์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ํ”„๋ก์‹œ ์—”๋“œํฌ์ธํŠธ: ํ”„๋ก์‹œ์— ์„ค์ •ํ•œ ๊ธฐ๋ณธ ๊ฒฝ๋กœ(์ด ์˜ˆ์‹œ์—์„œ๋Š” /myproxy)์ž…๋‹ˆ๋‹ค.
  • ๋Œ€์ƒ ์—”๋“œํฌ์ธํŠธ: ๋Œ€์ƒ์— ์„ค์ •ํ•œ ๊ธฐ๋ณธ ๊ฒฝ๋กœ(์ด ์˜ˆ์‹œ์—์„œ๋Š” https://mocktarget.apigee.net)์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Apigee

๊ธฐ๋ณธ Apigee๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ API ํ”„๋ก์‹œ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ Apigee UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ์™ผ์ชฝ ์ƒ๋‹จ์— ์žˆ๋Š” ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์กฐ์ง์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ธฐ๋ณธ ๋ทฐ์—์„œ ๊ฐœ๋ฐœ > API ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. API ํ”„๋ก์‹œ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  5. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  6. ๋‹ค์Œ ์„ค์ •์œผ๋กœ ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋ก์‹œ ์ด๋ฆ„: 'myproxy'๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์„น์…˜์˜ ๋‚˜๋จธ์ง€ ๋‹จ๊ณ„์—์„œ๋Š” ์ด๋ฅผ ํ”„๋ก์‹œ ID๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋ก์‹œ ๊ธฐ๋ณธ ๊ฒฝ๋กœ: '/myproxy'๋กœ ์ž๋™ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” API์— ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” URL์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. Edge๋Š” URL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์‹  ์š”์ฒญ์„ ์ ์ ˆํ•œ API ํ”„๋ก์‹œ๋กœ ์ผ์น˜์‹œํ‚ค๋ฉฐ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) ์„ค๋ช…: '๊ฐ„๋‹จํ•œ ํ”„๋ก์‹œ๋กœ Apigee ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ…Œ์ŠคํŠธ'์™€ ๊ฐ™์ด ์ƒˆ API ํ”„๋ก์‹œ์— ์„ค๋ช…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ€์ƒ(๊ธฐ์กด API): https://mocktarget.apigee.net์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Apigee๊ฐ€ API ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ์š”์ฒญ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์ƒ URL์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. mocktarget ์„œ๋น„์Šค๋Š” Apigee์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋ฉฐ ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. API ํ‚ค ๋˜๋Š” ์•ก์„ธ์Šค ํ† ํฐ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    API ํ”„๋ก์‹œ์˜ ์„ธ๋ถ€์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ์˜ ํ”„๋ก์‹œ ์„ธ๋ถ€์ •๋ณด

  7. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  8. ์ •์ฑ… ํ™”๋ฉด์—์„œ ๋ณด์•ˆ ์˜ต์…˜์œผ๋กœ ํ†ต๊ณผ(์Šน์ธ ์—†์Œ)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ๋‹ค์Œ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  10. ์š”์•ฝ ํ™”๋ฉด์—์„œ ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•  ํ™˜๊ฒฝ์„ ์„ ํƒํ•˜๊ณ  ์ƒ์„ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋Š” ํ”„๋ก์‹œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋ก์‹œ ๋ฒˆ๋“ค์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋ก์‹œ ๋งŒ๋“ค๊ธฐ ๋งˆ๋ฒ•์‚ฌ ํ™•์ธ ๋Œ€ํ™”์ƒ์ž

  11. ํ”„๋ก์‹œ ๋ชฉ๋ก์œผ๋กœ ์ด๋™์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    Apigee๋Š” API ํ”„๋ก์‹œ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” ํ”„๋ก์‹œ ๋ทฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํ”„๋ก์‹œ๋Š” ๋ฐฐํฌ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๋…น์ƒ‰ ์ƒํƒœ ํ‘œ์‹œ๊ธฐ์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

2. API ํ”„๋ก์‹œ ํ˜ธ์ถœ

ํ”„๋ก์‹œ๊ฐ€ ๋ฐฐํฌ๋˜์—ˆ๋‹ค๊ณ  UI์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ ์›ํ•˜๋Š” cURL ๋˜๋Š” REST ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก์‹œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. DOMAIN ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ํ”„๋กœ์ ํŠธ ๋ฐ ์กฐ์ง ์„ค์ • - 3๋‹จ๊ณ„: ํ™˜๊ฒฝ ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ์—์„œ ํ™˜๊ฒฝ ๊ทธ๋ฃน์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์— ์‚ฌ์šฉํ•œ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    echo $DOMAIN
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Apigee ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์˜ ์™ธ๋ถ€ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

    kubectl get svc -n apigee -l app=apigee-ingressgateway

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    NAME                                        TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                      AGE
    apigee-ingressgateway-prod-hybrid-37a39bd   LoadBalancer   192.0.2.123   233.252.0.123   15021:32049/TCP,80:31624/TCP,443:30723/TCP   16h
  3. ์™ธ๋ถ€ IP ๋ฐ ํฌํŠธ๋ฅผ ๋ณ€์ˆ˜๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.
    export INGRESS_IP_ADDRESS=EXTERNAL_IP_ADDRESS
    export INGRESS_PORT=PORT_NUMBER
  4. API ํ”„๋ก์‹œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
    curl  -H Host:$DOMAIN --resolve \
      $DOMAIN:$INGRESS_PORT:$INGRESS_IP_ADDRESS  \
      https://$DOMAIN:$INGRESS_PORT/myproxy -k -v

    ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    curl  -H Host:example.com --resolve example.com:443:233.252.0.123 https://example.com:443/myproxy -k -v

API ํ”„๋ก์‹œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฒซ ๋ฒˆ์งธ ํ”„๋ก์‹œ ๋นŒ๋“œ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.