REST: Representational State Transfer

ABSTRACT OF THE DISSERTATION

  • ์›”๋“œ ์™€์ด๋“œ ์›น์€ ํฐ ์„ฑ๊ณต์„ ์ด๋ค˜๊ณ , ์ด์   ๋ชจ๋˜ ์›น ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ€์ด๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ธ์ด ํ•„์š”ํ•˜๋‹ค.
  • ์ด ์—ฐ๊ตฌ๋Š” ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ‰๊ฐ€ํ•จ์œผ๋กœ์จ ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋Šฅ์ , ์„ฑ๋Šฅ์ , ์‚ฌํšŒ์  ์š”๊ตฌ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์ž‘๋๋‹ค.
  • ์ด ๋…ผ๋ฌธ์—์„œ๋Š” Representational State Transfer (REST) ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ์†Œ๊ฐœํ•˜๋ฉฐ, REST๊ฐ€ ๋ชจ๋˜ ์›น ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐœ๋ฐœ๊ณผ ์„ค๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐ€์ด๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•  ๊ฒƒ์ด๋‹ค.
  • REST๋Š” ์ปดํฌ๋„ŒํŠธ ์ƒํ˜ธ์ž‘์šฉ์˜ ํ™•์žฅ์„ฑ, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฒ”์šฉ์„ฑ, ์ปดํฌ๋„ŒํŠธ์˜ ๋…๋ฆฝ๋œ ๋ฐฐํฌ, ์ƒํ˜ธ์ž‘์šฉ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๋Š” ์ค‘๊ณ„ ์ปดํฌ๋„ŒํŠธ, ๋ณด์•ˆ, ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ์บก์Аํ™”๋ฅผ ๊ฐ•์กฐํ•œ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ Hypertext Transfer Protocol(HTTP)๊ณผ Uniform Resource Identifier(URI)์— REST๋ฅผ ์ ์šฉํ•˜๋ฉฐ ๋ฐฐ์šด ๊ตํ›ˆ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

INTRODUCTION

  • ์•„ํ‚คํ…์ฒ˜๋Š” 90๋…„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ ์—ฐ๊ตฌ์˜ ์ค‘์‹ฌ์ด ๋˜์—ˆ๋‹ค. ์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋Š” ์ง„๊ณต ์ƒํƒœ์—์„œ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ์•„ํ‚คํ…์ฒ˜ ๋ ˆ๋ฒจ์˜ ๋ชจ๋“  ์„ค๊ณ„๋Š” ๊ธฐ๋Šฅ์ , ์‚ฌํšŒ์  ์š”๊ตฌ ๋งฅ๋ฝ์— ๋งž์ถฐ ๊ฒฐ์ •๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ์ง€๋‚œ ์ˆ˜๋ฐฑ๋…„๊ฐ„์˜ ํ”„๋กœ์ ํŠธ ์‹คํŒจ ๊ฒฝํ—˜์œผ๋กœ๋ถ€ํ„ฐ "ํ˜•ํƒœ๋Š” ๊ธฐ๋Šฅ์„ ๋”ฐ๋ฅธ๋‹ค"๋ผ๋Š” ์›์น™์ด ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ, ์†Œํ”„ํŠธ์›จ์–ด ์‹ค๋ฌด์ž๋“ค์€ ์ข…์ข… ์ด ์›์น™์„ ๋ฌด์‹œํ•œ๋‹ค.
  • ์ฒ˜์Œ ์„ธ ์ฑ•ํ„ฐ์—์„œ๋Š” ์ดํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ •์˜ํ•˜๊ณ , ์ฑ•ํ„ฐ 4์—์„œ๋Š” ์›น ์„ค๊ณ„์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•œ๋‹ค. ์ฑ•ํ„ฐ 5์—์„œ๋Š” ํ•˜์ดํผ ๋ฏธ๋””์–ด ์‹œ์Šคํ…œ์„ ์œ„ํ•œ REST ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์†Œ๊ฐœํ•  ๊ฒƒ์ด๋‹ค.

CHAPTER 1. Software Architecture

  • ์—ฐ๊ตฌ ๋ถ„์•ผ๋กœ์„œ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ด€์‹ฌ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์—ฐ๊ตฌ์ž๋“ค ์‚ฌ์ด์—๋Š” ์•„ํ‚คํ…์ฒ˜ ์ •์˜์— ์–ด๋–ค ๊ฒƒ์„ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์˜๊ฒฌ ์ผ์น˜๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค.
  • ์ด ์ฑ•ํ„ฐ์—์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ผ๊ด€๋œ ์šฉ์–ด๋ฅผ ์ •์˜ํ•œ๋‹ค.

1.1. Run-time Abstraction

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

1.2. Elements

  • ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์š”์†Œ(์ปดํฌ๋„ŒํŠธ, ์ปค๋„ฅํ„ฐ, ๋ฐ์ดํ„ฐ)์˜ ๊ตฌ์„ฑ๊ณผ ๊ด€๊ณ„์˜ ์ œ์•ฝ์œผ๋กœ ์ •์˜๋œ๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ(Component): ๋ช…๋ น๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์„ ์ œ๊ณตํ•˜๋Š” ๋‚ด๋ถ€ ์ƒํƒœ์˜ ์ถ”์ƒ ๋‹จ์œ„.
    • ์ปค๋„ฅํ„ฐ(Connector): ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ํ†ต์‹ , ์กฐ์ • ๋˜๋Š” ํ˜‘๋ ฅ์„ ๋งค๊ฐœํ•˜๋Š” ์ถ”์ƒ ๋งค์ปค๋‹ˆ์ฆ˜.
    • ๋ฐ์ดํ„ฐ(Datum): ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ปค๋„ฅํ„ฐ๋ฅผ ํ†ตํ•ด ์ˆ˜์‹ ํ•˜๋Š” ์ •๋ณด.

1.3. Configurations

  • ๊ตฌ์„ฑ์€ ์‹œ์Šคํ…œ ๋Ÿฐํƒ€์ž„ ๋™์•ˆ ์ด๋ค„์ง€๋Š” ์•„ํ‚คํ…์ฒ˜ ์š”์†Œ ์‚ฌ์ด์˜ ๊ด€๊ณ„ ๊ตฌ์กฐ๋‹ค.

1.4. Properties

  • ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์˜ ์†์„ฑ ์ง‘ํ•ฉ์€ ์ปดํฌ๋„ŒํŠธ, ์ปค๋„ฅํ„ฐ, ๋ฐ์ดํ„ฐ์—์„œ ํŒŒ์ƒ๋˜๋Š” ๋ชจ๋“  ํŠน์„ฑ์„ ํฌํ•จํ•œ๋‹ค.
  • ์†์„ฑ์€ ์•„ํ‚คํ…์ฒ˜์˜ ์ œ์•ฝ ์ง‘ํ•ฉ์— ์˜ํ•ด ์œ ๋„๋œ๋‹ค.

1.5. Styles

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

์ฐธ๊ณ ์ž๋ฃŒ

์ด ๋ฌธ์„œ๋ฅผ ์ธ์šฉํ•œ ๋ฌธ์„œ