• [CS] ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฐฉ๋ฒ• (์ •์  ๋งํ‚น vs ๋™์  ๋งํ‚น vs RPC)

    2023. 12. 8.

    by. @leeeun

    ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•

    ์ •์  ๋งํ‚น (Static Linking)

     

    • ์‹คํ–‰ ํŒŒ์ผ ์ƒ์„ฑ์‹œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ƒ์„ฑํ•จ
    • ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ์ข‹์ง€ ์•Š์Œ
    • ๋™์  ๋งํ‚น ๋ฐฉ์‹ ๋Œ€๋น„, ๋™์  ๋งํ‚น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋ณด๋‹ค ๋น ๋ฅด๋‹ค. ๋ชจ๋“  ์ฝ”๋“œ๋Š” ํ•˜๋‚˜์˜ ์‹คํ–‰ ๋ชจ๋“ˆ์— ๋‹ด๊ธฐ๋ฏ€๋กœ ๋ถˆ์ผ์น˜์— ๋Œ€ํ•œ ๊ฑฑ์ •์„ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
    • ex) ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ A๋ผ๋Š” ์™ธ๋ถ€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด, A๋ผ๋Š” ์™ธ๋ถ€ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ ๋ณต์‚ฌํ•ด์˜จ๋‹ค.

     

    ๋™์  ๋งํ‚น (Dynamic Linking)

     

    • ์‹คํ–‰ ํ™”์ผ ์•ˆ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ์ฃผ์†Œ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์‹คํ–‰ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜๋  ๋•Œ ํ•ด๋‹น ๋ชจ๋“ˆ ์ฃผ์†Œ๋กœ ๊ฐ€์„œ ํ•„์š”ํ•œ ๊ฒƒ์„ ๋“ค๊ณ ์˜ค๋Š” ๋ฐฉ์‹
    • ์ •์  ๋งํ‚น ๋ฐฉ์‹ ๋Œ€๋น„, ์‹คํ–‰ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ํ›จ์”ฌ ์ž‘๊ณ , ์‹คํ–‰์‹œ์—๋„ ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•จ. ๋Š๋ฆฌ๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ.
    • ํ•„์š”ํ•œ ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์‹คํ–‰ ๋ถˆ๊ฐ€ํ•จ
    • ๋ถˆ์ผ์น˜์— ๋Œ€ํ•œ ๋ฌธ์ œ
    • ex) ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋™์ผํ•œ A๋ผ๋Š” ์™ธ๋ถ€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•ด๋„ A ๋ชจ๋“ˆ์˜ ์ฃผ์†Œ ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค. ๊ฐ๊ฐ์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ชฉ์ ํŒŒ์ผ์—์„œ๋Š” A๋ฅผ ๋ณต์‚ฌํ•ด์„œ A ๊ทธ ์ž์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ A๊ฐ€ ์žˆ๋Š” ๊ณณ์˜ ์ฃผ์†Œ๋งŒ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

     

    ์›๊ฒฉ ํ•จ์ˆ˜ ํ˜ธ์ถœ(RPC: Remote Procedure Call)

     

    • ๋ณ„๋„์˜ ์›๊ฒฉ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉ ์—†์ด ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ํ•จ์ˆ˜๋‚˜ ํ”„๋กœ์‹œ์ €๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹  ๊ธฐ์ˆ 
    • RPC๋ฅผ ์ด์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ•จ์ˆ˜ ๋˜๋Š” ํ”„๋กœ์‹œ์ €๊ฐ€ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์ด ์กด์žฌํ•˜๋Š” ๋กœ์ปฌ ์œ„์น˜์— ์žˆ๋“ , ์›๊ฒฉ ์œ„์น˜์— ์žˆ๋“  ์ƒ๊ด€์—†์ด ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธ
    • ๋ถ„์‚ฐ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ์›๊ฒฉ์ง€ ์ปดํ“จํ„ฐ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•จ
    • ์ปดํ“จํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” RPC protocol์ด ํ•„์š”ํ•จ
    • ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค๋Š” ํ•จ์ˆ˜๋งŒ ํ˜ธ์ถœํ•ด์„œ ์‹คํ–‰ํ•˜์ง€๋งŒ, ๋ฉ”์‹œ์ง•์„ ์ˆ˜ํ–‰ํ•ด์„œ ์ž์‹ ๊ณผ ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ ⇒ MSA ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ, ์–ธ์–ด๋‚˜ ํ™˜๊ฒฝ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ ,๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž์‹ ์˜ ์ปดํ“จํ„ฐ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜๋Š” ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” stub๊ณผ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” IDL(Interface Definition Language)๊ฐ€ ํ•„์š”ํ•จ

     

    ์ฐธ๊ณ 

    RPC๋ž€?

    https://velog.io/@jakeseo_me/RPC%EB%9E%80

    ๋Œ“๊ธ€