REST: ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๋ฏธ์น๋ ์ํฅ
REST(Representational State Transfer)๊ฐ ์ต์ ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๋ฏธ์น๋ ์ํฅ, ๊ทธ ์์น, ์งํ, ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ API์ ๊ฐ์ ธ์ค๋ ์ด์ ์ ๋ํด ์์๋ณด์ธ์.

REST(Representational State Transfer)๋ Roy Fielding์ด 2000๋ ๋ฐ์ฌ ํ์ ๋ ผ๋ฌธ์์ ์๊ฐํ ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. REST์ ์ฃผ์ ์ด์ ์ ์น ์๋น์ค๋ฅผ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ๋จ์ํ๊ฒ ๋ง๋๋ ์ผ๋ จ์ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์์น์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. REST๋ ์ต์ ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๋๋ฆฌ ์ฑํ๋์ด ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ธํฐ๋ท์ ํตํด ํต์ ํ๋ ๋ฐฉ์์ ํ์ฑํฉ๋๋ค.
REST์ ํต์ฌ ์์ด๋์ด๋ ๋ฆฌ์์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์น ์๋น์ค์ ๋งฅ๋ฝ์์ ๋ฆฌ์์ค๋ ์ด๋ฏธ์ง, ๋ฌธ์ ๋๋ ๊ฐ์ฒด์ ๋ชจ๋ ๊ฒ์ ๋ํ๋ผ ์ ์์ต๋๋ค. ๋ฆฌ์์ค๋ HTTP URI(Uniform Resource Identifier)๋ก ์๋ณ๋๋ฉฐ GET, POST, PUT ๋ฐ DELETE์ ๊ฐ์ ํ์ค HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ์๋ฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์น์ ๊ธฐ๋ณธ ์์น์ ์กด์คํ๋ฉด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์คํ ๊ฐ ํต์ ์ ๋จ์์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
REST์ ํต์ฌ ์์น
RESTful ์ํคํ ์ฒ๋ฅผ ์๋ดํ๋ ๊ธฐ๋ณธ ์์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ํ ๋น์ ์ฅ ํต์ : ์๋ฒ์ ๋ํ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์๋ ์ ์ฅ๋ ์ ๋ณด๋ ์ด์ ์์ฒญ ์ปจํ ์คํธ์ ์์กดํ์ง ์๊ณ ์๋ฒ๊ฐ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์์คํ ์ ๋ ๋์ ํ์ฅ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ์บ์ ๊ฐ๋ฅํ ๋ฆฌ์์ค: ์๋ฒ์ ์๋ต์ ์บ์ ๊ฐ๋ฅ ๋๋ ์บ์ ๋ถ๊ฐ๋ฅ์ผ๋ก ํ์๋ ์ ์์ผ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ์ด์ ์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ ์๋ฒ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ-์๋ฒ ๋ถ๋ฆฌ: ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ฒ๋ฆฌํ๋ ํด๋ผ์ด์ธํธ์ ๋ฆฌ์์ค ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์๋ฒ์ ํจ๊ป ๋ณ๊ฐ์ ์ฑ ์์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ฅผ ํตํด ๋ ๋ฆฝ์ ์ธ ์งํ์ ๊ฐ์ ๋ ์์คํ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๊ท ์ผํ ์ธํฐํ์ด์ค: REST๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ ์ํ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ์ฉํ์ฌ HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์กฐ์์ ์ํ ๋จ์ํ๊ณ ์ผ๊ด๋ ๊ท์น ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๊ณ์ธตํ๋ ์์คํ ์ํคํ ์ฒ: REST ๊ธฐ๋ฐ ์์คํ ์ ๊ฐ๊ฐ ํน์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด ๋ชจ๋์ ์ ๊ทผ ๋ฐฉ์์ ๊ด์ฌ์ฌ์ ๋ช ํํ ๋ถ๋ฆฌ, ํฅ์๋ ์ฌ์ฌ์ฉ์ฑ ๋ฐ ๋ ์ฌ์ด ์์คํ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Code-on-Demand(์ ํ ์ฌํญ): ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋๋ก ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ๊ณตํ์ฌ ์์คํ ์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.

