[Server] gRPC๋?
gRPC(Google Remote Procedure Call)๋?
gRPC๋ Google์์ ๋ง๋ RPC๋ก ๊ณต์ ํํ์ด์ง์ "A high performance, open source universal RPC framework"๋ผ๊ณ ์ ์๋์ด ์์ต๋๋ค. ์ด๋ฅผ ์ง์ญํ์๋ฉด "๊ณ ์ฑ๋ฅ ์คํ ์์ค ๋ฒ์ฉ RPC ํ๋ ์์ํฌ"์ ๋๋ค.
์ฐ์ gRPC๋ฑ์ฅ ์ด์ ์ RPC์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
RPC(Remote Procedure Call)๋?
์๊ฒฉ ํ๋ก์์ ํธ์ถ(RPC)๋ ๋ณ๋์ ์๊ฒฉ ์ ์ด๋ฅผ ์ํ ์ฝ๋ฉ ์์ด ๋ค๋ฅธ ์ฃผ์ ๊ณต๊ฐ์์ ํจ์๋ ํ๋ก์์ ๋ฅผ ์คํํ ์ ์๊ฒํ๋ ํ๋ก์ธ์ค ๊ฐ ํต์ ๊ธฐ์ ์ ๋๋ค. ์ฆ, RPC๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ์ด๋์๋ ์ํ๋ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
RPC๋ *IPC ๊ธฐ๋ฒ ์ค 1๊ฐ๋ก ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ ์ผ๋ฐ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ฒ๋ผ ์๊ฒฉ์ ํ๋ก์์ ๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ํ ์ธ์ด์ ํ๋ ์์ํฌ๋ก ๊ฐ๋ฐ๋ ์ ์๋ *MSA ๊ตฌ์กฐ์ ์๋น์ค์ฒ๋ผ Polyglotํ ๊ตฌ์กฐ์์๋ ํ๋กํ ์ฝ์ ๋ง์ถฐ์ ํต์ ํ๋ ค๋ฉด ๋ณต์กํ๊ณ ๋น์ฉ์ด ๋ค์ง๋ง, RPC๋ฅผ ํตํด ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๊ณ , ์๊ฒฉ์ ์๋ ํ๋ก์์ ๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
*IPC(Inter Process Communication) ๊ธฐ๋ฒ: ํ๋ก์ธ์ค ๊ฐ ์ ๋ณด๋ฅผ ๊ตํํ๊ธฐ ์ํด ํต์ ํ๋ ๋ฐฉ๋ฒ๋ก ์ ํต์นญํ ๊ฒ ex)์์ผ, RPC, REST ๋ฑ
*MSA(Micro Service Architecture) : ์๋น์ค๊ฐ์ ์์กด์ฑ์ ์์ ๊ณ ๊ธฐ๋ฅ์ ์ชผ๊ฐ๋ ๊ฒ์ ์ค์ ์ ์ผ๋ก ์ค๊ณํ ์ํคํ ์ฒ
gRPC์ ํน์ง๊ณผ ๊ตฌ์กฐ
๊ธฐ์กด์ ๋ง์ด ์ฌ์ฉ๋๋ REST ๋ฐฉ์์ ๊ฒฝ์ฐ์๋, ํ์ค์ด ์์ด ํ๋ผ๋ฏธํฐ์ ์๋ต์ด ๋ช ์์ ์ด์ง ์์์ ๋ฟ ์๋๋ผ JSONํํ์ ๋ฐ์ดํฐ๋ฅผ Serializationํ๋ ๋น์ฉ์ด ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์์์ต๋๋ค.
์ด๋ฌํ REST์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ ๋์์ผ๋ก google์ฌ์์ ๊ฐ๋ฐํ ์คํ์์ค RPC ํ๋ ์์ํฌ์ธ gRPC๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
gRPC์ ํน์ง
- *protocol buffer์ RPC๋ฅผ ์ฌ์ฉ
- ์ต์ ๋ฒ์ ์ *IDL๋ก proto3๋ฅผ ์ฌ์ฉ
- SSL/TLS๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฅผ ์ธ์ฆํ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ๊ตํ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํ
- HTTP 2.0์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ํ์ฅ ๊ฐ๋ฅํ API๋ฅผ ์ง์
์ด๋ฌํ ํน์ง๋ค๋ก ์ธํด gRPC๋ฅผ ์ฌ์ฉํ๋ฉด Proto File๋ง ๋ฐฐํฌํ์ฌ ํ๊ฒฝ๊ณผ ํ๋ก๊ทธ๋จ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์๋ก ๊ฐ์ ๋ฐ์ดํฐ ํต์ ์ด ๊ฐ๋ฅํด์ง๋๋ค.
*IDL: ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ท์น (ex. XML, JSON, Protocol Buffer)
*protocol buffer: ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ์ฌ XML์ ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ ์๋ IDL
gPRC์ ๊ตฌ์กฐ
gRPC์์ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์๋ฒ์์ ํจ์๋ฅผ ๋ฐ๋ก ํธ์ถ ํ ์ ์์ด ๋ถ์ฐ MSA๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์๋ฒ ์ธก์์๋ ์๋ฒ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ gRPC ์๋ฒ๋ฅผ ์คํํ์ฌ ํด๋ผ์ด์ธํธ ํธ์ถ์ ์ฒ๋ฆฌํฉ๋๋ค.
[์ฐธ๊ณ ]
https://chacha95.github.io/2020-06-15-gRPC1/
https://velog.io/@jakeseo_me/RPC%EB%9E%80
https://ssungkang.tistory.com/entry/WEB-google%EC%9D%B4-%EB%A7%8C%EB%93%A0-RPC-gRPC%EB%9E%80