API Connect์™€ Secure Gateway๋ฅผ ์‚ฌ์šฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํด๋ผ์šฐ๋“œ ์ƒ์„ฑํ•˜๊ธฐ  

์˜จํ”„๋ ˆ๋ฏธ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์„œ๋น„์Šค๋ฅผ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํด๋ผ์šฐ๋“œ๋กœ ํ™•์žฅํ•˜๊ธฐ

Last updated

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

์ƒ๋‹จ์˜ ‘์ฝ”๋“œ ๋ณด๊ธฐ’๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด GitHub์—์„œ ํ•œ๊ธ€ README ํŒŒ์ผ์„ ์„ ํƒํ•˜์—ฌ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

By Animesh Singh, Tommy Li, Arthur De Magalhaes

Overview

์ฐจ์„ธ๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ์žˆ์–ด์„œ ํ”„๋ผ์ด๋น—๊ณผ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์— ๊ฑธ์นœ ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ๋‚˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๋ฐฐํฌ๋Š” ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์ž์™€ ์—…๋ฌด ๋‹ด๋‹น์ž๋“ค์€ ๊ณ ๊ฐ ์ •๋ณด์™€ ๊ฐ™์ด ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” SOE(System of Engagement) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ๋‚ด์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๊ฒฝ์šฐ๋ผ ํ•˜๋”๋ผ๋„ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ API ํ˜•ํƒœ๋กœ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋„ ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ ํŒจํ„ด์—์„œ๋Š”, Transport ํ”„๋กœํ† ์ฝœ๊ณผ Secure ํ„ฐ๋„์„ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ณ , ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ API๋ฅผ API Gateway๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ์—…์˜ ๋ฐฉํ™”๋ฒฝ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ด…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ™์€ ์‚ฌ๋‚ด ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋กœ ์šด์šฉํ•˜๋Š” ๊ฒƒ์€ ์•„์ฃผ ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ–ˆ๋Š”์ง€ ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ด ๋ณด์„ธ์š” :

  • ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์„ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์— ์—ฐ๊ฒฐํ•˜๋Š” ํ„ฐ๋„์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค
  • ์˜จํ”„๋ ˆ๋ฏธ์Šค์šฉ WebSphere Liberty ๋˜๋Š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์šฉ Cloud Foundry๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • CouchDB ๋ฐ Docker๋ฅผ ์ด์šฉํ•œ ์˜จํ”„๋ ˆ๋ฏธ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • API Gateway ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ API๋ฅผ ํผ๋ธ”๋ฆญ์œผ๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

Flow

  1. ์ฒซ ๋ฒˆ์งธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” Docker, WebSphere Liberty ๋ฐ CouchDB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Java ๊ธฐ๋ฐ˜์˜ ํ•ญ๊ณต์‚ฌ ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JAX-RS ๋ฐ Swagger ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ๊ถŒ์žฅ ๋น„ํ–‰์„ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์˜ Weather API ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„ ํƒํ•œ ๋ชฉ์ ์ง€ ๊ณตํ•ญ์˜ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  3. Secure Gateway ์„œ๋ฒ„๋Š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌ๋˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ ๋‚ด์— ์„ค์น˜๋˜์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํšŒ์‚ฌ ๋ฐฉํ™”๋ฒฝ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด ์‹œ์ ์—์„œ ํฌํŠธ ๋Œ€ ํฌํŠธ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.
  4. API Connect ์„œ๋น„์Šค๋Š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์‚ฌ๋‚ด์— ๊ตฌ์ถ•๋œ ์˜ˆ์ œ ํ•ญ๊ณต์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ API๋Š” ์นดํƒˆ๋กœ๊ทธ ์ž‘์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์— ํผ๋ธ”๋ฆฌ์‹ฑ์„ํ•˜๋ฉด API ์ด์šฉ์ž๊ฐ€ ์ด๋ฅผ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  5. ๋™์ผํ•œ ํ•ญ๊ณต์‚ฌ ์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ์—๋Š” Docker๋ฅผ ์‚ฌ์šฉํ•œ CouchDB ๋งŒ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
  6. ๋™์ผํ•˜๊ฒŒ, Secure Gateway ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ๊ฐ ํผ๋ธ”๋ฆญ ๋ฐ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ์—์„œ ์‹œ์ž‘๋˜์–ด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ฐฉํ™”๋ฒฝ ์™ธ๋ถ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  7. ๊ทธ๋Ÿฌ๋‚˜, ๋‘ ๋ฒˆ์งธ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Cloud Foundry๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋กœ ๋ฐฐํฌํ•˜๊ณ , Secure ํ„ฐ๋„์„ ์‚ฌ์šฉํ•ด ์‚ฌ๋‚ด CouchDB๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  8. ์ด์ „ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Weather API ์„œ๋น„์Šค๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  9. ๋งˆ์ง€๋ง‰์œผ๋กœ, API Connect ์„œ๋น„์Šค๋Š” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์‚ฌ๋‚ด์— ๊ตฌ์ถ•๋œ ์˜ˆ์ œ ํ•ญ๊ณต์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ API๋Š” ์นดํƒˆ๋กœ๊ทธ ์ž‘์„ฑ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Components

