2 minute read

ํด๋ฆฐ ์ฝ”๋“œ

์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ ์ •์‹ 

์ €์ž: ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด

13. ๋™์‹œ์„ฑ

๊ฐ์ฒด๋Š” ์ฒ˜๋ฆฌ์˜ ์ถ”์ƒํ™”๋‹ค. ์Šค๋ ˆ๋“œ๋Š” ์ผ์ •์˜ ์ถ”์ƒํ™”๋‹ค.

  • ์ œ์ž„์Šค O. ์ฝ”ํ”Œ๋ฆฌ์—”

๋™์‹œ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ๋Œ๋ฆฌ๋Š” ์ด์œ ๋ฅผ ๋…ผํ•œ๋‹ค. ์–ด๋ ค์›€๋„ ๋…ผํ•œ๋‹ค.

๋™์‹œ์„ฑ์ด ํ•„์š”ํ•œ ์ด์œ ?

๋™์‹œ์„ฑ์€ ๊ฒฐํ•ฉcoupling์„ ์—†์• ๋Š” ์ „๋žต์ด๋‹ค. ์ฆ‰, ๋ฌด์—‡what๊ณผ ์–ธ์ œwhen๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ „๋žต์ด๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์ธ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด์—‡๊ณผ ์–ธ์ œ๊ฐ€ ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๋‹ค. ๋ฌด์—‡๊ณผ ์–ธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ์™€ ํšจ์œจ์ด ๊ทน์ ์œผ๋กœ ๋‚˜์•„์ง„๋‹ค. ๊ตฌ์กฐ์ ์ธ ๊ด€์ ์—์„œ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฑฐ๋Œ€ํ•œ ๋ฃจํ”„ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์€ ํ˜‘๋ ฅ ํ”„๋กœ๊ทธ๋žจ ์—ฌ๋Ÿฟ์œผ๋กœ ๋ณด์ธ๋‹ค.

๋ฏธ์‹ ๊ณผ ์˜คํ•ด

์˜คํ•ด

  • ๋™์‹œ์„ฑ์€ ํ•ญ์ƒ ์„ฑ๋Šฅ์„ ๋†’์—ฌ์ค€๋‹ค.
  • ๋™์‹œ์„ฑ์„ ๊ตฌํ˜„ํ•ด๋„ ์„ค๊ณ„๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํƒ€๋‹นํ•œ ์ƒ๊ฐ

  • ๋™์‹œ์„ฑ์€ ๋‹ค์†Œ ๋ถ€ํ•˜๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.
  • ๋™์‹œ์„ฑ์€ ๋ณต์žกํ•˜๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋™์‹œ์„ฑ ๋ฒ„๊ทธ๋Š” ์žฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ๋™์‹œ์„ฑ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ํ”ํžˆ ๊ทผ๋ณธ์ ์ธ ์„ค๊ณ„ ์ „๋žต์„ ์žฌ๊ณ ํ•ด์•ผ ํ•œ๋‹ค.

๋‚œ๊ด€

๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ๋™์‹œ์— ์ฐธ์กฐํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋†“๋‹ค๊ฐ€๋„ ์ผ๋ถ€ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋†“์€๋‹ค.

๋™์‹œ์„ฑ ๋ฐฉ์–ด ์›์น™

๋‹จ์ผ ์ฑ…์ž„ ์›์น™Single Responsibility Principle, SRP

๋™์‹œ์„ฑ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ์ฝ”๋“œ์™€ ๋ถ„๋ฆฌํ•˜๋ผ.

๋”ฐ๋ฆ„ ์ •๋ฆฌcorollary: ์ž๋ฃŒ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๋ผ

์ž๋ฃŒ๋ฅผ ์บก์Šํ™” ํ•˜๋ผ. ๊ณต์œ  ์ž๋ฃŒ๋ฅผ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ๋ผ

๋”ฐ๋ฆ„ ์ •๋ฆฌ: ์ž๋ฃŒ ์‚ฌ๋ณธ์„ ์‚ฌ์šฉํ•˜๋ผ

