# RPC VS RMI

img

RPC์™€ RMI์˜ ๊ธฐ๋ณธ ์ฐจ์ด์ ์€ RPC๋Š” ์›๊ฒฉ ์ปดํ“จํ„ฐ์—์„œ ํ”„๋กœ ์‹œ์ €๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๊ณ  RMI๋Š” Java์—์„œ RPC์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. RPC๋Š” ์–ธ์–ด ์ค‘๋ฆฝ์ ์ด์ง€๋งŒ ์ „๋‹ฌํ•  ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— RMI๋Š” Java๋กœ ์ œํ•œ๋˜์ง€๋งŒ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RPC๋Š” ์ „ํ†ต์ ์ธ ์ ˆ์ฐจ ์  ์–ธ์–ด ๊ตฌ์„ฑ์„ ๋”ฐ๋ฅด๋Š” ๋ฐ˜๋ฉด RMI๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ๋””์ž์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

# RPC๋ž€?

์›๊ฒฉ ํ”„๋กœ ์‹œ์ € ํ˜ธ์ถœ์„ ์˜๋ฏธํ•˜๋Š” RPC๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ ์ปดํ“จํ„ฐ ๋˜๋Š” ์›๊ฒฉ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰์ค‘์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐœ๋…์€ 1980 ๋…„์— ์˜ค๋ž˜ ์ „์— ๋“ฑ์žฅํ–ˆ์ง€๋งŒ, ์œ ๋‹‰์Šค์—์„œ ์ฒ˜์Œ์œผ๋กœ ์œ ๋ช…ํ•œ ๊ตฌํ˜„์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

RPC์—๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํ‰์†Œ์™€ ๊ฐ™์ด ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ํ”„๋กœ ์‹œ์ € ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์Šคํ…์ด๋ผ๋Š” ๋ชจ๋“ˆ์€ ์ธ์ˆ˜๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์šด์˜ ์ฒด์ œ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์šด์˜ ์ฒด์ œ๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์›๊ฒฉ ์ปดํ“จํ„ฐ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ์šด์˜ ์ฒด์ œ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์„œ๋ฒ„ ์Šคํ…์ด๋ผ๋Š” ์„œ๋ฒ„์˜ ๋ชจ๋“ˆ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์„œ๋ฒ„ ์Šคํ…์€ ์„œ๋ฒ„์—์„œ ํ”„๋กœ ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

RPC ์‚ฌ์šฉ์˜ ์ด์ ์€ ๋„คํŠธ์›Œํฌ ์„ธ๋ถ€ ์‚ฌํ•ญ๊ณผ ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ถ”์ƒ์  ์ธ ๋ฐฉ์‹์œผ๋กœ ์ง€์ •ํ•˜๋ฉด๋˜๋ฉฐ ์šด์˜ ์ฒด์ œ๋Š” ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌผ๋ฆฌ์  ๋ฐ ํ”„๋กœํ† ์ฝœ์˜ ์ฐจ์ด์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์‰ฌ์›Œ์ง€๊ณ  ๋ชจ๋“  ๋„คํŠธ์›Œํฌ์—์„œ RPC๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. RPC ๊ตฌํ˜„์€ Unix, Linux, Windows ๋ฐ OS X์™€ ๊ฐ™์€ ๋ชจ๋“  ์ฃผ๋ฅ˜ ์šด์˜ ์ฒด์ œ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. RPC๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์–ธ์–ด ์ค‘๋ฆฝ์ด๋ฏ€๋กœ ๋ชจ๋“  ์–ธ์–ด์— ๊ณตํ†ต์ ์ด์–ด์•ผํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๊ฐ€์žฅ ์›์‹œ์  ์ธ ์œ ํ˜•์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. RPC์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ด์ง€ ์•Š์ง€๋งŒ C์™€ ๊ฐ™์€ ์ „ํ†ต์ ์ธ ์ ˆ์ฐจ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.

