[์ฉ์ด์ฌ์ ] 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 ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ์ถฐ์ผ ํ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํด๋ผ์ด์ธํธ, ์๋ฒ, ๋ฆฌ์์ค๋ก ๊ตฌ์ฑ๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ ์ฒ๊ฐ ํ์ํฉ๋๋ค.
- ์์ฒญ์ด ํต๊ณผํ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฝํ ์ธ ๊ฐ ์ ์ฅ๋์ง ์๋ ์คํ ์ดํธ๋ฆฌ์ค(stateless) ํด๋ผ์ด์ธํธ-์๋ฒ ์ปค๋ฎค๋์ผ์ด์ ์ด ํ์ํฉ๋๋ค. ๋์ ์ธ์ ์ ์ํ์ ๋ํ ์ ๋ณด๊ฐ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋ฉ๋๋ค.
- ์ผ๋ถ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ ์ํธ ์์ฉ์ ํ์์ฑ์ ์ ๊ฑฐํ ์บ์ ๊ฐ๋ฅ ๋ฐ์ดํฐ๊ฐ ํ์ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ๋ณ๋ก ๋ค๋ฅธ ํ์์ด ์๋, ํ์คํ๋ ํ์์ผ๋ก ์ ๋ณด๋ฅผ ์ ์กํ ์ ์๋๋ก ๊ตฌ์ฑ ์์ ๊ฐ ํตํฉ๋ ์ธํฐํ์ด์ค๊ฐ ํ์ํฉ๋๋ค. REST๋ฅผ ์ฒ์์ผ๋ก ์ ์ํ Roy Fielding์ ์ด๋ฅผ "REST ์ํคํ ์ฒ ์คํ์ผ์ ๋ค๋ฅธ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์คํ์ผ๊ณผ ์ฐจ๋ณํํ๋ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ"์ด๋ผ๊ณ ์ค๋ช ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ-์๋ฒ ๊ฐ์ ์ํธ ์์ฉ์ ๊ณ์ธต์ ์ผ๋ก ์กฐ์ ํ ์ ์๋๋ก ๊ณ์ธตํ๋ ์์คํ ์ ์ฝ์ด ํ์ํฉ๋๋ค.
- ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ์กํด ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๊ฒ ํด์ฃผ๋ ์ฝ๋ ์จ๋๋งจ๋๊ฐ ํ์ํฉ๋๋ค. ๋จ, ๊ฐ์์ฑ์ด ๊ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ด๋ ์ ํ์ ๊ฐ์ด๋๋ผ์ธ์ ๋๋ค.
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 ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฆ ๋๋ค.
'IT ๊ฐ๋ฐ ์ง์ > ์ฉ์ด์ฌ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฉ์ด์ฌ์ ] ํ๋ซํผ์ด๋? (0) | 2023.02.05 |
---|---|
[์ฉ์ด์ฌ์ ] ์ํคํ ์ฒ๋? (0) | 2023.02.05 |
[์ฉ์ด์ฌ์ ] ํ๋ ์์ํฌ๋? (0) | 2023.02.05 |
[์ฉ์ด์ฌ์ ] ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? (0) | 2023.02.05 |
[์ฉ์ด์ฌ์ ] SSH(Secure Shell) ๋ฐ SCP(Secure CoPy) (0) | 2016.11.08 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค. ๐