์‚ฌ๋ณธ์œผ๋กœ ๋™๊ธฐํ™”๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‚ด๋ถ€ ์ž ๊ธˆ์„ ์—†์•  ์ ˆ์•ฝํ•œ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ์‚ฌ๋ณธ ์ƒ์„ฑ๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋“œ๋Š” ๋ถ€ํ•˜๋ฅผ ์ƒ์‡„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.

๋”ฐ๋ฆ„ ์ •๋ฆฌ: ์Šค๋ ˆ๋“œ๋Š” ๊ฐ€๋Šฅํ•œ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ผ

๋…์ž์ ์ธ ์Šค๋ ˆ๋“œ๋กœ, ๊ฐ€๋Šฅํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ์—์„œ, ๋Œ๋ ค๋„ ๊ดœ์ฐฎ๋„๋ก ์ž๋ฃŒ๋ฅผ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๋ผ.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋ผ

  • ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์— ์•ˆ์ „ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์— ์•ˆ์ „ํ•œ ์ปฌ๋ ‰์…˜

์‹คํ–‰ ๋ชจ๋ธ์„ ์ดํ•ดํ•˜๋ผ

์ƒ์‚ฐ์ž-์†Œ๋น„์žProducer-Consumer

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

์ฝ๊ธฐ-์“ฐ๊ธฐReaders-Writers

์ฝ๊ธฐ ์Šค๋ ˆ๋“œ์˜ ์š”๊ตฌ์™€ ์“ฐ๊ธฐ ์Šค๋ ˆ๋“œ์˜ ์š”๊ตฌ๋ฅผ ์ ์ ˆํžˆ ๋งŒ์กฑ์‹œ์ผœ ์ฒ˜๋ฆฌ์œจ๋„ ์ ๋‹นํžˆ ๋†’์ด๊ณ  ๊ธฐ์•„๋„ ๋ฐฉ์ง€ํ•˜๋Š” ํ•ด๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž๋“คDining Philosophers

๋‘ฅ๊ทผ ์‹ํƒ์˜ ์ฒ ํ•™์ž๋“ค์ด ์–‘์ชฝ ํฌํฌ๋ฅผ ๋“ค๊ณ  ์‹์‚ฌ๋ฅผ ํ•  ๋•Œ ์ฒ ํ•™์ž๋ฅผ ์Šค๋ ˆ๋“œ๋กœ, ํฌํฌ๋ฅผ ์ž์›์œผ๋กœ ๋ฐ”๊ฟ” ์ƒ๊ฐํ•ด๋ณด๋ผ. ์ฃผ์˜ํ•ด์„œ ์„ค๊ณ„ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ๋“œ๋ฝ, ๋ผ์ด๋ธŒ๋ฝ, ์ฒ˜๋ฆฌ์œจ ์ €ํ•˜, ํšจ์œจ์„ฑ ์ €ํ•˜ ๋“ฑ์„ ๊ฒช๋Š”๋‹ค.

๋™๊ธฐํ™”ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ์˜์กด์„ฑ์„ ์ดํ•ดํ•˜๋ผ

๊ณต์œ  ๊ฐ์ฒด ํ•˜๋‚˜์—๋Š” ๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋ผ.

๋™๊ธฐํ™”ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ

์˜ฌ๋ฐ”๋ฅธ ์ข…๋ฃŒ ์ฝ”๋“œ๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค

์ข…๋ฃŒ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๊ณ ๋ฏผํ•˜๊ณ  ๋™์ž‘ํ•˜๊ฒŒ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•˜๋ผ. ์ƒ๊ฐ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ค์šฐ๋ฏ€๋กœ ์ด๋ฏธ ๋‚˜์˜จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒ€ํ†  ํ•˜๋ผ.

์Šค๋ ˆ๋“œ ์ฝ”๋“œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

