gRPC ๋ REST ์ฃผ์ ์ฐจ์ด์
๊ฐ๋ฐ์๋ API ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ ๋ REST ๋๋ gRPC๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ ๊ฐ์ง์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ๊ณ์ ์ฝ์ผ์ญ์์ค.

์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ๊ด๋ จํ์ฌ REST ์ ๊ฐ์ ๋จ์ด๋ฅผ ๋ค์์ ๊ฒ์ ๋๋ค. REST ๋ ๋งค์ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ API ์ํคํ ์ฒ์ด๋ฉฐ ๊ฐ๋ฐ์๋ ์ํํธ์จ์ด API๋ฅผ ์ค๊ณํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ ๋ชจ๋ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ด๋ฉฐ REST ๋ API์ ์ฌ์ฉ๋๋ ๋ง์ ์ํคํ ์ฒ ์ค ํ๋์ ๋๋ค.
์์ฆ g RPC ์ํคํ ์ฒ๊ฐ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ผ๋ฉฐ ์ ํต์ ์ผ๋ก REST API ์ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ์ด๋์์ ๋ค๋ฅธ๊ฐ? ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํด์ผ ํฉ๋๊น? ์ด๋ฌํ ์ง๋ฌธ์ ๋ํ ๋ต์ ์๊ธฐ ์ํด์๋ g RPC ์ REST ๊ฐ ์ด๋ค ์๋๋ฆฌ์ค์์ ๋ ์ ์ํ๋๋์ง์ ๋ํด ๋ ๋ง์ด ์ดํดํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ฒ์ ๋ค๋ฃจ๊ธฐ ์ ์ API๊ฐ ๋ฌด์์ด๋ฉฐ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ํด ํ ์ด๋ธ์ ์ ๊ณตํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
API๋?
์ํํธ์จ์ด ์ฑ์ ๊ธฐ์ ์ค์ฌ์ ์ญํ ์ ํ๋ API์ธ ์์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ์ํธ ์์ฉํ๊ณ ํต์ ํ ์ ์์ต๋๋ค. API๋ ์ฌ์ฉ์์ ์์ฒญ์ ์์คํ ์ผ๋ก ๋ณด๋ด๊ณ ์์คํ ์์ ์๋ต์ ๋ฐ๋ ์ญํ ์ ํฉ๋๋ค.
์จ๋ผ์ธ์ผ๋ก ์ ํ๋ฅผ ์ฃผ๋ฌธํ๋ค๊ณ ์์ํด๋ณด์ญ์์ค. ์น์ ์ฐ๊ฒฐ๋ ์ฌ์ดํธ๋ก ์ด๋ํ๋ฉด ์ฟผ๋ฆฌ์ ๋ํ ์ ๋ณด๊ฐ ์๋ฒ๋ก ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ฒ๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ๋ถ์ํ๊ณ ํ์ํ ์กฐ์น๋ฅผ ์ทจํ ํ ํ๋ฉด์ ํ์๋ ์ธ๋ถ ์ ๋ณด๋ก ํ์ ํฉ๋๋ค. ์ด๊ฒ์ API๋ฅผ ํตํด ๊ฐ๋ฅํฉ๋๋ค.
API๋ ์ด๋ฌํ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ํํ๋ ๋ฐฉ๋ฒ, ์ฌ์ฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ค์ํด์ผ ํ๋ ํ์ค์ ๋ํด ์ค๋ช ํฉ๋๋ค. ๋ํ ํ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณด๋ผ ์ ์๋ ์ฟผ๋ฆฌ์ ์ข ๋ฅ๋ฅผ ์ค๋ช ํฉ๋๋ค. g RPC ์ REST ์ํคํ ์ฒ ์คํ์ผ ๋ชจ๋ API ์ค๊ณ์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
API ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ํํธ์จ์ด์ ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ๋ชจ๋์ ๋จ์ผ ๋จ์ ๋๋ ๋ชจ๋๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ฒ ์ด์ค์ ํฌํจ๋ฉ๋๋ค. ์ด์ ๋์กฐ์ ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ์ HTTP ํ๋กํ ์ฝ๊ณผ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์๋ก ์ํธ์์ฉํ๋ ์๋ง์ ์์ ๋จ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ชจ๋๋ฆฌ์ ์คํ์ผ์ ์ฃผ์ ๋ฌธ์ ๋ ์์ง๋์ด๊ฐ ๊ธฐ์กด ๊ธฐ๋ฐ ์์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ์๋น์ค๋ฅผ ์ถ๊ฐํจ์ ๋ฐ๋ผ ์์คํ ์ ๋ณ๊ฒฝ, ์ ๋ฐ์ดํธ ๋ฐ ํ์ฅํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง๋ค๋ ๊ฒ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์ธก๋ฉด์ ๋ํ ๋ณ๊ฒฝ์ ๋ค๋ฅธ ์น์ ์ ํด๋ก์ด ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ชจ๋๋ฆฌ์ค์ ์ฝ๋๋ ์ค์ผ์ผ๋ง, ์ ๋ฐ์ดํธ ๋ฐ ๋ณ๊ฒฝ์ ๊ฑฐ๋ญํ ํ์ ์ ์ฐจ์ ์ผ๋ก ๋๋ฌด ์ฝํ๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์์ ธ ์์ ํ ์์คํ ์ฌ์ค๊ณ๊ฐ ํ์ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ํด๊ฒฐ๋ฉ๋๋ค. ์ด ์ํคํ ์ฒ ์ค๊ณ๋ ๋ชจ๋๋ฆฌ์ค๋ฅผ ๊ตฌ์ฑ ๊ตฌ์ฑ ์์๋ก ๋๋๊ณ ๊ฐ ๊ตฌ์ฑ ์์๋ ๋ณ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ์คํ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฐ ์ฑ์ ๋ง์ดํฌ๋ก์๋น์ค๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ๊ณ ์ ํ ๋ง์ดํฌ๋ก์๋น์ค๋ API๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํฉ๋๋ค. API๋ก ์ฐ๊ฒฐ๋ ์ด ๋ง์ดํฌ๋ก์๋น์ค ๋ชจ์์ ํจ๊ป ๋ชจ์ฌ ๋ ํฐ ์ํคํ ์ฒ ์ค๊ณ๋ฅผ ๊ตฌ์ถํฉ๋๋ค. API๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ํตํฉ๋ ๊ฐ ๊ตฌ์ฑ ์์ ๊ฐ์ ์ฐ๊ฒฐ ๋ฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. API ์์ฑ์ ๋ํ ๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ ์ ๊ทผ ๋ฐฉ์์ GraphQL, RPC ๋ฐ REST ์ ๋๋ค.
RPC ๋ ๋ฌด์์ ๋๊น?
RPC (์๊ฒฉ ํ๋ก์์ ํธ์ถ)๋ ๋ฏธ๋ฆฌ ์ ์๋ ํ์์ ์ฌ์ฉํ์ฌ ์๊ฒฉ ์๋ฒ์์ ์๋น์ค๋ฅผ ์คํํ๊ณ ๋์ผํ ํ์์ผ๋ก ์๋ต์ ๋ฐ์ ์ ์๋๋ก ํ๋ ์น ์ํคํ ์ฒ์ ๋๋ค. ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ์๋ฒ์ ์คํ์ผ์ ๋ก์ปฌ ์๋ฒ์ธ์ง ์๊ฒฉ ์๋ฒ์ธ์ง์ ๊ด๊ณ์์ด RPC ๋์์ธ์์ ๊ณ ๋ ค๋์ง ์์ต๋๋ค.