# RMI๋ž€?

RMI (Remote Method Invocation)๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํŠน์„ฑ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด Java๋กœ RPC๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” API (Application Programming Interface)์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ์ปดํ“จํ„ฐ ๋˜๋Š” ์›๊ฒฉ ์ปดํ“จํ„ฐ์—์žˆ๋Š” ๋‹ค๋ฅธ Java Virtual Machine์—์„œ Java ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RMI์˜ ํ•œ๊ณ„๋Š” Java ๋ฉ”์†Œ๋“œ ๋งŒ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ธ์ˆ˜ ๋ฐ ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Java ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์ด RMI๊ฐ€ RPC๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค๊ณ  ์ƒ๊ฐ ๋  ๋•Œ RMI๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์นœ์ˆ™ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

RMI๋Š” Java์—์„œ ๊ธฐ๋ณธ ์ œ๊ณต ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ณ  ๋น„ TCP ์‚ฌ์šฉ์ž ์ง€์ • ์ „์†ก ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์†Œ์ผ“ ํŒฉํ† ๋ฆฌ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ RMI๋Š” ๋ฐฉํ™”๋ฒฝ์„ ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. RMI์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋‹จ๊ณ„๋Š” RPC์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. RMI์˜ ๊ตฌํ˜„์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€์—†๋Š” ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

# RPC์™€ RMI์˜ ์ฐจ์ด์ ์€?

  • RPC๋Š” ์–ธ์–ด ์ค‘๋ฆฝ์ ์ด๋ฉฐ RMI๋Š” Java๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • RPC๋Š” C ์—์„œ์ฒ˜๋Ÿผ ์ ˆ์ฐจ ์ ์ด์ง€๋งŒ RMI๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ž…๋‹ˆ๋‹ค.
  • RPC๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋งŒ ์ง€์›ํ•˜๊ณ  RMI๋Š” ๊ฐœ์ฒด๋ฅผ ์ธ์ˆ˜ ๋ฐ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค. RPC๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ณตํ•ฉ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ถ„ํ• ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • RMI๋Š” ํ•ด๋‹น RPC๋ฅผ ์‰ฝ๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • RMI์—๋Š” Java ๋ฐ”์ดํŠธ ์ฝ”๋“œ ์‹คํ–‰์ด ํฌํ•จ๋˜๋ฏ€๋กœ RMI๊ฐ€ RPC๋ณด๋‹ค ๋Š๋ฆฝ๋‹ˆ๋‹ค.
  • RMI๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ RPC์—๋Š”์ด ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

# RPC VS RMI ์š”์•ฝ

RPC๋Š” ์›๊ฒฉ ์ปดํ“จํ„ฐ์—์„œ ํ”„๋กœ ์‹œ์ €๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜์žˆ๋Š” ์–ธ์–ด ์ค‘๋ฆฝ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ธ์–ด ์ค‘๋ฆฝ ๊ธฐ๋Šฅ์€ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ œํ•œํ•˜๊ณ  ๊ฐ’์„ ๊ธฐ๋ณธ ์œ ํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. RMI๋Š” Java๋กœ RPC๋ฅผ ๊ตฌํ˜„ ํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ์ฒด ์ „๋‹ฌ๋„ ์ง€์›ํ•˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ˆ˜๋ช…์„ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค. RMI์˜ ์žฅ์ ์€ ๊ฐ์ฒด ์ง€ํ–ฅ ๋””์ž์ธ ์ง€์›์ด์ง€๋งŒ Java์— ๋Œ€ํ•œ ์ œํ•œ์€ ๋‹จ์ ์ž…๋‹ˆ๋‹ค.

# Reference

# Todo ๊ธ€๋ณด๊ณ  ์ถ”๊ฐ€ํ•˜๊ธฐ

  • https://techdifferences.com/difference-between-rpc-and-rmi.html
Last Updated: 6/18/2023, 2:13:15 PM