์ RPC๊ฐ ๋ฑ์ฅํ๊ฒ ๋์์๊น?
์ด๋ป๊ฒ ํ๋ฉด ๋ถ์ฐ ๋คํธ์ํฌ ์ปดํจํฐ ํ๊ฒฝ์์ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ํ ์ ์์๊น?
์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ปค๋ฎค๋์ผ์ด์ ํจํด์?
-
Client - Server ํจํด
- Client๋ ์์ฒญํ๊ณ ๊ธฐ๋ค๋ฆฌ๊ณ
- Server๋ ์์ฒญํ ๋ด์ฉ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๊ณ
- Client๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ ์งํ
์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์น๊ทผํ ๋ฐฉ๋ฒ์?
- Socket
- ์์์ ์ผ๋ก Formatting ํด์ผ ํ๋ ๋จ์ .
- ์ง์ ๋คํธ์ํฌ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ ๋ณด๋ด์ผ ํ๋ ๋จ์ .
ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๊ฒช๊ณ ์๋ ๋ฌธ์ ๋?
- MSA๋ฅผ ํตํด ์ ๋ง ๋ค์ํ ์ธ์ด์ ํ๋ ์์ํฌ๊ฐ ์กด์ฌ
- Polyglotํ ๊ตฌ์กฐ๋ฅผ ์งํฑํ๊ธฐ ์ํด์ ํ๋กํ ์ฝ์ ๋ง์ถฐ์ผ ๋น์ฉ์ด ๋ฐ์.
RPC๋?
๋ถ์ฐ ๋คํธ์ํฌ ํ๊ฒฝ์์ ์กฐ๊ธ ๋ ํธํ๊ฒ ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํด ๋ฑ์ฅํ RPC
- ๋ถ์ฐ ์์คํ ์ ํต์ฌ ํค์๋
RPC์ ๊ถ๊ทน์ ์ธ ๋ชฉํ๋ ๋ฌด์์ผ๊น?
- ํด๋ผ์ด์ธํธ - ์๋ฒ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ ํ์ํ ์์ธํ ์ ๋ณด๋ ์ต๋ํ ๊ฐ์ถ๊ณ
- ํด๋ผ์ด์ธํธ๋
์ผ๋ฐ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ
์ฒ๋ผ ํธ์ถํ๋ฉด ๋๋ค. - ์๋ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ๋ฐ ๋ฉ์๋๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ฒ๋ผ!
RPC์ ๋ํ์ ์ธ ๊ตฌํ์ฒด๋ ๋ญ๊ฐ ์์๊น?
RPC์ ๊ฐ๋จํ Example๋ฅผ ํ์ธํด๋ณด์
์ด์์ ์ธ RPC
๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ค.
# Client
z = function(x, y)
# Server
function(x, y) {
compute x, y
return z
}
- RPC๋ ์ด ์ ๋์ ์์ค์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ๋ฅผ ์ํ๋ค.
- ์ด๋ฅผ ํตํด ์ด๋ณด์ ํ๋ก๊ทธ๋๋จธ๋ ์๊ฒฉ ํจ์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
RPC๋ ์ด๋ป๊ฒ ์งํ๋ ๊น?
- Caller / Callee
- ์ฌ์ฉ์(Client / Server)๊ฐ ํ์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์์ฑํ๋ Layer
- IDL(interface definition language)๋ก ์์ฑ
- Stub
- Stub Compiler๊ฐ IDL ํ์ผ์ ์ฝ์ด ์ํ๋ Language๋ก ์์ฑ.
- Parameter Object๋ฅผ Message๋ก marshalling/unmarshallingํ๋ Layer
- RPC RunTime
- Server์ Client๋ฅผ Bindingํ๋ Layer
- ์ปค๋ฎค๋์ผ์ด์ ์ค ๋ฐ์ํ ์๋ฌ ์ฒ๋ฆฌ๋ ์งํ
RPC๋ ์ด๋ป๊ฒ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ฒฐํ ๊น?
- Static Binding
- ์๋ฒ ์ฃผ์ Hard Coding
- ๊ฐ๋จํ๊ณ ํจ์จ์
- ์๋ฒ ์ฃผ์ ๋ณ๊ฒฝ์ ์ฝํจ.
- Dynamic Binding
- ์ฃผ์ ๋ณ๊ฒฝ์ ๋งค์ฐ ์ ๋์
- ์ฌ๋ถ์ ์๋ฒ๋ฅผ ๋ฌ์ผ ํ๋ ๋จ์ .
- Name Server
- Load Balancer
์ ๋ฆฌํ๋ฉฐ
RPC์ ์ฅ์ ์?
- ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์.
- ๋ค์ํ ์ธ์ด๋ฅผ ๊ฐ์ง ํ๊ฒฝ์์ ์ฝ๊ฒ ํ์ฅํ ์ ์์.
- ์ฝ๊ฒ ์ธํฐํ์ด์ค ํ์ ์ด ๊ฐ๋ฅํจ.
RPC์ ๋จ์ ์?
- ์๋ก์ด ํ์ต ๋น์ฉ์ด ๋ฌ.
- ์ฌ๋์ ๋์ผ๋ก ์ฝ๊ธฐ ํ๋ฌ.
Reference
- RPC์ ์ญ์ฌ
- http://www.cs.princeton.edu/~wlloyd/classes/599s15/slides/2_RPC_and_MapReduce.pdf
- https://www.geeksforgeeks.org/operating-system-remote-procedure-call-rpc/
- https://www.linuxjournal.com/article/2204
- https://book.systemsapproach.org/e2e/rpc.html
- https://www.slideshare.net/sandpoonia/5-26928882
- ๋นํธ์ ์์คํ ์ํคํ ์ฒ
- ํ๋ค ์์คํ ์ํคํ ์ฒ