์ด๋ฏธ์ง ์ถ์ฒ itrelease.com/Author Junaid Rehman
RPC API ์์ฒญ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ REST API์ ๋์ผํฉ๋๋ค. RPC API ์์ฒญ์ ์ํธ ์์ฉ ์ง์นจ๊ณผ ์ํธ ์์ฉ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ์ ์ ์ง์ ํฉ๋๋ค. ๋์ค์ ์ฌ์ฉ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. URL์ ์์ฒญ ๋ฌธ์์ด์๋ ์์ ์ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ฉ๋๋ค.
API ์์ฒญ์ ์์ฑํ๊ธฐ ์ํด RPC ์์คํ ์ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. RPC ๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์ ๋ณด๋ฅผ ํด์ํ์ฌ ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์๋ฒ ๋ด์ ๋ด๋ถ ํต์ ์ ์จ๊ฒจ์ ธ ์๋ ๋์ ์๋ฒ๋ ์ฌ์ฉ์์๊ฒ ์๋ตํฉ๋๋ค. RPC ๋ชจ๋ธ์ ๋ํ ์ฌ์ฉ์๊ฐ ํน์ ๋ฐฉ์์ผ๋ก ์๋น์ค๋ฅผ ์์ฒญํ ์ ์๋๋ก ํฉ๋๋ค. RPC ๋ ๋ถ์ฐ ๋ฐ ์จํ๋ ๋ฏธ์ค ์๋๋ฆฌ์ค ๋ชจ๋์์ ์๊ฒฉ ํ๋ก์์ ํธ์ถ์ ์ง์ํ๋ ์ด์ ์ด ์์ต๋๋ค.
REST ๋ ๋ฌด์์ ๋๊น?
REST - Representational State Transfer - ์ฌ์ฉ์๊ฐ JSON ๋๋ XML ํต์ ์ ํตํด ๋ฐฑ์๋ ์ ๋ณด์ ์ก์ธ์คํ ์ ์๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ ์ฒ๋ฅผ ๋ํ๋ ๋๋ค. API๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ RESTful๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
- ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ API ํด๋ผ์ด์ธํธ์ ํน์ ์ฑ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ๊ฐ๋ณ์ ์ผ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํฉ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ URI๋ง ํด๋ผ์ด์ธํธ์ ์๋ ค์ง๋๋ค.
- ๋ฌด๊ตญ์ ์์ ๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ๋ง ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ฟผ๋ฆฌ์ ๋ํ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค.
- API์์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ฐ์ ์บ์ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
- ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ํ์ดํผ๋ฏธ๋์ด ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ ์ ์ก์ ํ์ฉํ๊ธฐ ์ํด ์ฌ๋ฌ ์ ํ ์ฌํญ์ ์์กดํ๋ ํ๋ ๊ฑด์ถ ์ค๊ณ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋ค. RESTful ์น API๋ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์๋น์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํด URL๋ก ์ธ์ฝ๋ฉ๋ ์ธ์๊ฐ ํ์ํฉ๋๋ค. REST API๋ ์ํ ๋น์ ์ฅ, ํ์ฅ ๊ฐ๋ฅ ๋ฐ ์ ๋ขฐํ ์ ์๋ API๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํ๋ ์น ๋์์ธ์ ๊ด๋ฒ์ํ๊ฒ ์ฑํ๋์์ต๋๋ค.
๋ง์ดํฌ๋ก ์๋น์ค ์์คํ ์ ๊ฒฐํฉํ๋ ๊ฐ ๊ตฌ์ฑ ์์๋ REST API๊ฐ ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์ค ๊ฐ๋ฅํ๊ฒ ๋๋ฉด ์ฌ์ฉ์ ๋๋ ๊ณ ๊ฐ์๊ฒ ์์ฐ์ผ๋ก ํ์๋ ์ ์์ต๋๋ค. ์ด ๋ฆฌ์์ค๋ HTTP GET, POST, PUT ๋ฐ DELETE ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค.
REST ๋ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
REST ๋ API ์์ฒญ์ ์ง์ ๋ ์๋น์ค๋ก ์์ ํ ๋ HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ ํต์ ํ๋กํ ์ฝ๋ก ์ฌ์ฉํฉ๋๋ค. ์์์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์์ ๊ฐ์ฒด์ ๋น๊ตํ ์ ์๋ ๊ฒ์ ๋๋ค. RESTful ๋ฆฌ์์ค์๋ ๊ฐ์ฒด์ ๋งค์ฐ ์ ์ฌํ ์์ ๊ณผ ์์ฑ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก REST ๊ตฌํ์ ์ผ๋ฐ์ ์ผ๋ก RESTful ์์ ์ ๋ํด ๋ ์๊ฐํ๊ณ ๋์ ๋ฆฌ์์ค์ ์์ฑ์ ๋ ์ง์คํฉ๋๋ค. RESTful ์๋ฃจ์ ์ ์์ฑ์ ์ฌ์ฉํ์ฌ RESTful ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ ์๋ฃจ์ ์ ๋๋ค.

