์ƒˆ์†Œ์‹

IT ๊ฐœ๋ฐœ ์ง€์‹/์šฉ์–ด์‚ฌ์ „

[์šฉ์–ด์‚ฌ์ „] REST์™€ SOAP ๋น„๊ต

  • -

 

 

 

REST์™€ SOAP๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€์˜ ์˜จ๋ผ์ธ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ํ—ˆ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค(Application Programming Interface, API)๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. REST(Representational State Transfer)๋Š” ์•„ํ‚คํ…์ฒ˜ ์›์น™ ์„ธํŠธ์ด๊ณ , SOAP(Simple Object Access Protocol)๋Š” World Wide Web Consortium(W3C)์—์„œ ์œ ์ง€๊ด€๋ฆฌํ•˜๋Š” ๊ณต์‹ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์ฆ‰, SOAP๋Š” ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ, REST๋Š” ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์ด ์ฃผ์š” ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ API๋Š” ํ™œ์šฉ ์‚ฌ๋ก€์™€ ๊ฐœ๋ฐœ์ž์˜ ์„ ํ˜ธ์— ๋”ฐ๋ผ REST ๋˜๋Š” SOAP ์ค‘ ํ•˜๋‚˜๋ฅผ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

API ์‚ฌ์šฉ ์„ค๋ช…์„œ ๋‹ค์šด๋กœ๋“œ

REST(Representational State Transfer)

REST๋Š” ์›น ์„œ๋น„์Šค์™€ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฝ๋Ÿ‰ํ™”์˜ ํ•„์š”์— ๋งž์ถ˜ ์•„ํ‚คํ…์ฒ˜ ์›์น™ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ด๋“œ๋ผ์ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์˜ ๊ตฌํ˜„ ์—ฌ๋ถ€๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์š”์ฒญ์ด REST API๋กœ ์ „์†ก๋  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(HTTP)์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋ฉด REST์šฉ์œผ๋กœ ์„ค๊ณ„๋œ API(RESTful API ๋˜๋Š” RESTful ์›น ์„œ๋น„์Šค)๊ฐ€ HTML, XML, ์ผ๋ฐ˜ ํ…์ŠคํŠธ, JSON๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSON(JavaScript Object Notation)์€ ์ด๋ฆ„๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์–ด๋– ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ๋“  ์ฝ์„ ์ˆ˜ ์žˆ๊ณ , ์ธ๊ฐ„๊ณผ ๊ธฐ๊ณ„๊ฐ€ ๋ชจ๋‘ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒฝ๋Ÿ‰ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜ธ๋˜๋Š” ๋ฉ”์‹œ์ง€ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ RESTful API๋Š” ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ์„ค์ •ํ•˜๊ธฐ๋„ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ 6๊ฐ€์ง€ ์•„ํ‚คํ…์ฒ˜ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ค€์ˆ˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด RESTful์— ์†ํ•ฉ๋‹ˆ๋‹ค. RESTful ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ–์ถฐ์•ผ ํ•  ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„, ๋ฆฌ์†Œ์Šค๋กœ ๊ตฌ์„ฑ๋œ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. ์š”์ฒญ์ด ํ†ต๊ณผํ•˜๋Š” ์„œ๋ฒ„์— ํด๋ผ์ด์–ธํŠธ ์ฝ˜ํ…์ธ ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๋Š” ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(stateless) ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ์„ธ์…˜์˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  3. ์ผ๋ถ€ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ์˜ ํ•„์š”์„ฑ์„ ์ œ๊ฑฐํ•  ์บ์‹œ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ๋ณ„๋กœ ๋‹ค๋ฅธ ํ˜•์‹์ด ์•„๋‹Œ, ํ‘œ์ค€ํ™”๋œ ํ˜•์‹์œผ๋กœ ์ •๋ณด๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„ ํ†ตํ•ฉ๋œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. REST๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์ œ์‹œํ•œ Roy Fielding์€ ์ด๋ฅผ "REST ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ์Šคํƒ€์ผ๊ณผ ์ฐจ๋ณ„ํ™”ํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ๊ธฐ๋Šฅ"์ด๋ผ๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  5. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ณ„์ธต์ ์œผ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ ์ œ์•ฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  6. ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ „์†กํ•ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ฝ”๋“œ ์˜จ๋””๋งจ๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ๊ฐ€์‹œ์„ฑ์ด ๊ฐ์†Œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋Š” ์„ ํƒ์  ๊ฐ€์ด๋“œ๋ผ์ธ์ž…๋‹ˆ๋‹ค.

SOAP(Simple Object Access Protocol)