์ด๋ฏธ์ง ์ถ์ฒ: restfulapi.net
์ด๋ฌํ ์์น์ ์ค์ํ๋ฉด RESTful ์ํํธ์จ์ด ์ํคํ ์ฒ๊ฐ ์ต์ ์น ์๋น์ค์์ ์๊ตฌํ๋ ํ์ฅ์ฑ, ๋จ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ ํน์ฑ์ ๋ํ๋ ๋๋ค.
REST๊ฐ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ฅผ ๋ณ๊ฒฝํ ๋ฐฉ๋ฒ
REST๊ฐ ๋๋ฆฌ ์ฑํ๋๊ธฐ ์ ์๋ ๋ง์ ์น ์๋น์ค๊ฐ SOAP(Simple Object Access Protocol) ํ์ค์ ๋ฐ๋ฅด๊ฑฐ๋ ์ฌ์ฉ์ ์ ์ ๋ฐ ๋ ์ ํต์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ข ์ข ๋นํจ์จ์ฑ๊ณผ ์ํธ ์ด์ฉ์ฑ ๋ฌธ์ ๋ก ์ด์ด์ก์ต๋๋ค. SOAP๋ XML ๊ธฐ๋ฐ ๋ฉ์์ง ํ์๊ณผ ๋ณต์กํ ์ ์ฐจ์ ์์กดํ๋ ๋ฐ๋ฉด ๋ง์ถคํ ์ ๊ทผ ๋ฐฉ์์ ํด๋ผ์ด์ธํธ์ ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ์์คํ ์ ๋ฐฐ์ฐ๊ณ ์ ์ํด์ผ ํ์ต๋๋ค.
REST์ ๋์ ๊ณผ ํจ๊ป ์น ์๋น์ค๋ฅผ ์ค๊ณํ๋ ๋ณด๋ค ์์ง๋ ฅ ์๊ณ ํ์คํ๋ ๋ฐฉ๋ฒ์ด ๋ฑ์ฅํ์ต๋๋ค. REST๋ ๋ณต์กํ ๋ฉ์์ง ํ์๊ณผ ์ ์ฐจ์ ํธ์ถ์์ ๋ฆฌ์์ค ๋ฐ ํ์คํ๋ HTTP ๋ฉ์๋๋ก ์ด์ ์ ์ฎ๊ฒผ์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์น ์๋น์ค๋ฅผ ์ดํดํ๊ณ ์ํธ ์์ฉํ๊ธฐ ์ํ ๊ด๋ฒ์ํ ๋ฌธ์ ๋ฐ ์ถ๊ฐ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ ๊ฐ๋ฐ ๋ฐ ํตํฉ ํ๋ก์ธ์ค๊ฐ ๋ ์ฝ๊ณ ๋น ๋ฅด๊ณ ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค.
REST ํ๋ช ์ ๊ฐ์ฅ ์ค์ํ ์๋ฏธ ์ค ํ๋๋ API(์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค)์ ์งํ์ ๋๋ค. RESTful ์์น์ผ๋ก ์ค๊ณ๋ ์ต์ API๋ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ ๋ฐ ์๋น์ค์ ์ํธ ์์ฉํ ์ ์๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๋ ๋์ ์ํํธ์จ์ด ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ๊ฐ๋ฐ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ค์ ๋๋ค. ์ด๋ ๋ค์ํ ์น ๊ธฐ์ , ๋ง์ดํฌ๋ก ์๋น์ค ๋ฐ ํด๋ผ์ฐ๋ ์ปดํจํ ์ ์ฑ์ฅ์ ์ด์งํ์ฌ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ ์ํํธ์จ์ด ํ๋ก์ ํธ์ ํ์ง๊ณผ ํจ์จ์ฑ์ ํฅ์์์ผฐ์ต๋๋ค.
์ํํธ์จ์ด ์ํคํ ์ฒ์์ REST์ ๋ฑ์ฅ์ผ๋ก ๊ฐ๋ฐ์์ ์กฐ์ง์ ๋ชจ๋ฒ ์ฌ๋ก์ ํ์ค์ ์ฑํํ์ฌ ๋์์์ด ์งํํ๋ ๋์งํธ ์ธ๊ณ์ ์๊ตฌ์ ๋ถ์ํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ๋์์ต๋๋ค.
API ๋ฐ AppMaster ํ๋ซํผ์์ REST์ ์ญํ
REST๋ API๊ฐ ์ค๊ณ๋๊ณ ๊ตฌํ๋๋ ๋ฐฉ์์ ์๋นํ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค. ๊ทธ ์์น์ ํ์ ์ด RESTful API๋ ์ต์ ์น ์๋น์ค์ ํ์ค์ด ๋์ด ๋ ๋์ ํ์ฅ์ฑ, ์์ ์ฑ ๋ฐ ํต์ ๋จ์์ฑ์ ๋ณด์ฅํฉ๋๋ค. RESTful API๋ ๊ธฐ์กด HTTP ๋ฐ URI ํ๋กํ ์ฝ์ ํ์ฉํ์ฌ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ๋ณดํธ์ ์ผ๋ก ํธํ๋๋ ์ธํฐํ์ด์ค๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฆฌ์์ค ์ฒ๋ฆฌ๋ฅผ ์ํ ํ์คํ๋ ๋ฐฉ๋ฒ(์: GET, POST, PUT, PATCH ๋ฐ DELETE)์ ํ์ฉํ์ฌ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๋ฌธ์ ํด๊ฒฐ์ ๋ณต์ก์ฑ์ ์ค์ฌ ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ง์คํ ์ ์๋๋ก ํฉ๋๋ค.
AppMaster๋ ์ฌ์ฉ์์๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ธํฐํ์ด์ค๋ฅผ ์ค๊ณํ๊ณ ๊ด๋ฆฌํ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ์ด๋ฌํ ์์น์ ์์ฉํ๋ ๊ฐ๋ ฅํ ์ฝ๋ ์๋ ํ๋ซํผ์ ๋๋ค. RESTful API ๋ฐ WSS ์๋ํฌ์ธํธ๋ฅผ ์๋์ผ๋ก ์์ฑํจ์ผ๋ก์จ AppMaster ๊ณ ๊ฐ์ด ์๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ชจ๋ธ ๋ฐ ๋น์ฆ๋์ค ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋จ์ํํฉ๋๋ค. ์ด๋ฌํ API๋ ํ๋ฐํธ์๋์ ๋ฐฑ์๋ ๊ฐ์ ์ธํฐํ์ด์ค ์ญํ ์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ โโ๊ตํํ๊ณ ๋ช ํํ๊ฒ ์ ์๋ ๋ฐฉ์์ผ๋ก ์์ ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค.
๋ํ AppMaster ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ชจ๋ Postgresql ํธํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํจ๊ป ์๋ํ ์ ์๋๋ก ๋ณด์ฅํ๋ฏ๋ก ์ํฐํ๋ผ์ด์ฆ ๋ฐ ๊ณ ๋ถํ ์ฌ์ฉ ์ฌ๋ก์ ์๋ฒฝํ ์ ํ์ ๋๋ค. ๋ฐ๋ผ์ RESTful ์์น๊ณผ์ ์ํํ ํตํฉ์ ๊ณ ๊ฐ์ ๋ณํํ๋ ์๊ตฌ์ ๋ฐ๋ผ ์ฑ์ฅํ๊ณ ๋ฐ์ ํ ์ ์๋ ๋ณด๋ค ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ์ ๊ธฐ์ฌํฉ๋๋ค.
RESTful ์ํคํ ์ฒ ์ฌ์ฉ์ ์ด์
RESTful ์ํคํ ์ฒ๋ฅผ ์ฑํํ๋ฉด ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ด์ ์ด ์์ต๋๋ค. ์ด๋ฌํ ์ฅ์ ์ ํจ์จ์ฑ, ํ์ฅ์ฑ ํฅ์, ๋ค๋ฅธ ์์คํ ๋ฐ ์๋น์ค์์ ํตํฉ ์ฉ์ด์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
ํฅ์๋ ํ์ฅ์ฑ
RESTful ์ํคํ ์ฒ๋ ๋ณธ์ง์ ์ผ๋ก ํ์ฅํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ์ํ ๋น์ ์ฅ ํต์ ํ๊ฒฝ์ ์ ์งํ๋ ํด๋ผ์ด์ธํธ-์๋ฒ ๋ถ๋ฆฌ ๋ฐ ๊ธฐํ ์์น์ ํตํด ๋ฌ์ฑ๋ฉ๋๋ค. ๋ฆฌ์์ค ๋ฐ ํด๋ผ์ด์ธํธ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ RESTful ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋ฉด์ ์ด๋ฌํ ์ฆ๊ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํฅ์๋ ์ฑ๋ฅ
REST์ ์ฃผ์ ์์น ์ค ํ๋๋ ๋ฆฌ์์ค์ ์บ์ ๊ฐ๋ฅ์ฑ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ํน์ ๋ฆฌ์์ค๋ฅผ ์บ์ํ๋๋ก ํ์ฉํ๋ฉด ์๋ฒ์ ๋ํ ์์ฒญ ์๋ฅผ ์ค์ด๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์์คํ ๋ถํ๋ฅผ ์ต์ํํ ์ ์์ต๋๋ค.
ํฅ์๋ ์ ๋ขฐ์ฑ
RESTful ์์คํ ์ ์ํ ๋น์ ์ฅ ํต์ ์ ์๋ฒ์ ๋ํ ๊ฐ ์์ฒญ์ด ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ฏ๋ก ๋ ๋์ ๋ด๊ฒฐํจ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ด๋ ๊ณ์ธตํ๋ ์์คํ ์ํคํ ์ฒ์ ๊ฒฐํฉ๋์ด ์์ ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํต๋๋ค.
ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ
RESTful ์ํคํ ์ฒ๋ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ ์ฒด ์์คํ ์ ๋ฐฉํดํ์ง ์๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐํ๊ณ ์์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ ๋๋ถ์ ๋ณํํ๋ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ๋์ํ์ฌ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด๋ค ๊ฐ๋จํ๊ฒ ๋ฐ์ ์ํฌ ์ ์์ต๋๋ค.
๊ฐ์ํ๋ API ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ
ํ์คํ๋ HTTP ๋ฉ์๋์ ์ ์ ์๋ ๋ฆฌ์์ค ๋ช ๋ช ๊ท์น์ ์ฌ์ฉํ๋ RESTful API๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ง์ถคํ ํต์ ํ๋กํ ์ฝ ๊ตฌํ์ ๋ํด ๊ฑฑ์ ํ๋ ๋์ ํต์ฌ ๊ธฐ๋ฅ์ ๊ตฌ์ถํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์์คํ ๊ณผ์ ์์ฌ์ด ํตํฉ
RESTful API๋ ๊ธฐ์กด ์น ํ์ค๊ณผ์ ํธํ์ฑ์ผ๋ก ์ธํด ๋ค์ํ ์์คํ ๋ฐ ์๋น์ค์ ์ฝ๊ฒ ํตํฉ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํฅ์๋ ์ ์ฐ์ฑ๊ณผ ํ์ฌ ์๋ฃจ์ ์ ํ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ํํธ์จ์ด ์ค๊ณ์์ REST์ ๋ฏธ๋
REST๋ ์ต์ ์ํํธ์จ์ด ์ํคํ ์ฒ๋ฅผ ํ์ฑํ๋ ๋ฐ ํ์์ ์ธ ์ญํ ์ ํด์์ผ๋ฉฐ API ๋ฐ ์น ๊ธฐ๋ฐ ์๋น์ค๊ฐ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์ํ ๊ตฌ์ฑ ์์๋ก ๋จ์ ์๊ธฐ ๋๋ฌธ์ REST์ ์ํฅ๋ ฅ์ ๊ณ์๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ํํธ์จ์ด ์ค๊ณ์ ๋ฏธ๋๋ ์๋ก์ด ๊ธฐ์ ๊ณผ ์ํคํ ์ฒ ํจํด์ผ๋ก ์งํํ ์๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ ๋ณด๋ฅผ ์ป๊ณ ์ ์๋ ฅ์ ์ ์งํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด GraphQL , gRPC ๋ฐ WebSocket๊ณผ ๊ฐ์ ์๋ก์ด ํต์ ํ๋กํ ์ฝ ๋ฐ ์ํคํ ์ฒ ์คํ์ผ์ด REST์ ๋์์ผ๋ก ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ์ ์ ์งง์ ๋๊ธฐ ์๊ฐ, ์ค์๊ฐ ํต์ ๋ฐ ๋ณด๋ค ์ ์ฐํ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ REST์ ๋นํด ํน์ ์ฌ์ฉ ์ฌ๋ก์์ ํน์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ต์ ์ ํ๊ฐํ๊ณ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํด์ผ ํฉ๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ REST๋ ํนํ ๋จ์ํ๊ณ ํ์คํ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ ํต์ ๋ฐฉ๋ฒ์ด ํ์ํ ์น ์๋น์ค ๋ฐ API๋ฅผ ๊ตฌ์ถํ ๋ ๋ง์ ์๋๋ฆฌ์ค์์ ๊ธฐ๋ณธ ์ํคํ ์ฒ ์คํ์ผ๋ก ๋จ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. Anna Eshoo๊ฐ ํ๋ช ํ๊ฒ ๋งํ ๊ฒ์ฒ๋ผ "ํ์ ์ ๋ฏธ๋์ ์ ํ ์นด๋์ ๋๋ค." ์ต์ ์ํคํ ์ฒ ์คํ์ผ๊ณผ ๊ธฐ์ ๋ฐ์ ์ ๋ค์ง์ง ์์์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ณ ์ค๋๋ ์ ์ํํธ์จ์ด ์ฐ์ ์ ํ์ํ ๊ฒฝ์ ์ฐ์๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
REST(Representational State Transfer)๋ ์ต์ ์น ์๋น์ค์ ์ ์ฉ๋๋ ์ผ๋ จ์ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์์น์ ์ ์ํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. ํ์ฅ์ฑ, ๋จ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฆฌ์์ค ๋ฐ ํ์ค์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.
๋ฌด๊ตญ์ ํต์ ์บ์ ๊ฐ๋ฅํ ๋ฆฌ์์ค ํด๋ผ์ด์ธํธ-์๋ฒ ๋ถ๋ฆฌ ๊ท ์ผํ ์ธํฐํ์ด์ค ๊ณ์ธตํ๋ ์์คํ ์ํคํ ์ฒ ์ฃผ๋ฌธํ ์ฝ๋(์ ํ ์ฌํญ)
REST๋ ๋ฆฌ์์ค ๋ฐ ํ์คํ๋ HTTP ๋ฉ์๋์ ์ค์ ์ ๋๊ณ ์น ์๋น์ค๋ฅผ ๋์์ธํ๋ ๋ณด๋ค ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋์ ํ์ต๋๋ค. ์ด๋ API์ ๋ฐ์ ์ผ๋ก ์ด์ด์ ธ ๊ฐ๋ฐ ๋ฐ ํตํฉ ํ๋ก์ธ์ค๋ฅผ ๋ ์ฝ๊ณ ๋น ๋ฅด๊ณ ํ์ฅ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์์ต๋๋ค.
REST๋ HTTP ๋ฐ URI์ ๊ฐ์ ๊ธฐ์กด ์น ํ์ค์ ํ์ฉํ์ฌ ๊ตฌํ, ์ดํด ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ ์ฝ๊ธฐ ๋๋ฌธ์ API ๋์์ธ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ API์ ํ์ฅ์ฑ, ์ ์ฐ์ฑ ๋ฐ ํ์ฅ์ฑ์ ํฅ์์ํต๋๋ค.
์ฝ๋๊ฐ ์๋ ๊ฐ๋ ฅํ ํ๋ซํผ์ธ AppMaster ๊ณ ๊ฐ์ RESTful ์์น์ ๋ฐ๋ฅด๋ ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. AppMaster REST API ๋ฐ WSS ์๋ํฌ์ธํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ๊ฐ๋ฐ์์๊ฒ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ค๊ณ๋ฅผ ์ํ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ์๊ฐ์ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
ํฅ์๋ ํ์ฅ์ฑ ํฅ์๋ ์ฑ๋ฅ ํฅ์๋ ์ ๋ขฐ์ฑ ํ์ฅ์ฑ ๋ฐ ์ ์ฐ์ฑ ๊ฐ์ํ๋ API ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ค๋ฅธ ์์คํ ๊ณผ์ ์ฌ์ด ํตํฉ
REST๋ ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ์ ์์กดํ๋ ์น ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ API์ ๋งค์ฐ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ WebSocket ๋๋ gRPC์ ๊ฐ์ ๋์ฒด ์ํคํ ์ฒ๊ฐ ๋ ์ ํฉํ ์ ์๋ ๋๊ธฐ ์๊ฐ์ด ์งง์ ํต์ ์ด ํ์ํ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์คํ ์๋ ์ต์ ์ ์ ํ์ด ์๋ ์ ์์ต๋๋ค.
REST๋ ํนํ ์น ์๋น์ค ๋ฐ API๋ฅผ ์ํ ์ํํธ์จ์ด ์ค๊ณ์ ์ค์ํ ์ธก๋ฉด์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์ ์ด ๋ฐ์ ํ๊ณ ์๋ก์ด ์ํคํ ์ฒ ์คํ์ผ์ด ๋ฑ์ฅํจ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๋ ์ ๋ณด๋ฅผ ์ ์งํ๊ณ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฑํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.