RESTful API์์ ์ฌ์ฉ์๋ URL(Uniform Resource Locator)์ ์ฟผ๋ฆฌ๋ฅผ ์ ์ถํ์ฌ JSON, XML ๋๋ ์ง์๋๋ ๋ชจ๋ ๋ฐ์ดํฐ ํ์์ ํ์ด๋ก๋๋ก ์๋ตํฉ๋๋ค. ์ด ํ์ด๋ก๋๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ ๋๋ค. ์ผ๋ฐ์ ์ธ ํด๋ผ์ด์ธํธ ์์ฒญ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ๋ฆฌ์์ค์์ ์ฒ๋ฆฌํ ํญ๋ชฉ์ ์ง์ ํ๋ HTTP ๋ฉ์๋
- ๋ฆฌ์์ค์ ๊ฒฝ๋ก
- ์ฟผ๋ฆฌ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์๋ ํค๋
- ํด๋ผ์ด์ธํธ๋ณ ๋ฉ์์ง ํ์ด๋ก๋
ํค๋์ Accept ํ๋์์ ์ฌ์ฉ์๋ ์์ ํ ์ ์๋ ๋ฐ์ดํฐ ์ ํ์ ์ง์ ํฉ๋๋ค. ์๋ต ๋ณธ๋ฌธ์ ์ฌ์ฉ๋ ๋ฉ์์ง ์ ๋ฌ ํ์์ ์๋ณํ๋ ์ฝํ ์ธ ์ ํ ํค๋๋ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋๋ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๋ ๋ฐ์ดํฐ ํ์ด๋ก๋์ ํจ๊ป API ์๋ฒ์ ์ํด ์ ์ก๋ฉ๋๋ค. API ํธ์ถ์ ๊ฒฐ๊ณผ ์ํ๋ฅผ ์ฌ์ฉ์์๊ฒ ์๋ ค์ฃผ๋ ์๋ต ์ฝ๋๋ ์๋ต ๋ณธ๋ฌธ์ ํฌํจ๋ฉ๋๋ค.
g RPC ๋ ๋ฌด์์ ๋๊น?
g RPC (Google ์๊ฒฉ ํ๋ก์์ ํธ์ถ)๋ RPC ์ค๊ณ์ ํ์ ์ ํ์ ๋๋ค. g RPC ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ์ ์ฐ์ฑ๊ณผ ์๋๋ฅผ ๋ณด์ฅํ๋ ๊ณ ์ฑ๋ฅ ๊ธ๋ก๋ฒ ์คํ ์์ค RPC ์ํคํ ์ฒ์ ๋๋ค. ํจ์ ํธ์ถ์ ๋ค์ํ ์ฝ๋ฉ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ ๋ง์ดํฌ๋ก์๋น์ค์์ ๊ณ ๊ฐ ์ํธ ์์ฉ์ ๋ณด์ฅํ๊ธฐ ์ํด g RPC ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ด ๊ธฐ์ ์ HTTP 2.0 ํ์ค์ ์ฌ์ฉํ์ฌ RPC API ์์ฒญ์ ๊ตฌํํ์ง๋ง ์๋ฒ๋ API ํ๋ก๊ทธ๋๋จธ ๋ชจ๋ HTTP๋ฅผ ์ธ์ํ์ง ๋ชปํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก RPC ์์น์ด HTTP๋ก ๋ณํ๋๋ ๋ฐฉ์์ ๋ํด ๊ฑฑ์ ํ ์ด์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ณต์ก์ฑ์ด ์ค์ด๋ญ๋๋ค.
Google ์๊ฒฉ ํ๋ก์์ ํธ์ถ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก ์๋๋ฅผ ๋์ด๋ ค๊ณ ํฉ๋๋ค. ์๊ฒฉ ๋ฐํ ๋ฐ ํธ์ถ์ ํ์ฉํ๊ธฐ ์ํด ์๋น์ค๋ฅผ ์๋ณํ๊ณ ๋ฐฉ๋ฒ๋ก ์ ์ค์ ํ๊ณ ํด๋น ๋ณ์๋ฅผ ์ง์ ํ๋ ์ ๋ต์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
๋ํ IDL (์ธํฐํ์ด์ค ์ค๋ช ์ธ์ด)์ ์ฌ์ฉํ์ฌ RPC API ํจ๋ฌ๋ค์์ ์ง์ ํ๋ฏ๋ก ์๊ฒฉ ๊ธฐ๋ฅ์ ๋ ์ฝ๊ฒ ์๋ณํ ์ ์์ต๋๋ค. IDL ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ์ธํฐํ์ด์ค์ ํ์ด๋ก๋ ๋ฉ์์ง ํ์์ ์ ์ํฉ๋๋ค.
g RPC ๋ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
HTTP/2 ํ๋กํ ์ฝ, ์คํธ๋ฆฌ๋ฐ ๋ฐ ํ๋กํ ์ฝ ๋ฒํผ ๋๋ protobufs ๋ g RPC API์์ ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. protobuf๋ผ๋ ์ง๋ ฌํ ํ์ค์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ง์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. proto ํ์ผ์์ API ๋์์ด๋๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ ์ก๋๋ ์์ ๊ณผ ๋ฉ์์ง๋ฅผ ์ค๋ช ํฉ๋๋ค.
protoc ์ปดํ์ผ๋ฌ๋ ํ์ผ์ ๋ก๋ํ๊ณ ์๊ฒฉ ์๋น์ค์ ํต์ ํ๊ธฐ ์ํ ์ฌ์ฉ์ ๋ฐ ์๋ฒ ์ํํธ์จ์ด๋ฅผ ๋ง๋ญ๋๋ค. XML ๋๋ JSON ํ์๊ณผ ๋น๊ตํ์ฌ ํ๋กํ ์ฝ ๋ฒํผ๋ก ์ํธํ๋ ๋ฉ์์ง๋ ์๋นํ ์๊ธฐ ๋๋ฌธ์ CPU ์ด ์ ์ต๋๋ค.
๋ํ HTTP/2๋ฅผ ์ฌ์ฉํ๋ g RPC API๋ RPC ์ค๊ณ๋ฅผ ๋ค์ํ๊ฒ ๊ฐ์ ํฉ๋๋ค. ํ๋กํ ์ฝ์ ํจํท์ ๋ ์์ ์ด์ง ํ๋ ์ ๋ฉ์์ง๋ก ๋ถํ ํ์ฌ ์ ์ก ๊ฐ๋ฅํ๊ณ ์๊ฒ ๋ง๋๋ ์ด์ง ํ์ ๊ณ์ธต์ ์ถ๊ฐํฉ๋๋ค. ๋จ์ผ ์ฑ๋ ๋ด์์ ๋ง์ ํธ์ถ์ ์คํํ๋ ๊ฒ์ ์๋ฐฉํฅ ํต์ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ๋ค์ค ๋์ ์ฟผ๋ฆฌ์ ๋ํ HTTP/2์ ์ง์์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.
HTTP/2 ์ ์ก ํ๋กํ ์ฝ์ ์ฌ๋ฌ ๋์ ์คํธ๋ฆผ์ ์ง์ํ์ง๋ง g RPC API๋ ์ฑ๋์ ํตํด ์ด ๊ธฐ๋ฅ์ ํ์ฅํฉ๋๋ค. ๊ฐ ์ฑ๋์ ๋ง์ ๋์ ์ฐ๊ฒฐ์ ํตํด ๋์์ ์คํ๋๋ ์ฌ๋ฌ ์คํธ๋ฆผ์ ์์ฉํ ์ ์์ต๋๋ค. ์ฑ๋์ ์ฃผ์ด์ง ์ฃผ์์ ํฌํธ์์ API ์๋ฒ์ ์ฐ๊ฒฐํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์คํ ์ ์ฑ๋์ ํตํด ๋ง๋ค ์๋ ์์ต๋๋ค.
g RPC ๋ REST: ๋น๊ต
Google์ ๊ธฐ์กด API ์ํคํ ์ฒ ์คํ์ผ์ ์ผ๋ถ ์ ํ ์ฌํญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด RPC ๋ณํ์ผ๋ก g RPC ๋ฅผ ๋ง๋ค์์ต๋๋ค. REST API์ ๊ด๋ จ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง g RPC API๋ ์ต์ ๊ธฐ์ ์ด๊ธฐ ๋๋ฌธ์ ํน์ ๋ฌธ์ ์ ์ง๋ฉดํฉ๋๋ค. REST API๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ ํฉํ ์ ์๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๋ ์ฌ์ด์ ์ฐจ์ด์ ์ ์๊ณ ๋๋ฉด ์ด๋ฌํ API ์ค ์ํํธ์จ์ด์์ ๋ ์ ์๋ํ ์ ์๋ API๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
HTTP 1.1 ๋ HTTP 2
REST API์์ ์ฌ์ฉํ๋ ์์ฒญ-ํ์ ์ ๊ทผ ๋ฐฉ์์ ์ฃผ๋ก HTTP 1.1์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ฆ, ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ง์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ๋ ๊ฒฝ์ฐ ๋ชจ๋ธ์ด ๋ชจ๋ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ์ ์ฒด ์์คํ ์ด ๋ค์ด๋ฉ๋๋ค. REST API๋ HTTP 2์์ ๊ฐ๋ฐํ ์ ์์ง๋ง ํต์ ์ํคํ ์ฒ๋ ์ฌ์ ํ ์์ฒญ-์๋ต์ด๋ฏ๋ก ์๋ฐฉํฅ ํธํ์ฑ ๋ฐ ์คํธ๋ฆฌ๋ฐ ์ํธ ์์ฉ์ ํฌํจํ์ฌ HTTP 2์ ์ด์ ์ ์์ ํ ํ์ฉํ ์ ์์ต๋๋ค.
g RPC API์๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์๋ต ์ฐ๊ฒฐ ๋ชจ๋ธ์ ๋ฐ๋ฅด๊ณ HTTP 2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. g RPC ๋ ๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋ง์ ์ฟผ๋ฆฌ๋ฅผ ์๋ฝํ๊ณ ์คํธ๋ฆฌ๋ฐ ์ ๋ณด๋ฅผ ํตํด ์ด๋ฌํ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์ ์คํธ๋ฆฌ๋ฐ ์ํธ ์์ฉ๊ณผ ์๋ฐฉํฅ ํต์ ์ ํ์ฉํฉ๋๋ค. ๋ํ g RPC ๋ HTTP 1.1์์ ์์ฑ๋ ๊ฒ๊ณผ ๊ฐ์ ๋จํญ ์ํธ ์์ฉ์ ์ง์ํฉ๋๋ค.
g RPC API๋ ๋ค์์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
-
๋จํญ ์ํธ์์ฉ
ํด๋ผ์ด์ธํธ๊ฐ ๋จ์ผ ์์ฒญ์ ํ์ง๋ง ๊ทธ ๋๊ฐ๋ก ํ๋์ ์๋ต๋ง ์ ๊ณต๋๋ ๊ฒฝ์ฐ.
-
์๋ฒ ์คํธ๋ฆฌ๋ฐ
์๋ฒ๊ฐ ๋ฉ์์ง ์คํธ๋ฆผ์ผ๋ก ํด๋ผ์ด์ธํธ ์ฟผ๋ฆฌ์ ์๋ตํ ๋๋ง๋ค ์ด๋ฅผ ์๋ฒ ์คํธ๋ฆฌ๋ฐ์ด๋ผ๊ณ ํฉ๋๋ค. ์๋ฒ๋ ๋ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ํ ์ ์ฐจ๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ธฐ ์ํด ์ํ ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค.
-
ํด๋ผ์ด์ธํธ ์คํธ๋ฆฌ๋ฐ
์ด๊ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ผ๋ จ์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ณ ์๋ฒ๊ฐ ๋จ์ผ ๋ฉ์์ง๋ก ์๋ตํ ๋ ๋ฐ์ํฉ๋๋ค.
-
์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ
์ด๋ ๊ฒ ํ๋ฉด ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฑ๋์ด ์๋ก ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์
๋๋ถ๋ถ์ ์น API ์ํธ ์์ฉ์ ์จ๋ผ์ธ์์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์ง์์ g RPC ๋ REST ๋ ผ์์์ ํต์ฌ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ g RPC ์ ๋นํด REST API์ ์ฃผ์ ์ด์ ์ค ํ๋์ผ ์ ์์ต๋๋ค. ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ ์์ ํ REST API ๊ธฐ๋ฅ๊ณผ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ธ๋ผ์ฐ์ ์์ g RPC ์ ๊ธฐ๋ฅ์ ์ฌ์ ํ ์๋์ ์ผ๋ก ์ ํ์ ์ ๋๋ค. ๋ถํํ๋ HTTP 1.1๊ณผ HTTP 2 ๊ฐ์ ์ ํ์๋ gRPC-web๊ณผ ํ๋ก์ ๋ ์ด์ด๊ฐ ํ์ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก g RPC API๋ ํน์ ์กฐ์ง์ ๋ฐฑ์๋ ์ ๋ณด ๋ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉ๋๋ API ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ด ๋ด๋ถ ๋๋ ๊ฐ์ธ ์์คํ ์ ์ฃผ๋ก ํ์ฉ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋ค์คํ๋ ์คํธ๋ฆผ์ HTTP/2 ํ๋กํ ์ฝ๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ง์ ๊ณ ๊ฐ์ด ๊ฐ๊ฐ์ ๋ํด ์ TCP ์ธ์ ์ ์ด ํ์ ์์ด ์ฟผ๋ฆฌ๋ฅผ ๋ณ๋ ฌ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ๋ํ ์๋ฒ๋ ๊ธฐ์กด ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
ํํ ์ํ ์ ์ก ๋ชจ๋ธ์ HTTP 1.1์ ํตํฉํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฒ์ํ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. REST ๊ฐ ํ์ฑํ๋ HTTP 1.1์ ๊ฐ ์ฟผ๋ฆฌ์ ๋ํด TCP ํธ๋์ ฐ์ดํน ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. REST API๋ ํธ๋์ ฐ์ดํฌ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ง์ฐ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
ํ์ด๋ก๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
g RPC ๋ REST ๋ฅผ ๋ณด๋ฉด์ ํ์ด๋ก๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ ์๋ค๋ฉด g RPC API๋ ์๋์ ์ผ๋ก ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ฉ์์ง๋ฅผ ๋ ์๊ฒ ๋ง๋ค๊ณ ๊ณ ๋๋ก ์์ถ๋ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ฏ๋ก ๋ ๊ฐ๋ณ์ต๋๋ค. ํ๋กํ ์ฝ ๋ฒํผ๋ ๋ฐ์ด๋๋ฆฌ ํ์์ ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ๊ตํ์ ์ํด ์ ๋ณด๋ฅผ ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํํฉ๋๋ค. Protobuf๋ ๋ง์ด ์์ฑ๋ ๋ฉ์์ง๋ฅผ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ ๋ฒ์ญํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ REST ๋ ๋๋ถ๋ถ JSON ๋๋ XML ํ์์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ ๋ฐ์ต๋๋ค. JSON ์ ์ ํํ ๊ตฌ์กฐ๋ฅผ ์๊ตฌํ์ง ์์ง๋ง ์ ํํ ๊ตฌ์กฐ๋ฅผ ๊ณ ์ํ์ง ์๊ณ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ ์ ์์ฑ๊ณผ ์ฉ๋ ๋๋ฌธ์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ์์ ๋๋ค. Protobuf๊ฐ ์์ง ๋ฐ๋ผํ ์ ์๋ JSON์ ๊ฐ๋ ์ฑ ํ์ง์ ๋ ๋ค๋ฅธ ์ค์ํ ์ด์ ์ ๋๋ค.
๊ทธ๋ฌ๋ JSON ์ ๋ฐ์ดํฐ ์ ์ก์ ํฌํจํ๋ฉด ๋น ๋ฅด๊ฑฐ๋ ๊ฐ๋ณ์ง ์์ต๋๋ค. ์ด๋ JSON ์ด REST ๋ฅผ ์ฌ์ฉํ ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ธก ๋ชจ๋์์ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ง๋ ฌํ๋๊ณ ๋ฒ์ญ๋์ด์ผ ํ๋ค๋ ์๊ตฌ ์ฌํญ ๋๋ฌธ์ ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์ ์ก ํ๋ก์ธ์ค์ ์ถ๊ฐ ๋จ๊ณ๋ก, ํจ์จ์ฑ์ ์ ํดํ๊ณ ์ค์ ๊ฐ๋ฅ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ฝ๋ ์์ฑ
์์ง๋์ด๋ API ์ฟผ๋ฆฌ๋ฅผ ์ํ ์ฝ๋ ์์ฑ ์ ์ํด Postman๊ณผ ๊ฐ์ ํ์ฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ g RPC ์ ๋ฌ๋ฆฌ REST API์๋ ๊ธฐ๋ณธ ์ ๊ณต ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด์๋ ๋์กฐ์ ์ผ๋ก g RPC ๋ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๋ protoc ์ปดํ์ผ๋ฌ๋ก ์ธํด ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฝ๋ ์์ฑ์ ์ฌ๋ฌ ํ๋ซํผ ๋ฐ ์ธ์ด์์ ์์ฑ๋ ์๋ง์ ์๋น์ค๋ฅผ ๊ฒฐํฉํ๋ ๋ง์ดํฌ๋ก์๋น์ค์ ํนํ ์ ๋ฆฌํฉ๋๋ค. ์ ๋ฐ์ ์ผ๋ก ๋ด์ฅ๋ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ํตํด ์ํํธ์จ์ด ๊ฐ๋ฐ ํคํธ(SDK)๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด REST API๋ ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ฌ๋ฌ ์ธ์ด๋ก API ํธ์ถ์ ๋ํ ์ฝ๋ ์์ฑ์ ์์ฑํ๋ ค๋ฉด ํ์ฌ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ฒ๊ฑฐ๋กญ์ง๋ ์์ง๋ง g RPC ๋ ์ฝ๋ ์์ฑ์ ์ํด ๋ค๋ฅธ ์๋น์ค์ ์์กดํ์ง ์๋๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
REST API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
g RPC ์ REST ๋ฅผ ๋น๊ตํ ๋ ๋ง์ดํฌ๋ก ์๋น์ค์ ๊ตฌ์ถ๋ ์ธํ๋ผ๋ฅผ ํตํฉํ๊ธฐ ์ํด ๊ฐ์ฅ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๊ณ ์ ํธ๋๋ API๋ REST API์ ๋๋ค. REST API๋ ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ์์ฑํ๋์ง ์๋๋ฉด ์์ฐ์ ์ ์ธ๊ณ์ ๊ณต๊ฐํ๋ ๊ฐ๋ฐฉํ ํ๋ซํผ์ ์์ฑํ๋์ง์ ๊ด๊ณ์์ด ๋งค์ฐ ์ค๋ซ๋์ ์ฑ ์ฐ๊ฒฐ์ ์ํ ๊ธฐ๋ณธ ์ต์ ์ผ๋ก ๊ณ์ ์ฌ์ฉ๋ ๊ฒ์ ๋๋ค. REST API๋ ๋น ๋ฅธ ๋ฐ๋ณต ๋ฐ HTTP ํ๋กํ ์ฝ ํ์ค์ด ํ์ํ ์์คํ ์๋ ์ ํฉํฉ๋๋ค.
REST API๋ ํ์ฌ ๊ธฐ์ ์ด ๋ณดํธ์ ์ผ๋ก ์ง์ํ๊ธฐ ๋๋ฌธ์ ์น ์๋น์ค ๊ฐ๋ฐ, ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ ์ฑ ์ธํฐํ์ด์ค๋ฅผ ์ํ ์ฒซ ๋ฒ์งธ ์ ํ์ด ๋ ์ ์์ต๋๋ค. g RPC ์ ๋ฌ๋ฆฌ ๊ด๋ฒ์ํ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ๊ณตํ๋ฉฐ ๊ฐ์ธ ์์คํ ์ ๊ตญํ๋์ง ์์ต๋๋ค. ์ด๊ฒ์ REST API๋ฅผ ๋ง์ ์ํฉ์์ ๋งค์ฐ ์ ์ฉํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ํ ์ธํฐ๋ท์์ ์ฌ์ฉํ ์ ์๋ ๊ด๋ฒ์ํ API ๋ฌธ์๊ฐ ์์ผ๋ฏ๋ก REST ๋ฅผ ๋ฐฐ์ฐ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค. ์ด ๊ฐ๋จํ ํ์ต ๊ณก์ ์ ์๊ฐ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์กฐ์ฌํ๊ณ ๋ฐฐ์ฐ๋ ๋ฐ ๋ง์ ์๊ฐ์ ์ ์ฝํ๊ณ ์ฆ์ ๊ตฌํ์ ์์ํ ์ ์์ต๋๋ค. RESTful API๋ ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค. ๋ํ ๋ ๋์ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ณง ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ๊ณ ์ถ๋ค๋ฉด REST API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค. ์ํ ๋ฐ ๊ธฐ๋ฐ์ฑ์ด ๋ถ์กฑํ๋ฉด ํน์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ํ ์ํ ์ด์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง๋ถ ์ต์ ์ด ์๋ ๊ฒฝ์ฐ g RPC ๊ฐ ๋ ๋์ ์ต์ ์ผ ์ ์์ต๋๋ค.
g RPC API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
g RPC ๋ REST ๋ ๋ค์์ ๋๋ถ๋ถ์ ํ์ฌ ๋๊ตฌ๋ ์ฌ์ ํ g RPC ๊ท์ ์ค์๋ฅผ ์ํ ๊ธฐ๋ณธ ์ ๊ณต ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก g RPC API๋ ์ธ๋ถ ์ฌ์ฉ์๊ฐ ์ก์ธ์คํ ์ ์๋ ๋ด๋ถ ์์คํ ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ์๊ฒฉ์ ์ผ๋์ ๋๊ณ ๋ค์ ์ํฉ์์ g RPC API๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค ์ฐ๊ฒฐ
g RPC API๋ ์งง์ ๋๊ธฐ ์๊ฐ๊ณผ ๋น ๋ฅธ ๋์ญํญ ํต์ ์ผ๋ก ์ธํด ๋ฉ์์ง ์ ๋ฌ์ ํจ์จ์ฑ์ด ์ค์ํ ๊ฐ๋ฒผ์ด ๋ง์ดํฌ๋ก์๋น์ค๋ก ๊ตฌ์ฑ๋ ์ํคํ ์ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
- ๋ค๊ตญ์ด ์์คํ
g RPC ๋ ๊ด๋ฒ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ ๋๋ถ์ ๋ค์ค ์ธ์ด ์ปจํ ์คํธ์์ ํต์ ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํฉ๋๋ค.
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ
์ค์๊ฐ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ ์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ์ ์ฒ๋ฆฌํ๋ gRPC ๊ธฐ๋ฅ ๋๋ถ์ ์์คํ ์ ๋จํญ ํด๋ผ์ด์ธํธ ์๋ต ์ํธ ์์ฉ์ ๊ธฐ๋ค๋ฆด ํ์ ์์ด ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ ์์ต๋๋ค.
- ์ ์ ๋ ฅ ๋ฐ ์ ๋์ญํญ ๋คํธ์ํฌ
์ด๋ฌํ ๋คํธ์ํฌ๋ ๊ฒฝ๋ ํต์ , ํฅ์๋ ํจ์จ์ฑ ๋ฐ ์ ์์ฑ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ง๋ ฌํ๋ Protobuf ์ธ์ ์ ์ฌ์ฉํ๋ gRPC์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, g RPC API์์ ์ด์ต์ ์ป์ ์ ์๋ ๋คํธ์ํฌ๋ ์ฌ๋ฌผ ์ธํฐ๋ท์ ๋๋ค.
AppMaster ๋ ์ด๋ป๊ฒ ๋์์ด ๋๋์?
ํ๋ก๊ทธ๋๋ฐ์ ์ต๊ทผ ์์ญ ๋ ๋์ ๊ฐ๋ฐ์์ ์์ ์ ๋ ์ฝ๊ฒ ๋ง๋๋ ์๋ก์ด ๊ธฐ์ ๊ณผ ํ๋ ์์ํฌ๋ก ์ธํด ๋ง์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. No-code ์์ฑ์ ์ด๋ฅผ ๋ค์ ๋จ๊ณ๋ก ๋์ด ์ฌ๋ฆฝ๋๋ค. ์ฌ๋๋ค์ ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ ๊ฑฐ์น ํ์๊ฐ ์์ผ๋ฉฐ AppMaster ์ ๊ฐ์ no-code ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
AppMaster ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์์ค ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ์์ฑํ ์ ์์ต๋๋ค. ์์ฑ๋ ์ฝ๋๋ ๊ทํ์ ์์ ์ด๋ฉฐ ํ์์ ๋ฐ๋ผ ์์ ํ ์ ์์ต๋๋ค. AppMaster ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ค์ํ ๋ชจ๋์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ฒด ๊ฐ๋ฐ ํ์ด ๋์ผํ ์์ ์ ์ํํ๋๋ก ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ ๋ ดํ๊ณ ์๊ฐ์ด ๋ง์ด ์์๋ฉ๋๋ค.
๊ฐ๋ฐ์๋ AppMaster์ no-code ์์ฑ ํ๋ซํผ์ ์ฌ์ฉํ์ฌ g RPC ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ g RPC ์ง์์ ์ฆ๊ฐ์ํค๊ธฐ ์ํด ๋ด๋ ์ g RPC ์น ์๋น์ค ๊ฐ๋ฐ๊ณผ g RPC ๋ชจ๋ฐ์ผ ์ฑ ๋ชจ๋์ API๋ฅผ ์ถ๊ฐํ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
Representational state transfer๋ ๊ณผ๊ฑฐ์ API ๊ฐ๋ฐ๊ณผ ๊ด๋ จํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ ๊ทผ ๋ฐฉ์์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ g RPC ๋ REST ์ฌ์ด์์ g RPC API๊ฐ ์์ํ ๋์คํ๋๊ณ ์์ต๋๋ค. ๋์ ๋๋ ๋ค์ํ ๊ธฐ๋ฅ์๋ ๋ถ๊ตฌํ๊ณ ๋ธ๋ผ์ฐ์ ์ง์ ๋ฐ API ๋ฌธ์ ๋ถ์กฑ๊ณผ ๊ฐ์ ์ผ๋ถ ๋ฌธ์ ๋ก ์ธํด ๋ชจ๋ ๊ณณ์์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์ ๋ฐ์ ๊ณผ ์ปค๋ฎค๋ํฐ ์ฑ์ฅ์ผ๋ก g RPC ๊ฐ ์ค๋๋ ์ ๋์ ์ ๊ทน๋ณตํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ง์ง๋ง์ผ๋ก REST ๋๋ g RPC ๋๋ GraphQL ๋๋ SOAP ์ ๊ฐ์ ๋ค๋ฅธ API ๋ฐฉ๋ฒ๋ก ์ค์์ ์ ํํ๋ ๊ฒ์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ผ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์๋ g RPC ๊ฐ ์ ๊ณตํ๋ ์ด์ ์ด ํ์ํ ์ ์์ง๋ง ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์๋ REST ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ํ์ํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ๊ฐํ์ฌ ์ด ๋ ๊ฐ์ง ๊ธฐ์ ์ค์์ ์ ํํด์ผ ํฉ๋๋ค.