JAX-RS

RESTful Web Services ๋˜๋Š” JAX-RS ์šฉ Java API๋Š” REST (Representational State Transfer) ์•„ํ‚คํ…์ณ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์œ„ํ•œ API ์ŠคํŽ™์ž…๋‹ˆ๋‹ค.

Swagger

API์˜ ์ „์ฒด ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๊ฑธ์นœ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” OpenAPI ์ŠคํŽ™์šฉ API ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค.

Apache CouchDB

์‚ฌ์šฉ ํŽธ์˜์„ฑ์— ์ค‘์ ์„ ๋‘๊ณ  โ€์›น์„ ์™„์ „ํžˆ ํ’ˆ๋Š”โ€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ–์ถ˜ ์˜คํ”ˆ ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†Œํ”„ํŠธ์›จ์–ด.

WebSphere Liberty

๋™์ ์ด๋ฉฐ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด Java EE ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋กœ์„œ ๊ธฐ๋™ ์‹œ๊ฐ„์ด ๋น ๋ฅด๊ณ , ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ ์˜ค๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„ ์žฌ์‹œ์ž‘์ด ์—†์œผ๋ฉฐ, ๊ฐ„๋‹จํ•œ XML ์„ค์ •์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

API Connect

API์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์šด์˜ํ•ฉ๋‹ˆ๋‹ค.

Secure Gateway

์–ด๋–ค ๊ฒƒ์„ ์—ฐ๊ฒฐํ•˜๋“  ๋น ๋ฅด๊ณ , ์‰ฝ๊ณ  ์•ˆ์ „ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ํ™˜๊ฒฝ๊ณผ ํด๋ผ์šฐ๋“œ๊ฐ„์— ์•ˆ์ „ํ•˜๊ณ  ์ง€์†์ ์ธ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

Weather Company Data

Weather Company Data for IBM Bluemix ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์˜ Bluemix ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

Technologies

API Management

API๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ํ•ด๋‹นAPI์— ๋Œ€ํ•œ ๋ฌธ์„œํ™”, ์ ‘์† ํ†ต์ œ ๋ฐ ํ†ต๊ณ„ ์ถ”์ ์ด ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ์˜ API ์ œ๊ณต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

ํด๋ผ์šฐ๋“œ

์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ปดํ“จํŒ… ๋ฐ IT ๋ฆฌ์†Œ์Šค์— ์—‘์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค

Containers

์•ฑ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ€์ƒ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ์ฒด.

Data Store

์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ

Hybrid Integration

๊ณ ๊ฐ์ด ์ค‘์š”ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๊ณต๊ธ‰์ž์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Java

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์•ˆ์ „ํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด.

Related Blogs

๊ท€ํ•˜๊ฐ€ ์ž…๋ ฅํ•œ ์‡ผํŠธ์ฝ”๋“œ ๊ฒ€์ƒ‰์กฐ๊ฑด์— ๋งค์น˜๋˜๋Š” ํฌ์ŠคํŒ…์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.