๋ฌธ์ œ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ผ. ํ”„๋กœ๊ทธ๋žจ ์„ค์ •๊ณผ ์‹œ์Šคํ…œ ์„ค์ •๊ณผ ๋ถ€ํ•˜๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์ž์ฃผ ๋Œ๋ ค๋ผ. ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์›์ธ์„ ์ถ”์ ํ•˜๋ผ. ๋‹ค์‹œ ๋Œ๋ ธ๋”๋‹ˆ ํ†ต๊ณผํ•˜๋”๋ผ๋Š” ์ด์œ ๋กœ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๋ฉด ์ ˆ๋Œ€๋กœ ์•ˆ ๋œ๋‹ค.

๋ง์ด ์•ˆ๋˜๋Š” ์‹คํŒจ ์ž ์ •์ ์ธ ์Šค๋ ˆ๋“œ ๋ฌธ์ œ๋กœ ์ทจ๊ธ‰ํ•˜๋ผ

์‹œ์Šคํ…œ ์‹คํŒจ๋ฅผ โ€˜์ผํšŒ์„ฑโ€™์ด๋ผ ์น˜๋ถ€ํ•˜์ง€ ๋งˆ๋ผ.

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ์ˆœ์ฐจ ์ฝ”๋“œ๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ๋Œ๊ฒŒ ๋งŒ๋“ค์ž

์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ ๋ฐ–์—์„œ ์ƒ๊ธฐ๋Š” ๋ฒ„๊ทธ์™€ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ƒ๊ธฐ๋Š” ๋ฒ„๊ทธ๋ฅผ ๋™์‹œ์— ๋””๋ฒ„๊น…ํ•˜์ง€ ๋งˆ๋ผ. ๋จผ์ € ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ ๋ฐ–์—์„œ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฐ”๋กœ ๋Œ๋ ค๋ผ.

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋Š” ์ฝ”๋“œ ๋ถ€๋ถ„์„ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์— ์‰ฝ๊ฒŒ ๋ผ์›Œ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ์Šค๋ ˆ๋“œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ผ

๋‹ค์–‘ํ•œ ์„ค์ •์—์„œ ์‹คํ–‰ํ•  ๋ชฉ์ ์œผ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์— ์‰ฝ๊ฒŒ ๋ผ์›Œ ๋„ฃ์„ ์ˆ˜ ์žˆ๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ผ.

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ์“ฐ๋Š” ์ฝ”๋“œ ๋ถ€๋ถ„์„ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์กฐ์œจํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ•˜๋ผ

ํ”„๋กœ์„ธ์„œ ์ˆ˜๋ณด๋‹ค ๋งŽ์€ ์Šค๋ ˆ๋“œ๋ฅผ ๋Œ๋ ค๋ณด๋ผ

๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ๋Œ๋ ค๋ณด๋ผ

์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ๋ฆฌ๊ณ  ์ž์ฃผ ๋ชจ๋“  ๋ชฉํ‘œ ํ”Œ๋žซํผ์—์„œ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค๋ผ.

์ฝ”๋“œ์— ๋ณด์กฐ ์ฝ”๋“œinstrument๋ฅผ ๋„ฃ์–ด ๋Œ๋ ค๋ผ. ๊ฐ•์ œ๋กœ ์‹คํŒจ๋ฅผ ์ผ์œผํ‚ค๊ฒŒ ํ•ด๋ณด๋ผ

์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ

์ž๋™ํ™”

๊ฒฐ๋ก 

๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์ฝ”๋“œ๋Š” ์˜ฌ๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. SRP๋ฅผ ์ค€์ˆ˜ํ•œ๋‹ค. ๋™์‹œ์„ฑ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ์ž ์ •์ ์ธ ์›์ธ์„ ์ฒ ์ €ํžˆ ์ดํ•ดํ•œ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•œ๋‹ค. ๋ณดํ˜ธํ•  ์ฝ”๋“œ ์˜์—ญ์„ ์ฐพ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•๊ณผ ํŠน์ • ์ฝ”๋“œ ์˜์—ญ์„ ์ž ๊ทธ๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ด ํ•œ๋‹ค.