์ํคํ
ํธ๋ ์ด์ ์ํคํ
์ฒ ํน์ฑ์ ๋ฐ์ ธ๋ณด๊ณ ์ํคํ
์ฒ ํน์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ์ฝ๋๋ฒ ์ด์ค ์ธ๋ถ์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ดํด์ผ ํ๋ค. -> ์ํคํ
์ฒ ํํ
์ด๋ผ๋ ์ฉ์ด๊ฐ ์ ์๋จ
์ํคํ
์ฒ ํํ
์ ์๋ฏธ๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋จผ์ ์ปค๋ค์ด์ ์ค
๋ผ๋ ํต์ฌ ๋ฉํธ๋ฆญ์ ์ดํดํด์ผํจ
7.1 ์ปคํ๋ง๊ณผ ์ปค๋ค์ด์ ์ค
์ปค๋ค์ด์ ์ค
๋ ์ปดํฌ๋ํธ ์ค ํ์ชฝ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ชฝ๋ ๋ณ๊ฒฝํด์ผ ์ ์ฒด ์์คํ ์ ์ ํฉ์ฑ์ด ๋ง๋๋ค๋ฉด ์ด๋ค์ ์ปค๋ค์ด์ ์ค๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋ค์ด์ ์ค๋ฅผ
- ์ ์ ์ปค๋ค์ด์ ์ค
- ๋์ ์ปค๋ค์ด์ ์ค ๋ก ๋ถ๋ฅํ๋ค.
์ํคํ ์ฒ ํํ ์ ์ ์ํ๋ ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ด๋ป๊ฒ ์๋ก ์ฐ๊ฒฐ๋์ด(wired)์๋์ง ์ธก์ ํ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
์ ์ ์ปค๋ค์ด์ ์ค
- ์ ์ ์ฝ๋ ๋ถ์์ผ๋ก ๋ฐ๊ฒฌํ ์ ์์
๋์ ์ปค๋ค์ด์ ์ค
- ๋ฐํ์ ๋์์ ๊ด๋ จ
- ๋๊ธฐ, ๋น๋๊ธฐ ๋ ์ข
๋ฅ
- ๋๊ธฐ: ๋ถ์ฐ ์๋น์ค๋ผ๋ฆฌ ํธ์ถ ์ ํธ์ถ๋ถ(caller)๋ ํผํธ์ถ๋ถ(callee)์ ์๋ต์ ๊ธฐ๋ค๋ ค์ผํ๋ค.
- ๋น๋๊ธฐ: ํ์ด์ด ์ค๋ ํฌ๊ฒ(fire-and-forget) ๋ฐฉ์์ด๋ฏ๋ก ์ด์ ์ํคํ ์ฒ์์ ๋ ์๋น์ค๋ ๊ฐ๋ณ์ ์ผ๋ก ์๋ํ ์ ์๋ค.
7.2 ์ํคํ ์ฒ ํํ ๊ณผ ์ธ๋ถ๋
์ํํธ์จ์ด๋ฅผ ์๋ก ์ฎ๋ ๊ฒ์ ์ปดํฌ๋ํธ ๋ ๋ฒจ์ ์ปคํ๋ง๋ง์ด ์๋๋ค. ๋ง์ ๋น์ฆ๋์ค ๊ฐ๋ ์ด ์๋ฏธ์ ์ฌ๋ฌ ์์คํ ํํธ๋ฅผ ํ๋ฐ ์ฎ์ด ๊ธฐ๋ฅ์ ์ผ๋ก ์์ง๋์ด(functional cohesion)์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์๋ ๋ฌธ์ ๊ฐ ๋ ๋งํ ์ปคํ๋ง ์ง์ ์ ๋ชจ๋ ์ดํด์ผ ํ๋ค.
์ํคํ ์ฒ ํํ
๋์ ๊ธฐ๋ฅ ์์ง๋(high functional cohesion)
์๋๊ธฐ์ ์ปค๋ค์ด์ ์ค(synchronous connascence)
๋ฅผ ๊ฐ์ง,๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ(independently deployable) ์ํฐํฉํธ
๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅ
- ์ํคํ ์ฒ ํํ ์ ์ํคํ ์ฒ์ ๋ค๋ฅธ ํํธ์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋๋๋ ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ๋ค.
๋์ ๊ธฐ๋ฅ ์์ง๋
- ์์ง๋๋ ์ปดํฌ๋ํธ ์ค๊ณ์ ๋ฐ๋ผ ๊ตฌํ๋ ์ฝ๋๊ฐ ์ผ๋ง๋ ๋ชฉ์ ์ ๋ง๊ฒ ํตํฉ๋์ด ์๋์ง๋ฅผ ๋ํ๋ธ๋ค.
- ๊ธฐ๋ฅ ์์ง๋๊ฐ ๋๋ค๋ ๊ฒ์ ์ํคํ ์ฒ ํํ ์ด ๋ชฉ์ ์ ๋ง๋ ๋ญ๊ฐ๋ฅผ ํ๊ณ ์๋ค๋ ๋ป
๋๊ธฐ์ ์ปค๋ค์ด์ ์ค
- ๋๊ธฐ์ ์ปค๋ค์ด์ ์ค๋ ์ํคํ ์ฒ ํํ ์ ํ์ฑํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝํ ์คํธ ๋ด๋ถ ๋๋ ๋ถ์ฐ ์๋น์ค ๊ฐ์ ๋๊ธฐ ํธ์ถ์ ์๋ฏธ
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์ ๊ฒฝ๊ณ ์ฝํ ์คํธ
๊ฐ ์ํฐํฐ๋ ๋ก์ปฌ ์ฝํ ์คํธ ๋ด๋ถ์์ ๊ฐ์ฅ ์ ๋์ํ๋ฏ๋ก ์กฐ์ง ์ ์ฒด๊ฐ ํจ๊ป ์ฐ๋ ํตํฉ Customer ํด๋์ค๋ฅผ ๋ง๋๋ ๋์ , ๊ฐ ๋ฌธ์ ๋๋ฉ์ธ์ ์์ฒด ํด๋์ค๋ฅผ ๋๊ณ ์ฐจ์ด์ ์ ๊ทธ๊ฒ์ ํตํฉํ๋ ์ง์ ์์ ์กฐ์ ํ๋ ๊ฒ์ด ๊ฒฝ๊ณ ์ฝํ ์คํธ์ ๊ฐ๋ ์ด๋ค.
์ํคํ ์ฒ ํํ ๊ฐ๋ ์ ์ํคํ ์ฒ ํน์ฑ์ ์๋ก์ด ๋ฒ์๋ฅผ ์ ์ํ๋ค. ์ค์ํ ์ด์ ๊ด์ฌ์ฌ์ ๋ํด ๋ฒ์๋ฅผ ์ขํ๋ณด๋ฉด ์ค์ํ ์ํคํ ์ฒ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ์ฌ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ ์๋ ์๋ค.