SOAP๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๋นŒ๋“œ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์ตœ์ดˆ์˜ ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žก์„ฑ๊ณผ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋นŒํŠธ์ธ ๋ฃฐ์„ ์ ์šฉํ•˜๋ฏ€๋กœ, ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ํ‘œ์ค€์€ ๋นŒํŠธ์ธ ์ปดํ”Œ๋ผ์ด์–ธ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ, ๊ธฐ์—…์—์„œ ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋นŒํŠธ์ธ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ํ‘œ์ค€์—๋Š” ๋ณด์•ˆ๊ณผ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์˜ ๊ธฐ๋ณธ ์†์„ฑ์ธ ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ฒฉ๋ฆฌ์„ฑ, ๋‚ด๊ตฌ์„ฑ(Atomicity, Consistency, Isolation and Durability, ACID)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์›น ์„œ๋น„์Šค ์‚ฌ์–‘์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์›น ์„œ๋น„์Šค ๋ณด์•ˆ(WS-security): ํ† ํฐ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ํ‘œ์ค€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • WS-ReliableMessaging: ๋ถˆ์•ˆ์ •ํ•œ IT ์ธํ”„๋ผ๋กœ ์ „์†ก๋˜๋Š” ๋ฉ”์‹œ์ง€ ๊ฐ„ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ‘œ์ค€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์›น ์„œ๋น„์Šค ์ฃผ์†Œ์ง€์ •(WS-addressing): ์‹ฌ์ธต ๋„คํŠธ์›Œํฌ์— ๋ผ์šฐํŒ… ์ •๋ณด๋ฅผ ์œ ์ง€๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹ , SOAP ํ—ค๋” ๋‚ด์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ํ•ด๋‹น ์ •๋ณด๋ฅผ ํŒจํ‚ค์ง•ํ•ฉ๋‹ˆ๋‹ค.
  • ์›น ์„œ๋น„์Šค ๊ธฐ์ˆ  ์–ธ์–ด(WSDL): ์›น ์„œ๋น„์Šค๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€, ํ•ด๋‹น ์„œ๋น„์Šค์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ ์œ„์น˜๋ฅผ ๊ธฐ์ˆ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์š”์ฒญ์ด SOAP API๋กœ ์ „์†ก๋˜๋Š” ๊ฒฝ์šฐ HTTP(์›น ๋ธŒ๋ผ์šฐ์ €), SMTP(์ด๋ฉ”์ผ), TCP ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ์ด์–ด ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์š”์ฒญ์ด ์ˆ˜์‹ ๋˜๋ฉด, ์ธ๊ฐ„๊ณผ ๊ธฐ๊ณ„๊ฐ€ ๋ชจ๋‘ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋งˆํฌ์—… ์–ธ์–ด์ธ XML ๋ฌธ์„œ ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ SOAP ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. SOAP API์— ๋Œ€ํ•œ ์™„๋ฃŒ๋œ ์š”์ฒญ์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์บ์‹œํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, API๋กœ ์žฌ์ „์†กํ•˜์ง€ ์•Š๋Š” ํ•œ ์ดํ›„์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

SOAP๊ณผ REST ๋น„๊ต

๋Œ€๋ถ€๋ถ„์˜ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์—์„œ SOAP๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉฐ, REST๋Š” ๊ทธ๋ณด๋‹ค ๋’ค์— ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ์›น ๊ธฐ๋ฐ˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ๋” ๋น ๋ฅธ ๋Œ€์•ˆ์œผ๋กœ ์—ฌ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. REST๋Š” ์œ ์—ฐํ•œ ๊ตฌํ˜„์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์ด๋“œ๋ผ์ธ ์„ธํŠธ๊ณ , SOAP๋Š” XML ๋ฉ”์‹œ์ง•๊ณผ ๊ฐ™์€ ํŠน์ • ์š”๊ฑด์ด ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

REST API๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท(IoT), ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ, ์„œ๋ฒ„๋ฆฌ์Šค(servreless) ์ปดํ“จํŒ…๊ณผ ๊ฐ™์ด ๋ณด๋‹ค ์ƒˆ๋กœ์šด ์ปจํ…์ŠคํŠธ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. SOAP ์›น ์„œ๋น„์Šค๋Š” ๋งŽ์€ ๊ธฐ์—…์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋ณธ ๋ณด์•ˆ๊ณผ ํŠธ๋žœ์žญ์…˜ ์ปดํ”Œ๋ผ์ด์–ธ์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋กœ ์ธํ•ด ์ข€ ๋” ๋ฌด๊ฑฐ์šด ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Google Maps API์™€ ๊ฐ™์€ ๋Œ€๋ถ€๋ถ„์˜ ํผ๋ธ”๋ฆญ API๋Š” REST ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

 

 

ํ•ด๋‹น์ž๋ฃŒ ์ถœ์ฒ˜๋Š” ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•ด์ฃผ์„ธ์š”!

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ‘