์ํํธ์จ์ด ์ค๊ณ ์์น์ ์ ์ง๋ณด์, ํ์ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ๋ขฐ์ฑ์ ๊ฐ์ถ ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์ฒญ์ฌ์ง์ ํ์ฑํฉ๋๋ค. SOLID, DRY, ๊ทธ๋ฆฌ๊ณ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ๊ฐ์ง ๋์ ์์ง๋์ ๊ฐ์ ์์น๋ค์ ๋จ์ํ ์ด๋ก ์ ์ธ ์ด์์ด ์๋๋ผ, ๊ฐ๋ฐ์๋ค์ด ์์ฒด ๋ณต์ก์ฑ์ ๋ฌด๋์ง์ง ์๊ณ ์ฑ์ฅํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋๋ ์ผ์์ ์ธ ์์ง๋์ด๋ง ๋๊ตฌ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ์ด๋ฌํ ์์น๋ค์ ์ข ์ข ์ ์๋ ๋ฐฉ์น๊ฐ ์๋๋ผ, ๋น ๋ฅธ ๊ฐ๋ฐ, ํ ๊ต์ฒด, ๊ทธ๋ฆฌ๊ณ ๋์ ๋๋ ๊ธฐ์ ๋ถ์ฑ๋ก ์ธํด ์๋ฐ๋ฉ๋๋ค.
์ ํต์ ์ผ๋ก ์ด๋ฌํ ์๋ฐ ์ฌํญ์ ๋ฐ๊ฒฌํ๋ ค๋ฉด ์๋ จ๋ ์์ง๋์ด๊ฐ ์ํคํ ์ฒ ๊ฒํ ๋ฅผ ์ํํ๊ฑฐ๋ ๋ฐฉ๋ํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฌ์ธต์ ์ผ๋ก ๋ถ์ํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ท๋ชจ, ๋ถ์ฐํ ๋๋ ์ฅ๊ธฐ ์์คํ ์์๋ ์๋ ๊ฒ์ฌ๊ฐ ๋น ๋ฅด๊ฒ ๋นํ์ค์ ์ด ๋ฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ์ก์๋ด๊ฑฐ๋ ์์ ๊ท์น์ ์ ์ฉํ๋ ๊ฒ์ผ๋ก ์๋ ค์ง ๋ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋๋ก ๋ฐ์ ํ์ต๋๋ค. ์ต์ ๋๊ตฌ๋ ์ํฐ ํจํด์ ์๋ณํ๊ณ ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฑด์ถ ๋์๋๋ก๋ ๋ฒ๊ทธ๋ก ๋ํ๋๊ธฐ ์ ์๋ ํต์ฌ ์ค๊ณ ์์น ์๋ฐ ์ฌํญ์ ์ถ์ ํฉ๋๋ค.
์ค๊ณ ๋ฌด๊ฒฐ์ฑ ๋งฅ๋ฝ์์ ์ ์ ์ฝ๋ ๋ถ์์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ด ๊ฐ์งํ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์งํ ์ ์๋ ๊ฒ, SOLID ๋ฐ DRY์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์น๊ณผ์ ์ฐ๊ด์ฑ, ๊ทธ๋ฆฌ๊ณ ํ์ด ์ค๊ณ ์ค์ฌ ์ ์ ๋ถ์์ ์ํฌํ๋ก์ ํตํฉํ์ฌ ๋์ฑ ๊ฐ๋ ฅํ ์ํคํ ์ฒ ๊ท์จ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฝ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ์ธ์
์ค๊ณ ์๋ฐ ์ฌํญ์ ๊ฐ์ํํ์ฌ ์ฝ๋ ํ์ง ํฅ์
์ง๊ธ ํ์๊ฐ์ฅ ์ค์ํ ์ํํธ์จ์ด ์ค๊ณ ์์น ์ดํด
๊น๋ํ ์ํํธ์จ์ด ์ค๊ณ๋ ์ฅ๊ธฐ์ ์ธ ํฌ์์ ๋๋ค. ํ๋ คํ ๊ธฐ๋ฅ๊ณผ ๋น ๋ฅธ ์์ ์ด ์ด๊ธฐ ์๋๋ฅผ ๋์ผ ์ ์์ง๋ง, ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ์ง์ ๊ฐ๋ฅํ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ๊ฒ์ ์ ์คํ ๊ตฌ์กฐ์ ์์น ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ๋๋ค. ์ํํธ์จ์ด ์ค๊ณ ์์น์ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ํ์ฅํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ฆ๋ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์์น์ ์๋ฐํ๋๋ผ๋ ์ฆ๊ฐ์ ์ธ ์ถฉ๋์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ๋๋ฌผ์ง๋ง, ๊ตฌ์กฐ์์ ํผ๋์ผ๋ก ์์ํ ๋ณํ๋ ๊ฒ์ ์์ธก ๊ฐ๋ฅํ๊ณ ์๋ฐฉ ๊ฐ๋ฅํฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ด๋ฌํ ๋ณํ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ์ง๋ง, ์ด๋ค ์์น์ด ๊ฐ์ฅ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ ์ฝ๋ ํจํด์ ํตํด ์ด๋ฌํ ์์น์ ์ด๋ป๊ฒ ํํํ ์ ์๋์ง๋ฅผ ์ธ์งํ๊ณ ์ ์ฉํด์ผ ํฉ๋๋ค.
SOLID: ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ๊ธฐ์ด
SOLID ์์น์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ํ์์ ์ด๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ฝ๋์ ๊ธฐ์ค์ด ๋ฉ๋๋ค. ๋จ์ผ ์ฑ ์ ์์น (SRP)๋ ํด๋์ค ๋๋ ๋ชจ๋์ด ๋ณ๊ฒฝํด์ผ ํ ์ด์ ๊ฐ ๋จ ํ๋๋ฟ์์ ๋ณด์ฅํฉ๋๋ค. ๋จ์ผ ๊ตฌ์ฑ ์์๊ฐ ๋ก๊น , ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋์ผํ ํ์ผ์ ์์ ํด์ผ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ด๋ จ ์๋ ๋ก์ง ๊ฐ์ ๊ณ ์ํ ๊ฒฐํฉ์ผ๋ก ์ด์ด์ง๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์์ฃผ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋๋ฌด ์ปค์ง๋ ํด๋์ค๋ฅผ ์๋ณํ์ฌ SRP ์๋ฐ์ ์์ฌํ ์ ์์ต๋๋ค. ๊ฐ๋ฐฉ/ํ์ ์์น ํต์ฌ ๋ก์ง์ ์์ ํ๋ ๋์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋์์ ํ์ฅํ๋ ๊ฒ์ ์ฅ๋ คํฉ๋๋ค. ์ ์ ๋ถ์๊ธฐ๋ ๋คํ์ฑ์ ํ์ฉํ๋ ๋์ switch ๋ฌธ์ด๋ ๋ฐ๋ณต๋๋ if/else ํธ๋ฆฌ๋ฅผ ํตํด ์๋ก์ด ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฅผ ๊ฐ์งํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฆฌ์ค์ฝํ ์นํ ์๋ฆฌ ํ์ ํด๋์ค ์ธ์คํด์ค๊ฐ ๋์์ ์์์ํค์ง ์๊ณ ๊ธฐ๋ณธ ํด๋์ค ์ฐธ์กฐ๋ฅผ ๋์ฒดํ ์ ์์ด์ผ ํฉ๋๋ค. ์ค๋ฒ๋ผ์ด๋๋ ๋ฉ์๋๊ฐ ์๊ธฐ์น ์์ ์์ธ๋ฅผ ๋ฐ์์ํค๊ฑฐ๋ ์ ๋ ฅ ๊ณ์ฝ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ ์๋ฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ณ ๊ธ ๋ถ์ ๋๊ตฌ๋ ์ฌ์ฉ ํจํด ๋ฐ ์์ธ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ฒด ์์ ์ฑ์ ํ๊ฐํ ์ ์์ต๋๋ค. ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์๋ฆฌ ํด๋์ค๊ฐ ํฌ๊ณ ๋ฒ์ฉ์ ์ธ ์ธํฐํ์ด์ค์ ์์กดํ์ง๋ง ๋ฉ์๋์ ์ผ๋ถ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด๋ ์๋ฐ์ ๋๋ค. ์ด๋ก ์ธํด ์ทจ์ฝํ ๊ตฌํ๊ณผ ๋น๋ํด์ง ์ข ์์ฑ์ด ๋ฐ์ํฉ๋๋ค. ์ ์ ๋๊ตฌ๋ ์ธํฐํ์ด์ค ์ฌ์ฉ ๋ฒ์๋ฅผ ๋ถ์ํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์์กด์ฑ ์ญ์ ์์น ์ง์ ์ ์ธ ์ข ์์ฑ๋ณด๋ค ์ถ์ํ ์ฌ์ฉ์ ๊ฐ์กฐํฉ๋๋ค. ๊ตฌ์ฒด์ ํด๋์ค๋ฅผ ์ง์ ์ธ์คํด์คํํ๊ฑฐ๋ ์ถ์ํ ์์ด ์ ์์ค ๋ชจ๋์ ์์กดํ๋ ์ฝ๋๋ ๊ธด๋ฐ ๊ฒฐํฉ์ ๊ฐ์งํ๋๋ก ๊ตฌ์ฑ๋ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ์์ ๊ฒฝ๊ณ ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
DRY์ KISS: ๋จ์ํจ๊ณผ ์ผ๊ด์ฑ
The ์์ ์ ๋ฐ๋ณตํ์ง ๋ง์ญ์์ค (DRY) ์์น์ ๋ก์ง, ๊ตฌ์ฑ ๋ฐ ๊ตฌ์กฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ค๋ณต์ ์ต์ํํ๋ ๊ฒ์ ๊ฐ์กฐํฉ๋๋ค. ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ ์ ์ง ๊ด๋ฆฌ ๋น์ฉ๊ณผ ๋ถ์ผ์น ๊ฐ๋ฅ์ฑ์ ์ฆ๊ฐ์ํต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๊ตฌ์ฑ ์์๊ฐ ๋์ผํ ๊ณ์ฐ ๋ก์ง์ ๊ตฌํํ๋ ๊ฒฝ์ฐ ํฅํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ๊ณณ์ ์ ์ฉํด์ผ ํ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ํ์ผ, ํด๋์ค ๋๋ ์๋น์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ ํํ ๋๋ ๊ฑฐ์ ์ค๋ณต๋๋ ์ฝ๋ ๋ธ๋ก์ ์๋ณํ์ฌ ์ด๋ฅผ ๊ฐ์งํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ์ข ์ข ํ ํฐ ์ ์ฌ์ฑ ๋๋ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST) ๋๋ฑ์ฑ์ ๊ณ์ฐํ์ฌ ๋ณต์ ๋ณธ์ ์ฐพ์ต๋๋ค. Keep It Simple, Stupid (KISS) ์ด ์์น์ ๊ฐ๋ฐ์์๊ฒ ๊ณผ๋ํ ์์ง๋์ด๋ง์ ํผํ๋๋ก ์ผ๊นจ์์ค๋๋ค. ๋ ๊ฐ๋จํ ์๋ฃจ์ ์ผ๋ก๋ ์ถฉ๋ถํ ๋ ๋ณต์กํ ์ถ์ํ, ๋ถํ์ํ ๋์์ธ ํจํด, ๋๋ ์ฌ์ธต์ ์ธ ์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ง์ํฉ๋๋ค. ๋จ์์ฑ์ ์ฃผ๊ด์ ์ด์ง๋ง, ์ ์ ๋ถ์๊ธฐ๋ ์ํ ๋ณต์ก๋, ์ค์ฒฉ ๊น์ด, ์ ์ด ๊ฒฝ๋ก ์์ ๊ฐ์ ์งํ๋ฅผ ํตํด ๋ณต์ก์ฑ์ ๊ทผ์ฌํ ์ ์์ต๋๋ค. ๋๋ฌด ๋ง์ ๋ถ๊ธฐ๋ ๊ธด ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ๊ฐ์ง ํจ์๋ KISS ์๋ฐ์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ์งํ๋ฅผ ์ฌ์ฉ ๋ถ์๊ณผ ๊ฒฐํฉํ๋ฉด ํ์ ๋ช ํ์ฑ์ด๋ ํ์ฅ์ฑ์ ํฌ์ํ์ง ์๊ณ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์๋ ๋ถ๋ถ์ ์ ํํ ํ์ ํ ์ ์์ต๋๋ค.
๋์ ์์ง๋ ฅ๊ณผ ๋ฎ์ ๊ฒฐํฉ๋ ฅ
๋์ ์์ง๋๋ ๋ชจ๋์ ์ญํ ๋ค์ด ์ผ๋ง๋ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์๋์ง๋ฅผ ๋ํ๋ ๋๋ค. ์์ง๋๊ฐ ๋์ ๋ชจ๋์ ๋ช ํํ๊ฒ ์ ์๋ ์์ ์ ์ํํ๋ ๋ฐ๋ฉด, ์์ง๋๊ฐ ๋ฎ์ผ๋ฉด ๊ตฌ์ฑ ์์๊ฐ ๋๋ฌด ๋ง์ ์์ ์ ์ํํ๊ณ ์์์ ๋ํ๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ๊ด๋ จ ์๋ ๋ฉ์๋ ์, ๋น์ฐ์์ ์ธ ๋ณ์ ์ฌ์ฉ, ๋๋ ๋ฎ์ ๋ช ๋ช ์์ง๋์ ๊ฐ์ ํด๋ฆฌ์คํฑ์ ํตํด ์์ง๋๊ฐ ๋ฎ์์ ์๋ณํฉ๋๋ค. ์์ง๋๊ฐ ๋ฎ์ผ๋ฉด ํ ์คํธ๊ฐ ๋ ์ด๋ ค์์ง๊ณ ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋๋ค. ๋ฐ๋ฉด์, ๋ฎ์ ๊ฒฐํฉ ๋ชจ๋ ๊ฐ ์ข ์์ฑ์ ์ต์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ณ ๋๋ก ๊ฒฐํฉ๋ ์ฝ๋๋ ํ ํด๋์ค์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ํด๋์ค์ ์ํฅ์ ๋ฏธ์น ๊ฐ๋ฅ์ฑ์ด ๋์ ์ทจ์ฝ์ฑ์ ๋์ ๋๋ค. ๊ฒฐํฉ๋๋ ์ข ์ข ๊ฐ์ ธ์ค๊ธฐ ์, ์ ์ญ ๋ณ์ ์ฌ์ฉ, ๋๋ ๊ธด๋ฐํ ๋ชจ๋ ๊ฐ ๋ฐ์ดํฐ ํ๋ฆ์ผ๋ก ์ธก์ ๋ฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ํฌ์ธ ๋ฐ ํฌ์์ ์งํ๋ฅผ ๊ณ์ฐํ๊ณ , ์๋ฐฉํฅ ์ข ์์ฑ์ ์๋ณํ๋ฉฐ, ์ฌ๋ฌ ์ธ๋ถ ๋ชจ๋์ ์์กดํ๋ ๊ตฌ์ฑ ์์๋ฅผ ํ์ํฉ๋๋ค. ๋ํ ํด๋์ค ๊ฐ์ ๊ณต์ ์ํ ๋๋ ๊ธด๋ฐํ ๋ฃจํ๊ฐ ๋ชจ๋ํ๋ฅผ ๋ฐฉํดํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์์ง๋๋ฅผ ๋์ด๊ณ ๊ฒฐํฉ๋๋ฅผ ์ ํํ๋ฉด ๋์ฑ ๊ฒฌ๊ณ ํ๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์งํ ๊ฐ๋ฅํ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๋ฐ๋ฉํ ๋ฅด์ ๋ฒ์น๊ณผ ์บก์ํ
The ๋ฐ๋ฉํ
๋ฅด์ ๋ฒ์น ์ง์ ์ ์ธ ํ๋ ฅ์์๋ง ํต์ ํ๋ ๋ชจ๋ ์ค๊ณ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ๋ฉ์๋๋ ํ์ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ์ฌ๋ฌ ๊ณ์ธต์ ๊ฐ์ฒด๋ฅผ ๊ฑฐ์ณ์๋ ์ ๋ฉ๋๋ค.a.getB().getC().doSomething()). ์ด๋ฌํ ์ฒด์ด๋์ ์บก์ํ๋ฅผ ์๋ฐํ ๋ฟ๋ง ์๋๋ผ ํธ์ถ์๋ฅผ ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌ์กฐ์ ๊ฒฐํฉ์ํต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ์ ์๋ ๊น์ด๋ฅผ ๋์ด์๋ ๋ฉ์๋ ์ฒด์ด๋์ ๊ฐ์งํ์ฌ ์๋ฐ ์ฌํญ์ ๊ฐ์กฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฒด์ด๋์ ์ข
์์ฑ์ ํ๋ฉด์ ์ ์ฆ๊ฐ์์ผ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ๋ฆฌํฉํ ๋ง ์ ์ทจ์ฝ์ฑ์ ๋์
๋๋ค. ์ด์ ๋๋ถ์ด ๋ค์๊ณผ ๊ฐ์ ์์น์ด ์ ์ฉ๋ฉ๋๋ค. ์บก์ํ๋ด๋ถ ์ํ๊ฐ ์ธ๋ถ ํด๋์ค์ ์ง์ ๋
ธ์ถ๋ ๋ ์ข
์ข
์์๋๋ ๋ฌธ์ ์
๋๋ค. private์ด์ด์ผ ํ๋ ํ๋๋ ํธ์์ public์ผ๋ก ์ค์ ๋๊ฑฐ๋, getter/setter๋ ๋ถ๋ณ์์ ์ ์ฉํ์ง ์๊ณ ๋จ์ํ ์ก์ธ์ค ํ๋ก์๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ ์ ๋๊ตฌ๋ ๋ถ์ ์ ํ ์ก์ธ์ค ํ์ ์๊ฐ ์๋ ํ๋๋ฅผ ํ์ํ๊ณ ์บก์ํ ์ ์ฑ
์ ์ ์ฉํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์น์ ์ฌ์ธต์ ์ธ ์ก์ธ์ค ์ฒด์ธ์ ์ง์ํ๊ณ ๋ช
ํํ ์ธํฐํ์ด์ค๋ฅผ ์ฅ๋ คํจ์ผ๋ก์จ ๊ฐ์ฒด ๊ฒฝ๊ณ๋ฅผ ์๋ฏธ ์๊ณ ์์ ํ๊ฒ ์ ์งํฉ๋๋ค.
YAGNI์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ
"You Aren't Gonna Need It"(YAGNI)๋ ๊ฐ๋ฐ์์๊ฒ ์ค์ ๋ก ํ์ํ ๋๊น์ง ๊ธฐ๋ฅ์ด๋ ํํฌ ๊ตฌํ์ ์์ ํ ๊ฒ์ ๊ถ๊ณ ํฉ๋๋ค. YAGNI ์๋ฐ์ ์ผ๋ฐ์ ์ผ๋ก ๋ถํ์ํ ์ถ์ํ, ๊ตฌ์ฑ ๋ณต์ก์ฑ, ๋๋ ๊ฐ์ ์๋๋ฆฌ์ค์ ๋ง์ถฐ ์์ฑ๋ ์ผ๋ฐํ๋ ์ฝ๋ ๊ฒฝ๋ก๋ก ๋ํ๋ฉ๋๋ค. ์ ์ ๋ถ์์ ์ถ์ธก์ฑ ์ฝ๋๋ฅผ ์ง์ ๊ฐ์งํ์ง ๋ชปํ ์ ์์ง๋ง, ์ฌ์ฉ๋์ง ์๋ ๋ฉ์๋, ๋จ์ผ ๊ตฌํ๋ง ์๋ ์ธํฐํ์ด์ค, ๋๋ ํ๊ฐ๋์ง ์๋ ๊ตฌ์ฑ ํ๋๊ทธ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์งํ๋ ๊ณผ๋ํ ์์ง๋์ด๋ง ๋๋ ์ฑ๊ธํ ์ผ๋ฐํ๋ฅผ ์์ฌํฉ๋๋ค. ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฐ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ ์์ ๋ณ๋์ ๊ณ์ธต์ด๋ ๊ตฌ์ฑ ์์๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ ๊ฐ์กฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋น์ฆ๋์ค ๋ก์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ UI ์ฝ๋์์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค. ํด๋์ค๊ฐ ์ง์์ฑ ๋ก์ง๊ณผ ์ ๋ ฅ ๊ฒ์ฆ ๋๋ UI ๋ ๋๋ง์ ํผํฉํ ๋ ์๋ฐ์ด ๋ฐ์ํฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ฌ์ฉ ๋ฐ ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ํตํด ์ด๋ฅผ ๊ฐ์งํ๊ณ ์ฑ ์์ด ๊ฒฝ๊ณ๋ฅผ ๋ถ์ ์ ํ๊ฒ ๋๋๋๋ ๋ถ๋ถ์ ์ถ์ ํฉ๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ฅผ ํตํด ํ์ ์์คํ ์ ๋์ฑ ๋ชจ๋ํํ๊ณ ํ ์คํธ ๊ฐ๋ฅํ๋ฉฐ ๋ฐ์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ๋ ๊ฐ์ง ์์น์ ์ฝ๋๊ฐ ๋ชฉ์ ์ ๋ง๊ฒ, ์ต์ํ๋๊ณ , ํจ์จ์ ์ผ๋ก ๋ถํ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ ์ ์ฝ๋ ๋ถ์์ด ์ค๊ณ ์์น ์๋ฐ์ ๊ฐ์งํ๋ ๋ฐฉ๋ฒ
์ํํธ์จ์ด ์ค๊ณ ์์น์ ์ข ์ข ์ถ์์ ์ผ๋ก ๋ณด์ด์ง๋ง, ๋ง์ ๊ฒฝ์ฐ ์ด๋ฌํ ์์น ์๋ฐ์ ์์ค ์ฝ๋์ ํ์ง ๊ฐ๋ฅํ ํ์ ์ ๋จ๊น๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ ์ ํ๊ฒ ๊ตฌ์ฑํ๊ณ ์ ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ์คํํ์ง ์๊ณ ๋ ์ด๋ฌํ ํ์ ์ ์ฐพ์๋ผ ์ ์์ต๋๋ค. ๋ฐํ์ ๋์์ ์์กดํ๋ ๋์ , ์์ค ์ฝ๋๋ฅผ ํ์ฑํ๊ณ , ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST), ์ ์ด ํ๋ฆ ๊ทธ๋ํ(CFG), ์ข ์์ฑ ๋งต๊ณผ ๊ฐ์ ๋ด๋ถ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ฉฐ, ๊ท์น ๊ธฐ๋ฐ ๋๋ ํจํด ๊ธฐ๋ฐ ๋ ผ๋ฆฌ๋ฅผ ์ ์ฉํ์ฌ ๊ตฌ์กฐ, ๋ ผ๋ฆฌ ๋ฐ ์ค๊ณ๋ฅผ ํ๊ฐํฉ๋๋ค. ํต์ฌ์ ์ค๊ณ ์์น์ ์ฝ๋๋ฒ ์ด์ค ๋ด์์ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ฆ์ ์งํ, ํจํด ๋ฐ ์ํฐํจํด์ ๋งคํํ๋ ๊ฒ์ ๋๋ค.
์คํ์ผ๊ณผ ๊ตฌ๋ฌธ์ ๋์ด: ์ํคํ ์ฒ๋ฅผ ์ํ ์ ์ ์ฝ๋ ๋ถ์
์ด๊ธฐ ์ ์ ๋ถ์๊ธฐ๋ ๊ตฌ๋ฌธ ์ค๋ฅ, ๋ช ๋ช ๊ท์น, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ์ ์ธ ์คํ์ผ ๊ฒ์ฌ์ ์ง์คํ์ต๋๋ค. ํ์ง๋ง ์ต์ ๋๊ตฌ๋ค์ ๋์ฑ ์ฌ์ธต์ ์ผ๋ก ๋ถ์ํ์ฌ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๋ชจ๋ธ๋งํ๊ณ ๋ ผ๋ฆฌ ํ๋ฆ๊ณผ ๊ตฌ์กฐ์ ๊ด๊ณ์ ๋ํด ์ถ๋ก ํฉ๋๋ค. ํด๋์ค ํฌ๊ธฐ, ์์ ์ฒด์ธ, ๊ฒฐํฉ๋ ์์ค, ๊ทธ๋ฆฌ๊ณ ๋ฉ์๋ ๋ณต์ก๋๋ฅผ ํ๊ฐํฉ๋๋ค. ์ด๋ฌํ ์งํ๋ค์ด ํน์ ์ค๊ณ ์์น๊ณผ ๋ถํฉํ ๊ฒฝ์ฐ, ๋ฎ์ ์์ง๋, ๋ฎ์ ๋ชจ๋์ฑ, ๋๋ ๊ณผ๋ํ ์ถ์ํ์ ๊ฐ์ ์๋ฐ ์ฌํญ์ ํ์ ํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ํ๋ ์์ํฌ๋ ๊ท์น ์ฌ์ฉ์ ์ ์๋ฅผ ์ ์ ๋ ๋ง์ด ์ง์ํ์ฌ, ํ์ด ์์ฒด์ ์ธ ์ค๊ณ ๊ธฐ์ค์ ์ฒด๊ณํํ๊ณ ๋น๋ ๊ณผ์ ์์ ์ด๋ฅผ ์ผ๊ด๋๊ฒ ์ ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
๊ท์น ๊ธฐ๋ฐ ํ์ง: ๋ฆฐํฐ๊ฐ ์ค์ฉ ํจํด์ ํฌ์ฐฉํ๋ ๋ฐฉ๋ฒ
๋ฆฐํฐ์ ์ ์ ๋ถ์๊ธฐ๋ ๊ท์น ์์ง์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ด๋ฌํ ๊ท์น์ ๊ณผ๋ํ ๋งค๊ฐ๋ณ์ ์, ํฐ ํด๋์ค, ์ฌ์ฉ๋์ง ์๋ ๋ณ์, ์ฌ์ธต์ ์ธ ์์ ํธ๋ฆฌ, ์ง๋์น๊ฒ ๋ณต์กํ ๋ฉ์๋์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ์ ๊ฒฐํจ์ ๊ฐ์งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋คํ์ฑ ๋์ switch ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ฐฉ/ํ์ ์์น ์๋ฐ์ ๋ํ๋ผ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, .get() ๊ฐ์ฒด ๊ณ์ธต ๊ตฌ์กฐ์ ์ฒด์ธ์ ๋ฐ๋ฉํ
๋ฅด์ ๋ฒ์น ์๋ฐ์ ๋๋ฌ๋ผ ์ ์์ต๋๋ค. ๊ฐ ๊ท์น์ ๋ถ์คํ ์ค๊ณ์ ์งํ๋ฅผ ๋ํ๋
๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ ๊ฑด์ถ ํ์ค์ด๋ ํน์ ์์น์ ๋ฐ์ํ๋๋ก ์กฐ์ ํ ์ ์๋ ๊ด๋ฒ์ํ ๊ท์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํ๋ฆ ๊ฐ์ง ๋ฐ ์ปจํ ์คํธ ์ธ์ ๊ท์น ์์ง
๊ธฐ๋ณธ ์ ์ ๋ถ์์ ํ์ผ์ด๋ ํจ์ ๋ด์ ๋ก์ปฌ ์ปจํ ์คํธ๋ง ์ดํด๋ด ๋๋ค. ๋ ๊ณ ๊ธ ๋ถ์๊ธฐ๋ ํ๋ฆ์ ๋ฏผ๊ฐํ์ฆ, ๊ฐ๊ณผ ์ ์ด ๊ตฌ์กฐ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ์ด๋ป๊ฒ ์ ํ๋๋์ง ํ๊ฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ณ์ ์ํธ ์์ฉ์ด๋ ๋ฉ์๋ ์ํ์ค๋ฅผ ํตํด์๋ง ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฆฌ์ค์ฝํ ์นํ ์์น ์๋ฐ์ ์ค๋ฒ๋ผ์ด๋๋ ๋ฉ์๋์ ๋์์ ์ปจํ ์คํธ์์ ๊ธฐ๋ณธ ๋ฒ์ ๊ณผ ๋น๊ตํ๊ธฐ ์ ๊น์ง๋ ๋ช ํํ๊ฒ ๋๋ฌ๋์ง ์์ ์ ์์ต๋๋ค. ํ๋ฆ ๊ฐ์ง ๋ถ์์ ํตํด ๋๊ตฌ๋ ์์คํ ์ ์ฌ๋ฌ ๋ถ๋ถ์ด ๊ฐ๋ณ์ ์ผ๋ก ์ ์๋ ๋ฐฉ์๋ฟ ์๋๋ผ ์ํธ ์์ฉํ๋ ๋ฐฉ์์์ ๋ฐ์ํ๋ ๋ฏธ๋ฌํ ์ค๊ณ ์๋ฐ์ ํฌ์ฐฉํ ์ ์์ต๋๋ค.
๊ตฌ์กฐ ๋ฐ ๋ฉํธ๋ฆญ ๊ธฐ๋ฐ ๊ฐ์ง(์: ํด๋์ค ํฌ๊ธฐ, ํฌ์ธ/ํฌ์์)
์งํ๋ ์ค๊ณ ๊ฒ์ฆ์ ํต์ฌ ๊ตฌ์ฑ ์์์ ๋๋ค. ํต์ฌ ์ค๊ณ ์์น์ ์๋ฐํ๋ ์ฝ๋๋ ์ข ์ข ์ธก์ ๊ฐ๋ฅํ ์ด์ ์งํ๋ฅผ ๋ณด์ ๋๋ค. ํฐ ํด๋์ค๋ ๋ฉ์๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐํฉ๋๋ค. ๋์ ํฌ์ธ ๊ฐ(๊ตฌ์ฑ ์์์ ์ข ์๋ ๋ชจ๋์ ์)์ ์ข ์์ฑ ํด๋ฌ์คํฐ๊ฐ ๊ฑด๊ฐํ์ง ์์์ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ๋์ ํฌ์์ ๊ฐ(๋ชจ๋์ด ์ฌ์ฉํ๋ ์ข ์์ฑ ์)์ ๊ฒฐํฉ๋๋ฅผ ๋ํ๋ ๋๋ค. ์์ ๊น์ด, ์ํ ๋ณต์ก๋, ์์ง๋ ์ ์, ์ข ์์ฑ ๊น์ด๋ ๋ชจ๋ ์ ๋ํํ ์ ์์ผ๋ฉฐ ์ ์ ๋ถ์๊ธฐ์์ ์ค๊ณ ์นจ์์ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ์งํ๋ ๊ท๋ฒ์ ์ธ ๊ฒ์ด ์๋๋ผ ์ ํธ ์ญํ ์ ํฉ๋๋ค. ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ์ถ์ ํ๋ฉด ์ํคํ ์ฒ ํ์ง์ ์ถ์ธ๋ฅผ ํ์ ํ ์ ์์ผ๋ฏ๋ก ๊ตฌ์กฐ์ ๋ถ์ฑ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ํ์ด ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ฆฌํฉํ ๋ง ํ๋ณด: ๋์์ธ ๋๋ฆฌํํธ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌ
์ค๊ณ ์๋ฐ์ ์ข ์ข ์์ ํํ, ์ฆ ์ฌ๊ธฐ์ ๊ธฐ์ ์ถ๊ฐ ๋ฉ์๋, ๊ณต์ ์ ํธ๋ฆฌํฐ์ ๊ฐ์ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ์ด๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋์ ๋ฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ํคํ ์ฒ๊ฐ ์ ํ๋๊ธฐ ์ ์ ์ด๊ธฐ ๋จ๊ณ์ ๋ฆฌํฉํ ๋ง ๊ธฐํ๋ฅผ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋๊ตฌ๋ ๊ธด switch ๋ฌธ, ๋ฐ๋ณต์ ์ธ ์ฝ๋ ๋ธ๋ก, ์ค๋ณต ์์ฑ์ ๋๋ ์ถ์ํ ์ค์ฉ์ ์์ฌํ๋ ๊ต์ฐจ ๊ณ์ธต ์ข ์์ฑ์ ํ์ํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ง์์ ์ผ๋ก ํ๋ฉดํํจ์ผ๋ก์จ ์ค๊ณ ๋ชจ๋ํฐ๋ง ์ญํ ์ ํ์ฌ ๊ตฌ์กฐ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ ๊ฐ๋ฐ์๊ฐ ๋ฐฉํฅ์ ์์ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ฌํ ์ด๊ธฐ ๊ฐ์์ฑ์ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ผ ๋ฟ๋ง ์๋๋ผ ์ฝ๋๋ฒ ์ด์ค์ ์ฅ๊ธฐ์ ์ธ ์ง์ ๊ฐ๋ฅ์ฑ์ ํฅ์์ํต๋๋ค.
์ฌ์ธต์ ์ธ ๊ฑด์ถ ๋์ ๊ฐ์ง์ ์์ด์ ์ ์ ๋ถ์์ ํ๊ณ
์ ์ ์ฝ๋ ๋ถ์์ ๊ฐ์ ์๋ ๋ถ๊ตฌํ๊ณ ํ๊ณ๊ฐ ์์ต๋๋ค. ๋๋ฉ์ธ ์ง์์ด๋ ๋น์ฆ๋์ค ์ปจํ ์คํธ๋ฅผ ํ์๋ก ํ๋ ๊ณ ์์ค ์ํคํ ์ฒ ํจํด์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ค ํจ์๊ฐ ๊ธฐ์ ์ ์ผ๋ก SRP(์๋น์ค ์งํฅ ๊ท์น)๋ฅผ ๋ฐ๋ฅด๋๋ผ๋, ๊ทธ ์ฑ ์์ด ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์์ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ์๋ค๋ฉด ์ฌ์ ํ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ ์ ๋๊ตฌ๋ ์ถ์ํ ๊ณ์ธต์ ํ๋น์ฑ์ ํ๊ฐํ๋ ๋ฐ ์ค์ํ ์๋๋ ํฅํ ์ฉ๋๋ฅผ ํญ์ ์ ์ถํ ์๋ ์์ต๋๋ค. Strategy๋ Factory์ ๊ฐ์ ๋์์ธ ํจํด์ ๋จ์ํ ๊ท์น ์์ง์์๋ ๊ณผ๋ํ ์์ง๋์ด๋ง์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค. ๊ท์น ํ๋๊ณผ ์ฌ์ฉ์ ์ง์ ์ ์ฑ ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋์ง๋ง, ์ธ๊ฐ์ ํ๋จ์ ์ฌ์ ํ โโํ์์ ์ ๋๋ค. ์ ์ ๋ถ์์ ๊ฐ๋ ฅํ ๋ณด์กฐ ๋๊ตฌ์ผ ๋ฟ, ์ํคํ ์ฒ์ ์ฌ๊ณ ๋ฅผ ์์ ํ ๋์ฒดํ ์๋ ์์ต๋๋ค.
์ผ๋ฐ ์ฝ๋ ๋์์ ๊ทธ๊ฒ์ด ๋๋ฌ๋ด๋ ๊ฒ
์ฝ๋ ๋์๋ ๋ ์ฌ๊ฐํ ๊ตฌ์กฐ์ ๋๋ ์ค๊ณ ๋ฌธ์ ์ ์งํ์ ๋๋ค. ๋ฐ๋์ ๊ธฐ๋ฅ์ ์์์ํค๋ ๊ฒ์ ์๋์ง๋ง, ๋ชจ๋์ฑ, ๋จ์ผ ์ฑ ์, ์บก์ํ์ ๊ฐ์ ํต์ฌ ์ค๊ณ ์์น ์๋ฐ์ ๋ํ๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ๋์๋ฅผ ๊ฐ์งํ๋ ๋ฐ ํนํ ํจ๊ณผ์ ์ธ๋ฐ, ๋๋ถ๋ถ์ ๋์๋ ์ธก์ ๊ฐ๋ฅํ ํจํด, ๊ตฌ์กฐ์ ์งํ ๋๋ ๋ฐ๋ณต๋๋ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฝ๋ ๋์๋ฅผ ์ธ์ํ๋ ๊ฒ์ ์ํคํ ์ฒ ์นจ์์ ์ง๋จํ๊ณ , ๋ชฉํ ๋ฆฌํฉํ ๋ง์ ์ ๋ํ๊ณ , ์ค๊ณ ๋ฌด๊ฒฐ์ฑ์ ๋ณต์ํ๋ ๋ฐ ์ค์ํ ์ฒซ ๋จ๊ณ์ ๋๋ค.
์ ์ ๊ณ๊ธ๊ณผ SRP ์๋ฐ
๊ฐ ํด๋์ค๋ ๋๋ฌด ๋ง์ ์ฑ
์์ ์ฒ๋ฆฌํ๋ ๋ชจ๋๋ฆฌ์ ๊ตฌ์ฑ ์์์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ ๋ฉ์๋, ๊ณผ๋ํ ์ข
์์ฑ, ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๊ฐ์ ๊ด๋ จ ์๋ ๋ฐ์ดํฐ ํ๋๋ฅผ ํน์ง์ผ๋ก ํฉ๋๋ค. ์ด๋ฌํ ํด๋์ค๋ ํ์ ๊ฐ๋ ฅํ ๋ชจ๋์ ๊ฒฝ๊ณ๊ฐ ๋ถ์กฑํ๊ฑฐ๋ ์ค์ ๋ก์ง ํ๋ธ์ "์์ ์์ "์ด ๋ฐ๋ณต์ ์ผ๋ก ์ถ๊ฐ๋ ๋ ์์ฐ์ค๋ฝ๊ฒ ์ปค์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ค๊ณ ๊ด์ ์์ ๊ฐ ํด๋์ค๋ ๋จ์ผ ์ฑ
์ ์์น์ ์๋ฐํ๊ณ ์ฌ์ฌ์ฉ์ฑ, ํ
์คํธ ๊ฐ๋ฅ์ฑ, ํ์ฅ์ฑ์ ์ ํดํฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ฝ๋ ์ค ์(LOC), ๋ฉ์๋ ์, ์ํ ๋ณต์ก๋, ํฌ์ธ/ํฌ์์ ๊ด๊ณ์ ๊ฐ์ ์งํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํด๋์ค๋ฅผ ๊ฐ์งํฉ๋๋ค. ๋ฉ์๋ ์ด๋ฆ์ ์ฌ๋ฌ ๊ฐ์ ๊ด๋ จ ์๋ ๋์ฌ๊ฐ ํฌํจ๋ ํด๋์ค(์: validate, calculate, send, log๊ธ๋ ๋ฐ์ผ persistโ์ฑ
์ ๊ณผ๋ถํ์ ๋ช
๋ฐฑํ ์งํ์
๋๋ค. ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด, ๊ฐ ํด๋์ค๋ ์ํคํ
์ฒ ๋ณ๋ชฉ ํ์์ด ๋์ด ๋๋ฌด ๋ง์ ์ํ์ ๋์์ ์ถ์ ํ๊ฒ ๋์ด, ์ด๋ค ๋ณ๊ฒฝ์ด๋ ๊ด๋ฒ์ํ ์ํ์ ์ด๋ํฉ๋๋ค.
์ํ ์ข ์์ฑ ๋ฐ ๋ถ๋ํ ๋ชจ๋์ฑ
์ํ ์ข ์์ฑ์ ๋ ๊ฐ ์ด์์ ๋ชจ๋์ด ์ง๊ฐ์ ์ ์ผ๋ก ์๋ก ์์กดํ์ฌ ํ์ ๋ฃจํ๋ฅผ ํ์ฑํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ํ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ์์ผ ๊ธฐ๋ฅ ๋ถ๋ฆฌ, ๋ ๋ฆฝ์ ์ธ ํ ์คํธ ๋๋ ๋ฆฌํฉํ ๋ง์ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ๋ํ ๋ชจ๋ํ ๋ฐฐํฌ๋ฅผ ์ ํดํ๊ณ ์ข ์์ฑ ์ญ์ ์์น๊ณผ ์ ๊ฒฐํฉ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์๋ฐํฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ๊ฐ ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ์์ฑํ๊ณ ์ํ์ ๊ฐ์กฐํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ํจํค์ง ๊ฐ ๋ฐ ํด๋์ค ๊ฐ ์ํ์ ๊ฐ์งํ์ฌ ์ข ์์ฑ ํ๋ ฌ์ด๋ ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ์ ํตํด ์๊ฐํํ ์ ์์ต๋๋ค. ์ํ ์ข ์์ฑ์ ์ ์ํ ํ๋กํ ํ์ ์ ์ ์ค์ด๋ ์ ํธ๋ฆฌํฐ ํด๋์ค๊ฐ ์ฌ๋ฌ ๊ณ์ธต์์ ์ค์ฉ๋ ๋ ์์ฃผ ๋ฐ์ํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ณต์กํด์ง๋ฉด์ ๊ฐ๋ฐ์๋ ์ฌ์ํ ๋ณ๊ฒฝ ์ฌํญ์ด๋ผ๋ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํ๊ณ ์์ ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ํ์ ๋์ผ๋ฉด ์ ์ง ๊ด๋ฆฌ๊ฐ ํฅ์๋๊ณ ๋น๋๊ฐ ๊ฐ์ํ๋๋ฉฐ ์์คํ ์ด ๊น๋ํ ์ํคํ ์ฒ ๋ชฉํ์ ๋ง์ถฐ ์ ๋ ฌ๋ฉ๋๋ค.
๊ณผ๋ํ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก ๋ฐ ๊ธด๋ฐํ ๊ฒฐํฉ
ํนํ ๋ฐ๋ณต๋๋ ๋ฐ์ดํฐ ์ ํ์ด๋ ๊ด๋ จ ํ๋๊ฐ ์๋ ๊ธด ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ๊ฐ์ง ํจ์๋ ์์ฑ์๋ ๊ธด๋ฐ ๊ฒฐํฉ ๋๋ ์๋ชป๋ ์ถ์ํ๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ฌํ ๋ชฉ๋ก์ ํจ์๊ฐ ๋๋ฌด ๋ง์ ์์ ์ ์ํํ๋ ค๊ณ ํ๊ฑฐ๋ ์ธ๋ถ ์ํ์ ์ง๋์น๊ฒ ์์กดํ๋ค๋ ๊ฒ์ ์์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ํ ๊ฐ ๊ฐ์ฒด๋ ์ปจํ ์คํธ ์ปจํ ์ด๋์ ๋ ์ ์บก์ํ๋ ์ ์๋ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ํ๋ผ ์๋ ์์ต๋๋ค. ๊ธด ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ๋ ผ๋ฆฌ๋ฅผ ์ค๋ณต์ํค๊ณ ๊ฐ๋ ์ฑ์ ๋จ์ด๋จ๋ ค KISS ๋ฐ DRY ์์น์ ์๋ฐํฉ๋๋ค. ์ ์ ๋ถ์๊ธฐ๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋งค๊ฐ๋ณ์ ์๋ฅผ ์ด๊ณผํ๋ ๋ฉ์๋๋ฅผ ํ์ํ์ฌ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์์๊ฒ ์ธํฐํ์ด์ค๋ฅผ ๋จ์ํํ๋๋ก ๊ฒฝ๊ณ ํฉ๋๋ค. ๊ณ์ธตํ ์ํคํ ์ฒ์์ ๊ธด๋ฐ ๊ฒฐํฉ์ ์ ์์ค ๋ชจ๋๊ณผ ๊ณ ์์ค ๋ชจ๋ ๊ฐ์ ์ง์ ์ ์ธ ์ข ์์ฑ์ ํตํด ๋ํ๋๋ฉฐ, ์ด๋ ์ข ์์ฑ ์ญ์ ์์น์ ์๋ฐํฉ๋๋ค. ์ ์ ๋๊ตฌ๋ ์ฌ๋ฌ ๊ตฌ์ฒด์ ๊ตฌํ์ โโ์ฌ์ฉํ๊ฑฐ๋ ๊ด๋ จ ์๋ ์ฌ๋ฌ ๋ชจ๋์์ ๊ฐ์ ธ์ค๋ ํด๋์ค๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ ์์ง๋์ด๊ฐ ์ถ์ํ, ์ธํฐํ์ด์ค ๋๋ ์ ์ด ์ญ์ (IoC) ๋ฉ์ปค๋์ฆ์ ๋์ ํ์ฌ ๋ฆฌํฉํ ๋งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ถ์ ์ ํ ์น๋ฐ๊ฐ๊ณผ ๋ฐ๋ฉํ ๋ฅด ๋ฒ์น ์๋ฐ
๋ถ์ ์ ํ ์น๋ฐํจ์ ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๋ด๋ถ ๋์์ ์ง๋์น๊ฒ ์ต์ํด์ ธ์, ๊ฐ์ธ ํ๋์ ์ ๊ทผํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๊ตฌ์กฐ ๊น์์ด ๋ฉ์๋ ํธ์ถ์ ์ฒด์ด๋ํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ ์บก์ํ๋ฅผ ์ง์ ์ ์ผ๋ก ์๋ฐํ๋ ๊ฒ์ด๋ฉฐ, ๋ฐ๋ฉํ
๋ฅด์ ๋ฒ์น์ ๊ณ ์ ์ ์ผ๋ก ์๋ฐํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ํธ์ถ์ order.getCustomer().getAddress().getZipCode() ๋ฉ์๋๊ฐ ์ฌ๋ฌ ๊ฐ์ฒด ๊ฒฝ๊ณ๋ฅผ ์ํํ๊ณ ์์์ ๋ํ๋
๋๋ค. ์ด๋ฌํ ์ฒด์ด๋์ ํธ์ถ์๋ฅผ ํผํธ์ถ์์ ์ ํํ ๊ตฌ์กฐ์ ์ฐ๊ฒฐํ์ฌ ์์ชฝ ๋ชจ๋ ๋ณ๊ฒฝ์ ์ทจ์ฝํ๊ฒ ๋ง๋ญ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ ์ด๋ฌํ ์ฒด์ด๋์ ๊ฐ์งํ๊ณ ์ ๊ทผ ๊น์ด๊ฐ ์๊ณ๊ฐ์ ์ด๊ณผํ ๋ ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ํ ํด๋์ค ๊ฐ ์ง์ ํ๋ ์ ๊ทผ์ด๋ ๊ณผ๋ํ ๊ฒํฐ ๋ฐ ์ธํฐ ์ฌ์ฉ์ ํ์ํ ์๋ ์์ต๋๋ค. ๋ถ์ ์ ํ ์น๋ฐ๋๋ฅผ ์ค์ด๋ฉด ๋ชจ๋์ฑ์ด ํฅ์๋๊ณ ๋ด๋ถ ๊ฐ์ฒด ์ค๊ณ๊ฐ ๋ณดํธ๋์ด ๊ตฌ์ฑ ์์๊ฐ ๋
๋ฆฝ์ ์ด๊ณ ์์ ํ๊ฒ ์งํํ ์ ์์ต๋๋ค.
์ค๋ณต๋ ๋ ผ๋ฆฌ์ ์ถ์ํ ๋ถ์กฑ
์ฝ๋ ์ค๋ณต์ ๊ฐ์ฅ ํํ ์ฝ๋ ์ ์ทจ ์ค ํ๋์ด๋ฉฐ, ์ค๊ณ ๋ฏธ์ํจ์ ๋ช ๋ฐฑํ ์งํ์ ๋๋ค. ์ค๋ณต๋ ๋ก์ง์ ํนํ ํ ์ธ์คํด์ค๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋ค๋ฅธ ์ธ์คํด์ค๋ ์ค๋๋ ์ํ๋ก ์ ์ง๋ ๋ ๋ถ์ผ์น์ ๋ฒ๊ทธ ๋ฐ์ ์ํ์ ๋์ ๋๋ค. ๋ํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋น๋ํ๊ฒ ๋ง๋ค๊ณ DRY ์์น์ ์ ํดํฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ ํํ ๋ณต์ ๋ณธ๊ณผ ๋๋ต์ ์ธ ๋ณต์ ๋ณธ ๋ชจ๋์ ๋ํ ํ์ง ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ฉ๋๋ค. ํ ํฐ ๋ถ์, AST ๋น๊ต ๋๋ ํ๊ฑฐํ๋ฆฐํ ์ ์ฌ์ฉํ์ฌ ํ์ผ, ํด๋์ค ๋๋ ์๋น์ค ์ ๋ฐ์ ๊ฑธ์ณ ๋ก์ง ์ค๋ณต์ ์๋ณํฉ๋๋ค. ์ค๋ณต์ ์ข ์ข ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ์๋ฃจ์ , ๊ณต์ ์ ํธ๋ฆฌํฐ ๋ถ์กฑ ๋๋ ๊ธฐ์กด ๊ตฌ์ฑ ์์๋ฅผ ์ธ์งํ์ง ๋ชปํ๋ ํ์์ ๋ฐ์ํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ค๋ณต๋ ๋ก์ง์ ์ผ๊ด๋์ง ์์ ๋์, ๋ถ์ฐ๋ ๋น์ฆ๋์ค ๊ท์น, ๊ทธ๋ฆฌ๊ณ ๊ณผ๋ํ ์ ์ง ๊ด๋ฆฌ ๋น์ฉ์ผ๋ก ์ด์ด์ง๋๋ค. ์ด๋ฌํ ๋ก์ง์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ถ์ํ(ํฌํผ ๋ฉ์๋, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์๋น์ค)๋ก ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ DRY ์์น์ ๋ถํฉํ ๋ฟ๋ง ์๋๋ผ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ๋ฐ ๋ชจ๋ํ๋ฅผ ๊ฐํํฉ๋๋ค.
์ค๊ณ ์๋ฐ ์ฌํญ์ด ๋์ ๋์ง ์๋ ์ค์ ์๋๋ฆฌ์ค
์ํํธ์จ์ด ์ค๊ณ ์์น ์๋ฐ์ ์ถฉ๋์ด๋ ์ฌ๊ฐํ ์ค๋ฅ๋ก ๋๋ฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ์คํ๋ ค, ํนํ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ , ์ค๋ ์ง์๋๊ฑฐ๋, ์ฌ๋ฌ ํ์ผ๋ก ๊ตฌ์ฑ๋ ์ฝ๋๋ฒ ์ด์ค ๋ด์์๋ ๋์ ๋์ง ์๊ฒ ์จ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์๋ฐ์ ์ค์ฉ์ ์ธ ์ง๋ฆ๊ธธ, ์ด๋ฐํ ๋ง๊ฐ์ผ, ๋๋ ๋ถ๋ถ๋ช ํ ์ํคํ ์ฒ ๊ฒฝ๊ณ๋ฅผ ํตํด ์์ํ ๋์ ๋ฉ๋๋ค. ๊ฐ๋ณ ๊ฐ๋ฐ์๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ์ ํ ์ ์์ง๋ง, ์์คํ ์ ์ธ ์์ธ์ผ๋ก ์ธํด ์ค๊ณ ์ ํ๊ฐ ๊ฐ๊ณผ๋๊ธฐ ์ฝ์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ด๋ฌํ ํ๊ฒฝ์์ ํนํ ์ค์ํ๋ฐ, ๋ณ๊ฒฝ ๋น์ฉ์ ๊ฐ๋นํ ์ ์์ ๋๊น์ง ๋ฌปํ ์์ ํจํด์ ๋๋ฌ๋ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฐ๋๋ ์ผ ์์ด ์ฑ์ฅํ ๋ ๊ฑฐ์ ์์คํ
๋ง์ ๊ธฐ์ ์์คํ ์ ์ค๋๋ ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ผ๋์ ๋๊ณ ๊ตฌ์ถ๋์ง ์์์ต๋๋ค. 10๋ ์ ์ ์์ฑ๋ ์ฝ๋๋ ์ฌ์ ํ ์ด์ ์ค์ด๊ฑฐ๋ ๋ฆฌํฉํ ๋ง์ด๋ ๋์์ธ ์ฒดํฌ ์์ด ๋ฐ๋ณต์ ์ผ๋ก ํ์ฅ๋๊ณ ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์์๋ ๊ฑฐ๋ํ ๊ฐ ํด๋์ค, ๊น์ด ์ค์ฒฉ๋ ์กฐ๊ฑด ๋ ผ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๊ด๋ จ ์๋ ๋ชจ๋ ๊ฐ์ ๊ธด๋ฐํ ๊ฒฐํฉ์ ํํ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์คํ ์ ์ข ์ข ๋ฌธ์ํ๋ ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ์ด ๋ถ์กฑํ์ฌ ์์ง๋์ด๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ํ ๋์์ธ ๊ฒฝ๊ณ๋ฅผ ์ค์ํ๋์ง ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ๋ณต์ก์ฑ ์ง์ค ์ง์ , ์ข ์์ฑ ํด๋ฌ์คํฐ, ์ค๋ณต ๋ ผ๋ฆฌ๋ฅผ ํ๋ฉดํํ์ฌ ์ด๋ฌํ ์ด๋์ด ๋ถ๋ถ์ ๊ฐ์์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ํ์ด ๋ฆฌํฉํ ๋งํ ๋ถ๋ถ, ๊ธฐ๋ฅ์ ๊ฒฉ๋ฆฌํ ๋ถ๋ถ, ๊ทธ๋ฆฌ๊ณ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฅผ ์ผ๋์ ๋๊ณ ๊ตฌ์ถ๋์ง ์์๋ ์ฝ๋์ ๋ชจ๋์ฑ์ ์ ์ง์ ์ผ๋ก ๋ค์ ๋์ ํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
์ํคํ ์ฒ ๊ฐ๋ ์์ด ์ ์ํ ๊ธฐ๋ฅ ๊ฐ๋ฐ
๋น ๋ฅด๊ฒ ๋ณํํ๋ ๊ฐ๋ฐํ, ํนํ ์คํํธ์ ์ด๋ ์ ์์ผ ๊ธฐ๋ฐ ํ๊ฒฝ์์๋ ๊ธฐ๋ฅ์ ์ ์ํ๊ฒ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์๋ฐ ์์์ ์ถ์ํ ์ฐํ, switch ๋ฌธ ์ถ๊ฐ, ํธ์๋ฅผ ์ํ ๊ณต์ ํด๋์ค ์์ ๊ณผ ๊ฐ์ ๊ฒฐ์ ์ ๋ฌดํดํด ๋ณด์ ๋๋ค. ํ์ง๋ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ๊ฒฐ์ ์ ์ค๊ณ ๋ถ์ฑ๋ก ๋์ ๋ฉ๋๋ค. ์ํคํ ์ฒ ๊ฒํ ์์ํ, ๋ฌธ์ ๊ด๋ฆฌ, ๋๋ ์ง์์ ์ธ ์ค๊ณ ๊ฒ์ฆ ๋ฑ์ ์ ์ ํ ๊ฐ๋ ์ด ์๋ค๋ฉด ํ์ ์ผ๊ด์ฑ์ ์๊ฒ ๋ฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ํคํ ์ฒ ๊ฐ๋ ์ ๋๋ฆฌ ์ญํ ์ ํ์ฌ ํฉ์๋ ์์น์์ ๋ฒ์ด๋ ๊ฒฐ์ ์ ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ฆ๊ฐํ๋ ํด๋์ค ํฌ๊ธฐ, ์๋ก์ด ๋ชจ๋ ๊ฐ ์ข ์์ฑ ๋๋ ์ค๋ณต๋ ๋ก์ง์ ๊ฐ์กฐํจ์ผ๋ก์จ ํ์ ๊ฐ๋ฐ ์๋๋ฅผ ๋ฆ์ถ์ง ์๊ณ ๋ฐฉํฅ์ ์์ ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ป์ต๋๋ค.
๋ค์ค ํ ์ฝ๋๋ฒ ์ด์ค ๋ฐ ๋ถ๊ธฐ ํจํด
๋๊ท๋ชจ ์กฐ์ง์์๋ ์ฌ๋ฌ ํ์ด ๋์ผํ ์ฝ๋๋ฒ ์ด์ค ๋๋ ์ํธ ์์กด์ ์ธ ์์คํ ์์ ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ค์ ์ง์ค์ ์ค๊ณ ๊ฑฐ๋ฒ๋์ค๊ฐ ์์ผ๋ฉด ๊ฐ ํ์ ์์ฒด์ ์ธ ๊ท์น, ์ถ์ํ ๋ฐ ์ํคํ ์ฒ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ์ ์ํค๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ ์ผ๊ด๋์ง ์์ ๊ณ์ธตํ, ๋ฐ๋ณต๋๋ ๋ ผ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ํธํ๋์ง ์๋ ๋ชจ๋ ์ค๊ณ๋ก ์ด์ด์ง๋๋ค. ์์คํ ํ ๋ถ๋ถ์ ์ค๊ณ ์๋ฐ์ ํ์ด ํจํด์ ๋ณต์ฌํ๊ฑฐ๋ ํ์ฅ์ฑ์ ๊ณ ๋ คํ์ง ์์ ์ธํฐํ์ด์ค๋ฅผ ์์ ํจ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ถ๋ถ์ผ๋ก ํ์ฐ๋ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ ์ฅ์ ์ ๋ฐ์ ๊ณต์ ๋๋ ์ผ๋ จ์ ์ค๊ณ ๊ท์น์ ์ ์ฉํ์ฌ ์ผ๊ด์ฑ์ ๊ฐํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ญ ๋ช ์ ๊ธฐ์ฌ์๊ฐ ์ฐธ์ฌํ๋๋ผ๋ ์ธํฐํ์ด์ค ๊ฒฝ๊ณ, ์ถ์ํ ๊ณ์ธต ๋ฐ ๋ชจ๋ ์ข ์์ฑ์ด ๋์ผํ ๊ตฌ์กฐ์ ํจํด์ ๋ฐ๋ฅด๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ํ, ํ ํ์ ๊ฒฐ์ ์ด ๋ค๋ฅธ ํ์ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ ์๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ํก๋จ์ ๊ฐ์์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋์์ธ ๊ณ์ฝ์ ์ฌํ ์คํธํ์ง ์๊ณ ๋ฆฌํฉํ ๋งํ๊ธฐ
๋ฆฌํฉํ ๋ง์ ์ข ์ข ๋ช ๋ช ๊ฐ์ , ๋ฉ์๋ ์ฌ๊ตฌ์ฑ, ๋ ผ๋ฆฌ ๋จ์ํ ๋ฑ ์์ ํ ๊ธฐ์ ์ ์ธ ์์ ์ผ๋ก ์ฌ๊ฒจ์ง๋๋ค. ๊ทธ๋ฌ๋ ์ง์ ํ ์ํคํ ์ฒ ๋ฆฌํฉํ ๋ง์ ์ค๊ณ ๊ณ์ฝ, ์ฆ ๊ฐ ๋ชจ๋์ ๊ธฐ๋ฅ, ํต์ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ชจ๋์ด ๋ด๋นํ๋ ์ฑ ์์ ๋ํ ๋ช ํํ ๊ธฐ๋์น๋ฅผ ์ ์งํ๊ฑฐ๋ ์ฌ์ ์ํด์ผ ํฉ๋๋ค. ๋ง์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ ์ค๊ณ ์์น์ด ์ฌ์ ํ ์ค์๋๋์ง ๊ฒ์ฆํ์ง ์๊ณ ์ฑ๋ฅ์ด๋ ์ ์ง ๊ด๋ฆฌ ์ฉ์ด์ฑ์ ์ํด ๋ฆฌํฉํ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ์๋น์ค๋ฅผ ๋ณํฉํ๋ฉด ์ค๋ณต ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง๋ง ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐํ๊ฒ ๋ ์ ์์ต๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ๋ฆฌํฉํ ๋ง์ด ์ฝ๋ ์์๋ฟ ์๋๋ผ ์ค๊ณ ๋ฌด๊ฒฐ์ฑ์๋ ๋ถํฉํ๋์ง ํ์ธํฉ๋๋ค. ๋ชจ๋์ฑ์ด ์์ค๋๊ฑฐ๋, ๊ณ์ธต ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ์ถ์ํ ๊ฒฝ๊ณ๊ฐ ๋ชจํธํด์ง๋ ๊ฒฝ์ฐ๋ฅผ ํฌ์ฐฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ๋ ๊ณ์ธต์ ํ๋ฉด์ ์ธ ๊ตฌ์กฐ๋ฟ ์๋๋ผ ์์คํ ์ํคํ ์ฒ์ ๋ฐ์ ์ ๋ชฉํ๋ก ํ๋ ์ฅ๊ธฐ์ ์ธ ๋ฆฌํฉํ ๋ง์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋์์ธ ์ธ์ ์ ์ ์ฝ๋ ๋ถ์์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ๊ฐ๋ ฅํ์ง๋ง, ์ํํธ์จ์ด ์ค๊ณ ์์น์ ํจ๊ณผ์ ์ผ๋ก ์ ์ฉํ๋ ๋ฐ ์์ด ๋๊ตฌ์ ํจ๊ณผ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค ๋ด์์ ๊ตฌ์ฑ, ํตํฉ ๋ฐ ์ฌ์ฉ๋๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋จ์ํ ๋ฆด๋ฆฌ์ค๋ง๋ค ์ค์บ๋๋ฅผ ํ ๋ฒ๋ง ์คํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ์ผ๊ด๋ ์ค๊ณ ํผ๋๋ฐฑ์ ์ป๊ณ ์ํคํ ์ฒ ์นจ์์ ๋ฐฉ์งํ๋ ค๋ฉด ํ์ ์ ์ ๋ถ์์ ์์คํ ์ ํ์ง ์ธํ๋ผ์ ์ผ๋ถ๋ก ์ทจ๊ธํด์ผ ํฉ๋๋ค. ์ฆ, ๋๊ตฌ๋ฅผ ์ค๊ณ ์๋์ ๋ง๊ฒ ์กฐ์ ํ๊ณ , ๋๋ฉ์ธ๋ณ ๊ท์น์ ๋ฐ์ํ๋๋ก ๊ตฌ์ฑํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์์ฌ ๊ฒฐ์ ํ๋ก์ธ์ค์ ํตํฉํด์ผ ํฉ๋๋ค. ๋ค์์ ๊ฐ๋ฐํ์ด ์ ์ ์ฝ๋ ๋ถ์์ ์ํคํ ์ฒ ์ด์ ์ ๊ทน๋ํํ๋ ๋ฐ ๋์์ด ๋๋ ๊ฒ์ฆ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์๊ณ๊ฐ๊ณผ ํ์ง ๊ฒ์ดํธ๋ฅผ ์ ๋ต์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ
์ ์ ๋ถ์ ๋๊ตฌ๋ ์ข ์ข ์ต๋ ๋ฉ์๋ ํฌ๊ธฐ, ํ์ฉ ๊ฐ๋ฅํ ์ํ ๋ณต์ก๋, ์ข ์์ฑ ๊น์ด ๋๋ ํจ์๊ฐ ํ์ฉํ ์ ์๋ ๋งค๊ฐ๋ณ์ ์์ ๊ฐ์ ์๊ณ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ๋๋ ํ๋๊ทธ๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๋ฌํ ์๊ณ๊ฐ์ ๊ตฌ์ฑ ๊ฐ๋ฅํ๋ฉฐ ์์คํ ์ ์ํคํ ์ฒ ํ์ฉ ๋ฒ์๋ฅผ ๋ฐ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ดํฌ๋ก์๋น์ค ๋ฐฑ์๋๋ 5~6๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์์ ํจ์๋ฅผ ํ์ฉํ๋ ๋ฐ๋ฉด, ๋ชจ๋๋ฆฌ์ ํ๋ซํผ์ ๋ถ๋ฆฌ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋ ์๊ฒฉํ ์๊ณ๊ฐ์ ์๊ตฌํ ์ ์์ต๋๋ค. ํน์ ์๊ณ๊ฐ์ ์ด๊ณผํ๋ฉด ๋น๋๋ฅผ ์ฐจ๋จํ๋ ํ์ง ๊ฒ์ดํธ๋ ์๋ํ๋ ์ํ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ ๋ ธ์ด์ฆ๋ ์ฆ์ ์คํ์ง๋ก ์ด์ด์ง๋ ์ง๋์น๊ฒ ์ ํ์ ์ธ ๊ท์น์ ํผํด์ผ ํฉ๋๋ค. ๊ท ํ ์กํ ์ ๊ทผ ๋ฐฉ์์ ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๊ณ ๊ด์ฐฐ๋ ์ฝ๋ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์กฐ์ ํฉ๋๋ค. ์๊ณ๊ฐ์ ๋ฆฌํฉํ ๋ง ๋ก๋๋งต๊ณผ ํจ๊ป ๋ถ๊ธฐ๋ณ๋ก ๊ฒํ ํ์ฌ ๋ณํํ๋ ํ๋ก์ ํธ ๋ชฉํ์ ๋ถํฉํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋ชฉํ๋ ์๊ฒฉํ ์ ์ฑ ์งํ์ด ์๋๋ผ, ์ง์์ ์ธ ์ค๊ณ ๊ฐ์ ์ ์ํ ์ ๋ณด์ ๊ธฐ๋ฐํ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค.
ํ ๋๋ ๋๋ฉ์ธ ํ์ค์ ๋ง๊ฒ ์ฌ์ฉ์ ์ ์ ๊ท์น ์ธํธ ์ ์ฉ
๊ธฐ์ฑ ๊ท์น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ฉํ์ง๋ง, ํ์ ๋๋ฉ์ธ, ๋ ๊ฑฐ์ ์ ์ฝ ์กฐ๊ฑด ๋๋ ๊ธฐ์ ์ฒ ํ์ ์ ์ฒด ๋งฅ๋ฝ์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ๋๋ญ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ง์ ๊ท์น์ด ํ์์ ์ ๋๋ค. ๋๋ถ๋ถ์ ์ต์ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฌ์ฉ์๊ฐ ๊ตฌ์ฑ ํ์ผ์ด๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ์ ์ฑ ์ ์ ์ํ ์ ์๋๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ ํน์ ํจํค์ง์ ๋ชจ๋ ์๋น์ค๊ฐ ๊ณต์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๊ฑฐ๋ ์ ํธ๋ฆฌํฐ ํด๋์ค๊ฐ ๊ณต๊ฐ ์์ฑ์๋ฅผ ๊ฐ์ง ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ท์น์ ์ก๊ฐํ ์ํคํ ์ฒ, ๋ช ๋ น-์ฟผ๋ฆฌ ๋ถ๋ฆฌ ๋๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ชจ๋ํ์ ๊ฐ์ ํจํด์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ค๊ณ(DDD) ํ์ ์ข ์ข ์ํฐํฐ-์ง๊ณ ๊ฒฝ๊ณ๋ฅผ ์ค์ฌ์ผ๋ก ๊ท์น์ ๊ตฌ์ถํ์ฌ ๋๋ฉ์ธ ๋ก์ง๊ณผ ์ธํ๋ผ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ๊ท์น์ ์์ฑํ๋ ๋ฐ๋ ์ฝ๊ฐ์ ์ด๊ธฐ ํฌ์๊ฐ ํ์ํ ์ ์์ง๋ง, ๊ทธ ๊ฒฐ๊ณผ ํ ์ ์ฒด์ ์ฅ๊ธฐ์ ์ธ ์ค๊ณ ์ ๋ ฌ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ ์ ๋ถ์์ ๋จ์ํ ๊ณ ํ์ง ๋๊ตฌ๊ฐ ์๋๋ผ ์ํคํ ์ฒ ์ดํ๋ฅผ ๊ณต์ํํ๋ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ์ ๋์์ธ ๊ฒ์ฌ ํตํฉ
์ค๊ณ ๊ฒ์ฆ์ ์ ๋ขฐ์ฑ์ ํ๋ณดํ๋ ค๋ฉด ์๋ํ๋๊ณ ์ง์์ ์ผ๋ก ์ํ๋์ด์ผ ํฉ๋๋ค. ์ ์ ๋ถ์์ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ฉด ์๋ฐ ์ฌํญ์ ์กฐ๊ธฐ์, ์ด์์ ์ผ๋ก๋ ๋ฉ์ธ ๋ธ๋์น์ ๋ณํฉ๋๊ธฐ ์ ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๋๊ตฌ๋ Jenkins, GitHub Actions, GitLab CI, CircleCI ๋ฐ ๊ธฐํ ๋น๋ ํ๊ฒฝ์ ํตํฉํ ์ ์๋ CLI ์ง์ ๋๋ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ค์ํ ์ค๊ณ ๊ท์น ์๋ฐ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋น๋ ์คํจ๋ก ์ค์ ํ๊ฑฐ๋, ํ ๋ฆฌํ์คํธ์ ์์ธํ ํผ๋๋ฐฑ์ ์ฃผ์์ผ๋ก ๋ฌ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ํ ์ข ์์ฑ, ์ํํ ์ํคํ ์ฒ ์๋ฐ๊ณผ ๊ฐ์ ํ๋ ๋ธ๋ก์ปค์ ์คํ์ผ ์๋ฐ, ์ฌ์ํ ์ค๋ณต๊ณผ ๊ฐ์ ์ํํธ ๋ธ๋ก์ปค๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ๋ถ์ ๊ฐ๋ฐ์์ ์ ๋ขฐ๋ฅผ ์ ์งํ๊ณ ํ์ดํ๋ผ์ธ์ ๋ถํธํ ๋ณ๋ชฉ ํ์์ด ์๋ ์ ์ฉํ ๊ฐ์ด๋๋ก ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. CI ํตํฉ์ ๊ฐ์์ฑ์ ๋์ฌ์ค๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๊ด๋ จ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ณต๊ฐ๋์ด ์ฝ๋ ์ํ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ด ์๋ ๊ณต๋์ ์ฑ ์์ผ๋ก ๋ง๋ค์ด์ค๋๋ค.
์ ์ ๋ถ์๊ณผ ์ํคํ ์ฒ ๊ฒฐ์ ๊ธฐ๋ก(ADR) ํ์ด๋ง
์ํคํ ์ฒ ๊ฒฐ์ ๊ธฐ๋ก(ADR)์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ค์ํ ์ค๊ณ ๊ฒฐ์ ์ ๋ฌธ์ํํฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์๊ณผ ๊ฒฐํฉ๋ ๊ฒฝ์ฐ, ADR์ ํน์ ํจํด์ด๋ ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋ ์ด์ ์ ๋ํ ๋งฅ๋ฝ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ก์ ํธ์์ ๋ ๊ฑฐ์ ์ข ์์ฑ์ผ๋ก ์ธํด ์ผ๋ถ ๊ฐ ํด๋์ค(God Class)๋ฅผ ์ผ์์ ์ผ๋ก ํ์ฉํ๊ฑฐ๋, ํ๋ฌ๊ทธ์ธ ๊ธฐ๋ฐ ํ์ฅ์ฑ์ ์ง์ํ๊ธฐ ์ํด ์๋์ ์ผ๋ก ๊ฒฐํฉ์ ๋ฐ์ ์ํฌ ์ ์์ต๋๋ค. ์ ์ ๋๊ตฌ๋ ์ด๋ฌํ ํ์ฉ๋ ์์ญ์์ ์๋ฆผ์ ํ์ฉ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ฑฐ๋ ์ฐจ๋จํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ ์ค์ํ ๊ฒ์, ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ด์ ์ ๊ฒฐ์ ์ด ํ์ฌ ์ฝ๋ ๊ตฌ์กฐ์ ๋ ์ด์ ์ผ์นํ์ง ์๋ ์์ ์ ๊ฐ์กฐํ์ฌ ADR์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์์คํ ์ด ๊ณ์ธต์ ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋๋ก ์ค๊ณ๋์์ง๋ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์๋ฐ ์ฌํญ์ด ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ, ๊ณต์์ ์ธ ์ค๊ณ ์ฌํ๊ฐ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ดํ์ ์ ์ ์งํ์ ์ธ๊ฐ์ ์ถ๋ก ์ ์ฐ๊ฒฐํ์ฌ ๋ถ์์ ์ํคํ ์ฒ ์งํ์ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌ์ํต๋๋ค. ๊ฒฝ๊ณ , ๋์๋ณด๋ ๋๋ ๊ธฐ์ ์ํค์ ADR ๋งํฌ๋ฅผ ํฌํจํ๋ ํ์ ์๋ํ์ ์ํคํ ์ฒ ์๋ ๊ฐ์ ๋์ฑ ๊ฐ๋ ฅํ ์ฐ๊ณ์ฑ์ ๊ตฌ์ถํฉ๋๋ค.
๋์์ธ ์ ๋ ฌ์ ์ํ ์ฝ๋ ๊ฒํ ํผ๋๋ฐฑ ๋ฃจํ ํ์ฉ
๊ฐ๋ ฅํ ์ ์ ๋ถ์ ๊ท์น์ ์ ์ฉํ๋๋ผ๋ ๋ชจ๋ ์ค๊ณ ๋ฌธ์ ๋ฅผ ๊ธฐ๊ณ๊ฐ ๊ฐ์งํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ๋น์ฆ๋์ค ๋ก์ง ์ค์ฉ, ๋ถํ์ํ ์ถ์ํ, ์ค๋ณต ์๋ ๋ฑ ๋๋ฉ์ธ๋ณ ๋๋ ์ํฉ์ ๋ฏผ๊ฐํ ์๋ฐ ์ฌํญ์ ๋ฐ๊ฒฌํ๋ ๋ฐ ์์ด ์ฝ๋ ๊ฒํ ๋ ์ฌ์ ํ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ ๋ถ์์ ๋ ธ์ด์ฆ๋ฅผ ์ค์ด๊ณ ๊ตฌ์กฐ์ ํจํด์ ๋ถ๊ฐ์์ผ ๊ฒํ ์ ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ฒํ ์๋ ๋ ์ด์ ํ์, ์คํ์ผ ๋๋ ์ ์์ค ์ค๋ณต์ ์ง์คํ ํ์๊ฐ ์์ผ๋ฉฐ, ๋์ ์ํคํ ์ฒ ์๋์ ์์คํ ์ ๋ ฌ์ ์ง์คํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ๋ ผ์ ์ฃผ์ ๋ก๋ ํ์ฉ๋ ์ ์์ต๋๋ค. "์ด ๋ชจ๋์ ์ ์ ๋ชจ๋์ ์์กดํ๋๊ฐ? ์ด ๊ธฐ๋ฅ์ ์ ์ด๋ ๊ฒ ์ปค์ก๋๊ฐ?" ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํ ๋ฆฌํ์คํธ์ ํฌํจํ๋ฉด ๊ฒํ ์๋ ์ ์ฒด ์์คํ ๊ณผ ๊ด๋ จ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๋ ๋์ ์์ผ๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ํผ๋๋ฐฑ ๋ฃจํ๋ ์ค๊ณ ์์น์ ๋ํ ๊ณตํต๋ ์ดํด๋ฅผ ๋์ด๊ณ ์ค์ ์ง์ค์ ์ ์ด ์์ด ์ผ๊ด๋ ์ ์ฉ์ ์ด์งํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ์๋ฃจ์ : ๋ฐฉ๋ฒ SMART TS XL ๊ท๋ชจ์ ๋ฐ๋ฅธ ์ค๊ณ ๋ถ์ ์ง์
์ฝ๋์ ์ค๊ณ ์๋ฐ์ ๋จ์ผ ์ ์ฅ์ ๋ด์์๋ ๊ฐ์งํ๊ธฐ ์ด๋ ค์ธ ๋งํผ ๊น๋ค๋กญ์ต๋๋ค. ๋ ๊ฑฐ์ ๊ตฌ์ฑ ์์, ๋ถ์ฐ ์ํคํ ์ฒ, ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ๊ทธ๋ฆฌ๊ณ ์์ฒ ๊ฐ์ ์ํธ ์์กด์ ์ธ ๋ชจ๋๋ก ๊ตฌ์ฑ๋ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ํ์ฅ ์ ์ฉํ๋ฉด ์๋ ๊ฒ์ฌ๋ ๊ฒฉ๋ฆฌ๋ ์ ์ ๋ถ์์ ๋น ๋ฅด๊ฒ ์คํจํฉ๋๋ค. ๋ฐ๋ก ์ด ๋ถ๋ถ์ด SMART TS XL ํ์ ์ ์ธ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋จ์ํ ์ ์ ์ฝ๋ ์ค์บ๋๊ฐ ์๋, SMART TS XL ์ํํธ์จ์ด ๊ตฌ์กฐ, ๋ ผ๋ฆฌ, ํ๋ฆ์ ๋ํ ์์คํ ์ ์ฒด ๋ทฐ๋ฅผ ์ ๊ณตํ์ฌ ํ์ด ํ๋ซํผ๊ณผ ๊ธฐ์ ์คํ ์ ๋ฐ์์ ์ค๊ณ ์์น ์๋ฐ์ ํ์งํ๊ณ ํด๊ฒฐํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์์คํ ๊ฐ ์ฝ๋ ๊ตฌ์กฐ ๋ฐ ์ข ์์ฑ ์ดํด
SMART TS XL ๋ฉ์ธํ๋ ์(COBOL, PL/I, JCL), ๋ฏธ๋ํฐ์ด(Java, C#, PL/SQL), ๊ทธ๋ฆฌ๊ณ ์ต์ ์น ์๋น์ค(JavaScript, Python ๋ฑ)๋ฅผ ํฌํจํ ๋ชจ๋ ์ฝ๋ ์์ฐ์ ๋ํ ํตํฉ ๋ฉํ๋ฐ์ดํฐ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ถํฉ๋๋ค. ์ด ์ธ๋ฑ์ค๋ฅผ ํตํด ํ์ ๊ฐ๋ณ ํด๋์ค ๋ฐ ๋ฉ์๋๋ถํฐ ์์คํ ๊ฐ ์ข ์์ฑ๊น์ง ๋ค์ํ ์์ค์์ ์์คํ ์ํคํ ์ฒ๋ฅผ ์๊ฐํํ ์ ์์ต๋๋ค. ์ค๊ณ ์๋ฐ ์ฌํญ์ ๋ถ์ํ ๋ ์ด๋ฌํ ๊ฐ์์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Java ๋ง์ดํฌ๋ก์๋น์ค์ ์ ํธ๋ฆฌํฐ ํจ์๋ฅผ ์ฐธ์กฐํ๋ COBOL ํ๋ก๊ทธ๋จ์ God ํด๋์ค๋ ์์คํ ๊ฐ ๊ฒฐํฉ๋ ์งํ๋ฅผ ํตํด ํ๋ฉดํ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ํฐํ๋ผ์ด์ฆ ์ํคํ ํธ๋ ๋ก์ปฌ ๋์์ธ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ์ทจ์ฝ์ฑ์ ์ ๋ฐํ๋ ๋ถ์ฐ๋ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ ํ์ ํ ์ ์์ต๋๋ค.
๊ต์ฐจ ์ธ์ด ์ํคํ ์ฒ ๊ณ์ธต ๋งคํ
์ค ํ๋ SMART TS XL์ ๋ฐ์ด๋ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ์ ์ค๊ณ ๋ก์ง์ ์ฐ๊ฒฐํ๋ ๋ฅ๋ ฅ์ ๋๋ค. ๊ธฐ์กด์ ์ ์ ๋๊ตฌ๋ ์ฝ๋๋ฅผ ๋จ๋ ์ผ๋ก ๋ถ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์, ํ ์คํ์ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์คํ์ ๋์์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ํ์ ํ์ง ๋ชปํฉ๋๋ค. SMART TS XL ํ๋ซํผ ๊ฐ ์ ์ด ํ๋ฆ๊ณผ ๋ฐ์ดํฐ ์ฌ์ฉ์ ์ฐ๊ฒฐํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๊ณ ๊ฐ ๊ฒ์ฆ ๊ท์น์ด COBOL ๋ฐฐ์น ์์ ์์ ์์๋์ด ์ ์ฅ ํ๋ก์์ ๋ฅผ ๊ฑฐ์ณ JavaScript ํ๋ฐํธ์๋์ ๋๋ฌํ๋ ๊ณผ์ ์ ์ถ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ข ๋จ ๊ฐ ์ถ์ ์ฑ์ ํตํด ์ค๊ณ ํ๊ฐ์ ์ํธ์์ฉ ์์ค์ ์์ง๋ ฅ, ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ์ค์, ๊ทธ๋ฆฌ๊ณ ์ถ์ํ ๊ณ์ธต์ด ์ฌ๋ฌ ์คํ์ ๊ฑธ์ณ ์๋๋ผ๋ ์ผ๊ด๋๊ฒ ์ ์ฉ๋๋์ง ํ์ธํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์์ง๋ ฅ, ๊ณ์ธตํ ๋ฐ ๋ชจ๋ํ ์๋ฐ ์๊ฐํ
์ด ์ง๋, ์ข ์์ฑ ๋ค์ด์ด๊ทธ๋จ ๋ฐ ๋ณต์ก์ฑ ์ค๋ฒ๋ ์ด๋ฅผ ์ฌ์ฉํ์ฌ SMART TS XL ์ค๊ณ ์๊ณ๊ฐ์ ์ด๊ณผํ๊ฑฐ๋ ์ฑ๋ฅ ์ ํ ์งํ๋ฅผ ๋ณด์ด๋ ๋ชจ๋์ ๊ฐ์กฐ ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๋ ์์ ์ข ์์ฑ์ด ๋๋ฌด ๋ง์ ํจํค์ง(๋ฎ์ ๋ชจ๋์ฑ)๋ ํ๋ ์ ํ ์ด์ ์ฝ๋์ ์ฝํ ๋น์ฆ๋์ค ๋ก์ง(๊ด์ฌ ๋ถ๋ฆฌ ์๋ฐ)์ ์ฆ์ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๊ฐํ๋ ์ ์ ์ธ ๊ฒ์ด ์๋๋ผ ๊ด๋ จ ๊ตฌ์ฑ ์์, ๋น์ฆ๋์ค ๊ท์น ๋๋ ์ ์ด ํ๋ฆ ๋ถ๊ธฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ํ ์ ์๋๋ก ํฉ๋๋ค. ์ฝ๋๋ฅผ ์ค๋ณ๋ก ๊ฒ์ฌํ๋ ๋์ , ํ์ ์ํคํ ์ฒ ์ ๋ ฌ์ ์ ์ฒด์ ์ผ๋ก ํ๊ฐํ๊ณ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ๋ฆฌํฉํ ๋งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๊ฐ์ ๋จ์๋ ์ค๊ณ ๊ฒํ ์๋ ๋์์ด ๋๋ฉฐ, ๊ธฐ์ ๋ด๋น์๊ฐ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ์์ค์ ์ค๊ณ ๋ ผ์๋ฅผ ์งํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๋น์ฆ๋์ค ๊ท์น ์ค๋ณต ๋ฐ ๊ณ์ฝ ๋ถ์ผ์น ์๋ณ
๊ธฐ์ ํ๊ฒฝ์์ ๊ฐ์ฅ ๋ฏธ๋ฌํ๊ณ ๋น์ฉ์ด ๋ง์ด ๋๋ ์ค๊ณ ์๋ฐ ์ค ํ๋๋ ์์คํ ๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ผ๊ด์ฑ ์๋ ๋ณต์ ์ ๋๋ค. ์ฒญ๊ตฌ, ์ฃผ๋ฌธ ์ฒ๋ฆฌ ๋ฐ ๋ณด๊ณ ์์คํ ์์๋ ํ ์ธ ๊ณ์ฐ์ด ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๊ตฌํ๋ ์ ์์ผ๋ฉฐ, ์ด๋ DRY ์์น์ ์๋ฐํ๊ณ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. SMART TS XL ์ฝ๋๊ฐ ์๋ก ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑ๋์๋๋ผ๋ ์ ์ฅ์ ๊ฐ ๋ ผ๋ฆฌ ๋ธ๋ก์ ์๋ฏธ๋ก ์ ๋น๊ต๋ฅผ ํตํด ์ด๋ฅผ ๊ฐ์งํฉ๋๋ค. ๋ ผ๋ฆฌ์ ๋๋ฑ์ฑ๊ณผ ์ฐจ์ด์ฑ์ ํ์ ํจ์ผ๋ก์จ ์กฐ์ง์ด ์ค์ํ ๋น์ฆ๋์ค ํ๋ก์ธ์ค์ ๋ํ ์ค์์ ์ง์ค ์์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฒฌ๊ณ ํ ์ค๊ณ ์์น์ ํน์ง์ธ ์ถ์ํ, ์ฌ์ฌ์ฉ์ฑ ๋ฐ ์ถ์ ๊ฐ๋ฅํ ์์ฌ ๊ฒฐ์ ๋ ผ๋ฆฌ๊ฐ ๊ฐํ๋ฉ๋๋ค.
๋๋ฉ์ธ๋ณ ๋์์ธ ํจํด์ ๋ํ ์ฌ์ฉ์ ์ง์ ํ์ง ๊ท์น ์ง์
SMART TS XL ๊ธฐ๋ณธ ๊ท์น์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ๊ธฐ์ ์ ์ํคํ ์ฒ ํ๋ ์ด๋ถ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง์ถคํ ์ค๊ณ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ํ ์ ์์ต๋๋ค. ์ก๊ฐํ ์ํคํ ์ฒ, ๊น๋ํ ๋ ์ด์ด๋ง ๋๋ DDD ๊ฒฝ๊ณ ์ ์ฉ ์ฌ๋ถ์ ๊ด๊ณ์์ด SMART TS XL ๋ฉํ๋ฐ์ดํฐ ํจํด, ๋ช ๋ช ๊ท์น ๋๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐ ์ฌํญ์ ๊ฐ์งํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์ ์ง์ ์ ํตํด ์กฐ์ง์ ๋๋ฉ์ธ ์ง์์ ์ค๊ณ ๊ฒ์ฆ ์ํฌํ๋ก์ ์ง์ ์ ์ฉํ์ฌ ์ํฉ์ ๋ง๋ ์ํคํ ์ฒ ์ธ์ ๋ถ์ ํ๋ซํผ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๋์์ธ ๋งคํ์ ํตํ ๋ฆฌํฉํ ๋ง ๋ฐ ๋ฆฌํ๋ซํผ ์ด๋์ ํฐ๋ธ ์ง์
๊ธฐ์กด ์์คํ ์ ํ๋ํํ ๋๋ ์ค๊ณ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์กดํ๊ฑฐ๋ ์ฌํ๋ฆฝํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. SMART TS XL ์๋ ค์ง ์๋ฐ ์ฌํญ ๋ฐ ๊ตฌ์กฐ์ ์ทจ์ฝ์ ์ ํฌํจํ ์์คํ ์ค๊ณ์ ๋ํ ์ ํํ ๋งต์ ์ ๊ณตํ์ฌ ์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํฉ๋๋ค. ํ๋ซํผ ์ฌ๊ตฌ์ถ ๊ณผ์ ์์ ํ์ ๋ฆฌํฉํ ๋ง, ํตํฉ ๋๋ ํ๊ธฐํ ๋ชจ๋์ ํ์ ํ ์ ์์ต๋๋ค. SMART TS XL ๋จ์ผ ์ฑ ์์ด๋ ์ ์ด ์ญ์ ๊ณผ ๊ฐ์ ์ค๊ณ ์์น์ ์ ์งํ๋ฉด์ ๊ธฐ์กด ์คํ์์ ์ต์ ์คํ์ผ๋ก ๋ก์ง์ด ์ด๋ํ๋ ๊ณผ์ ์ ์ถ์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์์คํ ์งํ ๊ณผ์ ์์ ๊ฐ์ด๋์ด์ ๊ฒ์ฆ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค.
๋๊ธฐ์ ์ ์ค๊ณ ๋ฌด๊ฒฐ์ฑ์ ๋ํ ์ถ์ ์ฑ ๋ฐ ๊ฐ์ฌ ํ์ฑํ
๊ท์ ๋ ์ฐ์ ์ด๋ ๊ณ ๋๋ก ๊ตฌ์กฐํ๋ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ์ํคํ ์ฒ ์ ํฉ์ฑ์ ์ถ์ ๊ฐ๋ฅ์ฑ๊ณผ ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ์ด ์ ํ ์ฌํญ์ด ์๋๋๋ค. SMART TS XL ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์๋ฐ ์ฌํญ, ๋ฆฌํฉํ ๋ง ๊ฒฐ์ ์ฌํญ ๋ฐ ์์คํ ์์ค ์งํ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค๊ณ ์งํ์ ๋ํ ๊ฒ์ ๊ฐ๋ฅํ ์ด๋ ฅ์ ์์ฑํ์ฌ ๊ท์ ์ค์ ๊ฐ์ฌ, ๋ณ๊ฒฝ ์ํฅ ๋ถ์ ๋ฐ ์ ๋ต ๊ณํ์ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค๊ณ ์ํ๋ ๋ ์ด์ ์ฃผ๊ด์ ์ธ ์ธก์ ๊ธฐ์ค์ด ์๋๋ผ ์ํํธ์จ์ด ์ ๊ณต ์๋ช ์ฃผ๊ธฐ์ ํตํฉ๋ ์ถ์ ๋ฐ ๊ฒํ ๊ฐ๋ฅํ ์ํฐํฉํธ๋ก ์๋ฆฌ๋งค๊นํฉ๋๋ค.
๋์์ธ ๊ฐ๋์ธ์ผ๋ก์์ ์ ์ ๋ถ์
ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ โโ์๋์ ์ง์ ๊ฐ๋ฅ์ฑ ์ฌ์ด์์ ๊ท ํ์ ๋ง์ถฐ์ผ ํฉ๋๋ค. ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ฒ ์ ๊ณตํ๋ ๊ฒ์ ๋จ๊ธฐ์ ์ธ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋์ง๋ง, ์ํํธ์จ์ด ์ค๊ณ ์์น์ ๋ฌด์ํ๋ฉด ๊ฒฐ๊ตญ ์ทจ์ฝํ ์์คํ , ์ผ๊ด๋์ง ์์ ๋ก์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋น์ผ ๋ฆฌํฉํ ๋ง์ผ๋ก ์ด์ด์ง๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ด๋ฌํ ์ํคํ ์ฒ ๋ณํ์ ๋ํ ์ค์ํ ๋ฐฉ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ๋์ ๋์ง ์๋ ์๋ฐ ์ฌํญ๋ค์ ๋๋ฌ๋ด๊ณ , ์ด๋ฌํ ์๋ฐ ์ฌํญ๋ค์ ์๊ฐ์์ ๊ฑธ์ณ ๋์ ๋์ด ์ฝ๋๋ฒ ์ด์ค์ ๋ฌด๊ฒฐ์ฑ์ ์์ํ ์์์ํต๋๋ค.
ํ์ง๋ง ์ ์ ๋ถ์์ด ๋ง๋ฅ ํด๊ฒฐ์ฑ ์ ์๋๋๋ค. ๋น์ฆ๋์ค ์๋, ๋๋ฉ์ธ ๊ฒฝ๊ณ ๋๋ ์ ๋ต์ ์์ธ๋ฅผ ์์ ํ ์ดํดํ ์๋ ์์ต๋๋ค. ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ฉด ๊ท์จ์ ๊ฐํํ๊ณ , ํฉ์๋ ์ค๊ณ ๊ดํ์ ์ํ์ ์๋ํํ๋ฉฐ, ํ๊ณผ ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด์ฑ์ ํ๋ณดํ ์ ์์ต๋๋ค. ์ ์คํ ์๊ณ๊ฐ, ๋๋ฉ์ธ๋ณ ๊ท์น, ๊ทธ๋ฆฌ๊ณ CI/CD ์ํฌํ๋ก์์ ํตํฉ๊ณผ ๊ฒฐํฉํ๋ฉด ์ ์ ๋ถ์์ ๋จ์ํ ํ์ง ๊ด๋ฆฌ์ ์ฐจ์์ ๋์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ด์ฅ๋ ์ค๊ณ ๊ด๋ฆฌ์ ์ํธ์๊ฐ ๋ ์ ์์ต๋๋ค.
์์ญ ๋ ์ ๊ฑธ์น ์ฝ๋, ์์ญ ๊ฐ์ ์ธ์ด, ๊ทธ๋ฆฌ๊ณ ํ๋ซํผ ๊ฐ ์ํธ ์์ฉ์ผ๋ก ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๋ ๊ธฐ์ ๊ท๋ชจ์์๋ ๋ช ํ์ฑ์ ํ์์ฑ์ด ๋งค์ฐ ์ค์ํด์ง๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๊ฐ ์์ต๋๋ค. SMART TS XL ์ ์ ๋ถ์์ ๋ฒ์๋ฅผ ํ์ผ์์ ์์คํ ์ผ๋ก, ๊ธฐ๋ฅ์์ ๋น์ฆ๋์ค ๊ท์น์ผ๋ก ํ์ฅํ์ฌ ์๋ ๊ฒํ ๋ก๋ ๋ฐ๋ผ์ฌ ์ ์๋ ์์ค์ ๊ฐ์์ฑ์ ํ๋ณดํฉ๋๋ค. ์ด๋ฅผ ํตํด ์กฐ์ง์ ์ฝ๋ ์์ค์ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ์ค๊ณ ์์ค์ ์ฑ ์๊น์ง ๊ฐ์งํ๊ณ ์์คํ ์ ์ธ ๋ฌธ์ ๋ก ํ๋๋๊ธฐ ์ ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๊ฒฐ๊ตญ ์ ์ ์ฝ๋ ๋ถ์์ ๊ฐ๋ฐ์์ ์๋ชป๋ ์์ ์ ์ก์๋ด๋ ๊ฒ์ด ์๋๋๋ค. ํ์ด ์ ๋๋ก ๋, ํ๋ ฅ์ ์ด๊ณ , ์ผ๊ด์ ์ด๋ฉฐ, ์ค๋ ์ง์๋๋ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋๋ก ์ง์ํ๋ ๊ฒ์ ๋๋ค. ๋์์ธ ๋ฌด๊ฒฐ์ฑ์ด ์ธก์ ๊ฐ๋ฅํ๊ณ , ์ถ์ ๊ฐ๋ฅํ๋ฉฐ, ์๊ฐํ๋ ์์ฐ์ด ๋ ๋, ์ํคํ ์ฒ๋ ๋จ์ํ ์ฌ๋ผ์ด๋ ์๋ฃ๊ฐ ์๋๋ผ ์ฝ๋๋ฒ ์ด์ค์ ์ผ๋ถ๊ฐ ๋ฉ๋๋ค.