Week 12
: ๋ณต์ต, ๊ฐ์ฒด ์งํฅ, ๋์์ธ ํจํด ๋ฑ
โ๏ธ ์ด์ ๋ฉํ ๋ง ์ค๋ฐ์ ํฅํด ๋ฌ๋ ค๊ฐ๊ณ ์๋ค. ์ง๋ ๋ ๋ค์ ๋๋์ ๋ณด์์ ๋, ๋๋ ์ง๋์จ ์๊ฐ๋งํผ ์ฑ์ฅ ํ์๊น? ์์ฆ ๋ค์ ๋๋ฌป๋ ์๊ฐ์ด ๋ง์์ง๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณต๋ถ๋ฅผ ํ๋ฉด ํ ์๋ก, ๋ด๊ฐ ๊ณต๋ถํ ๋ด์ฉ์ ๋ค์ ์๊ธฐํ๋ฉฐ ์ ๋ฐ์ผ๋ก ๊บผ๋ผ ๋ ๋ง๋ค ์์ ๊ฐ์ด ๋จ์ด์ง๋ ๊ฒ์ ๋๋๋ค. (๋๋ ํฌ๋ฃจ๊ฑฐ ํจ๊ณผ์ธ๊ฐ?)
์ด ๋ฌด๊ธฐ๋ ฅ์ ์ด๊ฒจ๋ด๋ ค๊ณ ๋งค์ผ ๋ค์งํ์ง๋ง ์ฝ๊ฒ ์ด๊ฒจ๋ด์ง ๋ชปํ๋ ๋ด ์์ ์ด ํ์ฌํ๋ค๊ณ ์๊ฐํ์ง๋ง~ ๋ถ์ ์ ์ธ ์๊ฐ์ ํ์ง ์๊ธฐ๋ก ์ค๋ ์ ๋ถํฐ ์ฝ์ ํ์ผ๋๊น ํํฌ๋น ๋ฏธ๋๋ฅผ ์๊ฐํ๋ฉฐ ์ค๋ ๋๋ ์ด์ผ๊ธฐ๋ค์ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค!
1. Statement, SQL Injection
์ง๋ ์ฃผ์ฐจ์์ ํด๋น ์ฃผ์ ์ ๋ํด์ ๊ฐ๋จํ ์ ๋ฆฌํ์ง๋ง, SQL Injection ์ ๋ํ ๋ด์ฉ์ด ๊ณผ์ ๋ก ์ถ๊ฐ๋์ด์ ๋ค์ ํ ๋ฒ ์ดํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค.
Statement ๋ ๋ฌด์์ผ๊น? ์์ฒญ์ ํ์์ ์ํด ์์ฑ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ํ๊ณ ์ด๋ฅผ ์ปดํ์ผํ๊ณ , ์ปค๋ฅ์ ์ ํตํด ์ปดํ์ผ ๋ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์์ฒญํ ๋ค ์๋ต์ ๋ฐ์์ฃผ๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. (์ฆ, Statement ์ธํฐํ์ด์ค๋ Connection ๊ฐ์ฒด๋ฅผ ํตํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์งํฉ์ ์๋ฏธํ๋ค.)
์ด๋ฌํ Statement ๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ํ๊ณ ์ปดํ์ผ ํ๋๋ฐ, ์๋ฅผ ๋ค์ด ๋ก๊ทธ์ธ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด ์ฌ์ฉ์๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ URL ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ HTTP Body ์ ์ ๋ ฅ๊ฐ์ ๋ด์ ์์ฒญ ํ ๊ฒ์ด๋ค.
์ด ๋, ์ ์ก๋ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์ฟผ๋ฆฌ์ ๋ณดํต + ์ฐ์ฐ(์ปดํ์ผ ์, StringBuilder ๊ฐ + ์ฐ์ฐ ์ํ!)์ ์ํํ๋๋ฐ, Statement ๊ฐ์ฒด๋ ์ด๋ ๊ฒ ์์ฑ๋ ๋ฌธ์์ด์ 1) ์ฟผ๋ฆฌ๊ฐ ๋ง๋์ง ๋ถ์ํ๊ณ 2) ์ ์ ํ ์ฟผ๋ฆฌ๋ผ๋ฉด ์ปดํ์ผ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ง์ฝ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅ ํ ๋, ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์๋ฒ ์ฌ์ด๋์์ ์์ฑ๋ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ฟผ๋ฆฌ๊ฐ ํ๋์ ๋ฌธ์์ด๋ก ํฉ์ณ์ง๊ฒ ๋๊ณ , Statement ๊ฐ์ฒด๊ฐ ํด๋น ๋ฌธ์์ด์ ์ปดํ์ผํ๊ฒ ๋๊ณ , ์ด๋ฅผ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๊ฒ ์์ฒญ์ ํ๊ฒ ๋๋ค๋ฉด ์๋ฒ๋ ์๋ํ์ง ์๋ ์๋ต์ ๋ฐ๊ฒ ๋๋ ๋ณด์ ์ ํฌ๋ฆฌํฐ์ปฌํ ์ด์๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฅผ SQL Injection ์ด๋ผ๊ณ ํ๋๋ฐ, ์ธ๋ถ์์ ์์์ ์ฟผ๋ฆฌ๋ฅผ ์๋ฒ๋ก ์์ฒญํ๋ฏ๋ก์จ ์ปดํจํฐ ์์์ ๋ง๋น ์ํค๊ฑฐ๋ ๊ณผ๋ํ ์ฟผ๋ฆฌ ์์ฒญ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ ๋ฐ ํ ์ ์๋ค.
๋๋ฌธ์ ๊ผญ ํ์ํ์ง ์๋ ์ด์ PreparedStatement ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
2. ๊ฐ์ฒด ์งํฅ 4๋ ํน์ฑ
๊ฐ์ฒด ์งํฅ์ ์์, ๋คํ์ฑ, ์บก์ํ, ์ถ์ํ์ ํน์ง์ ๊ฐ์ง๋๋ฐ, ๋๋ ์ด๋ค ํน์ฑ์ด ์ด๋ ํ๋๋ผ๋ ๋น ์ง๋ฉด ๋๋จธ์ง ํน์ฑ๋ค์ด ์กด์ฌํ ์ด์ ๊ฐ ์๋ค๊ณ ์๊ฐ๋๋ค. ๊ทธ ๋งํผ ๊ฐ ํน์ฑ์ ๋๋ํ ์ฐ๊ด๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ฒ์๋ ๋ฐ๋ก ๋ฉํ ๋๊ป์ ๊น๊ฒ ์ง๋ฌธํด์ฃผ์์ง ์์์ง๋ง ๋๋ฆ๋๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ์์ฑํด๋ณด์ ํ๋ค.
๐ ์์ (ํ์ฅ๊ณผ ๊ตฌํ)
: Java ๋ฅผ ๊ณต๋ถํ๋ฉด ํ ์๋ก ์์์ด๋ผ๋ ๋ฒ์ญ์ ๊ฐ์ฒด ์งํฅ๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅธ ๊ฐ๋ ์ด ์๋๊น ํ๊ณ ์๊ฐํ๋ค.
์์์ด๋ผ ํจ์ ๋ถ๋ชจ์ ํน์ง์ด๋ ์ ์ ์, ์ฌ์ฐ ๋ฑ์ ๋ฌผ๋ ค ๋ฐ๋๋ค๋ ์๋ฏธ๋ก ์์์ ์๋๋ก ๋๋ฌผ๋ฆผ๋๋ ๊ฐ๋ ์ธ ๊ฒ์ ๋ฐํด, ๊ฐ์ฒด ์งํฅ์์์ ์์์ ๋ถ๋ชจ์ ํน์ง์ ๊ทธ๋๋ก ๋ด๋ ค ๋ฐ์ผ๋ฉด์ ์ํ๋ค๋ฉด ์์์ด ๋ถ๋ชจ๊ฐ ๋ ์ ์๋ค. (Wrapper)
์์์ ์ธ๊ธํ ์์์ ๊ฐ๋ ์์ ๋ถ๋ชจ์ ์์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ดค์ ๋, ๋๋ ์ฐ๋ฆฌ ์๋ฒ์ง๊ฐ ๋ ์ ์์๊น? ๋ฌผ๋ก ์์์ ๋ถ๋ชจ์ ๊ฑฐ์ธ์ด๋ผ๋ ๋ง์ด ์๊ธฐ๋ ํ์ง๋ง ๋ณธ์ง์ ์ผ๋ก ๋๋ ๋๊ณ ๋ถ๋ชจ๋ ๋ถ๋ชจ๋ค. ๊ทธ๋์ ๋ด๊ฐ ์๋ฌด๋ฆฌ ์ฐ๋ฆฌ ์๋ฒ์ง๋ ๋๊ฐ์ด ์๊ธฐ๊ณ ํ๋ํ๋ค๊ณ ํด๋ ๋๊ตฌ๋ ์ง ๋๋ผ๋ ๊ฒ์ ์ ์ ์์ ๊ฒ์ด๋ค.
๊ฐ์ฒด ์งํฅ์์์ ์์์ ๋ค๋ฅด๋ค. ํ์ ํด๋์ค๋ ์์ ํด๋์ค๋ก ๊ฐ์ธ์ง ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ชจ๋ฅด๋ ์ฌ๋์ด ์์ ๋ค์ฌ๋ค ๋ณด๋ฉด ์์ ํด๋์ค๋ก ์ธ์๋๋ค. ์ด๋ฌํ ๊ฐ์ฒด ์งํฅ์ ์์ ๊ฐ๋ ์ ํ์ค๋ก ๊ฐ์ ธ์์ ๋์ ํด๋ณธ๋ค๋ฉด ๋ ผ๋ฆฌ์ ์ด๊ธ๋๋ค. ์ ๊ทธ๋ด๊น?
๊ทธ๊ฒ์ ์์์ ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ธ๋ฐ, ํ์ค์์์ ์์์ ๊ด๊ณ๋๋ฅผ ๋ํ๋ด๊ณ , ๊ฐ์ฒด ์งํฅ์์์ ์์์ ๋ถ๋ฅ๋๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฒ์ ํด๋์ค์ ๊ฐ์ฒด์ ์ฐจ์ด์ ๋ํด์ ๊ณต๋ถ ํ ๋๋ฅผ ์๊ฐํด๋ณด์. ํด๋์ค๋ ๊ฐ์ฒด๋ค์ ์ ์ํ ์คํ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ฆ, ์ฌ๋ฌ ์นดํ ๊ณ ๋ฆฌ ์ค ํ๋ ์ธ ๊ฒ์ด๋ค. (ํด๋์ค๋ฅผ ์ฌ์ ์์ ์ฐพ์๋ณด๋ฉด ๋ถ๋ฅ๋ผ๊ณ ๋์ค๊ธฐ๋ ํ๋ค.)
๊ด๊ณ๋์์์ ๋๋ฅผ ์๋ฒ์ง๋ผ๊ณ ํ๋ค๋ฉด ๋ ผ๋ฆฌ์ ์ด๊ธ๋์ง๋ง, ๋ถ๋ฅ๋์์ ์ฌ๋์ ๋๋ฌผ์ด๋ผ๊ณ ํ๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ด๊ธ๋์ง ์๋๋ค.
์ฆ, ๊ฐ์ฒด ์งํฅ์ ์์์ ์ด๋ฌํ ๋ถ๋ฅ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋น ํด๋์ค๊ฐ ์ด๋ค ์์ ์นดํ ๊ณ ๋ฆฌ(ํด๋์ค)๋ฅผ ํ์ฅ(extends)ํ๋์ง, ๊ตฌํ(implments) ํ๋์ง๋ฅผ ์๋ฏธํ๋ค. ๋๋ฌธ์ ๋ง์ ์์์ด๋ ๊ธ์์ ์ธ๊ธ๋์ง๋ง ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ ํ๋ก๊ทธ๋จ ์ค๊ณ ๋จ๊ณ์์ ๊ด์ ์ ๊ฐ์ฒด์ ๋์ง ๋ง๋ผ๊ณ ํ๋ ๊ฒ์ด ๊ฒฐ๊ตญ ๊ฐ์ฒด์ ๊ด์ ์ ๋๋ค๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ถ๋ฅ๋๊ฐ ์๋ ๊ด๊ณ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋ฅผ ํ ๊ฐ๋ฅ์ฑ์ด ์๊ธธ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฐ์ฒด ์งํฅ์ ํน์ฑ๊ณผ ์์น์ ์ด๊ธ๋๋ ๊ฒ์ด๊ธฐ๋ ํ์ง๋ง ๊ทธ ๋งํผ ์ ์ง๋ณด์๋ ์ด๋ ค์์ง๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ๋คํ์ฑ
: ์์์ ์ค๋ช ํ ์์์์ ํ์ ํด๋์ค์ ๊ตฌํ์ฒด๋ ์์ ํด๋์ค๋ก ์ธ์ ๋ ์ ์๋ค๊ณ ํ๋ค. ์ด๋ ๊ฒ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ง ํ์ ์ผ๋ก ๋ณ๊ฒฝ ๋์ด๋ ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ๊ฐ์ง ํ์ ์ ๊ฐ์ง ์ ์๋ ํน์ง์ ๋คํ์ฑ์ด๋ผ๊ณ ํ๋ค. ์ด๋ฌํ ๋คํ์ฑ์ Java ์์ ๊ฐ์ฒด์๋ง ๊ตญํ๋๋ ๊ฒ์ด ์๋๋ค.
์์ ๊ฐ๋ ์ ์ํด์ ์์ ํด๋์ค๋ฅผ ํ์ฅํ๊ฑฐ๋ ๊ตฌํํ๊ณ ์๋ ํด๋์ค๊ฐ ํ๋ ์๋ค๊ณ ๊ฐ์ ํ์. ํด๋น ํด๋์ค๋ ์์ ํด๋์ค์์ ์ ์ํ๊ฑฐ๋ ๋ช ์ธํ ๋ฉ์๋, ๋ฉค๋ฒ ํ๋๋ค์ ์ฌ์ ์ ํ๊ฑฐ๋ ์๋กญ๊ฒ ๊ตฌํ ํ ์ ์๋ค.
์ด๋ ๊ฒ ์ด๋ฏธ ์ ์๋ ๋ฉ์๋, ๋ฉค๋ฒ ํ๋๋ค์ ์ฌ์ ์ํ๊ฑฐ๋ ์๋กญ๊ฒ ๊ตฌํํ๋ ๊ฒ ๋ํ ๋คํ์ฑ์ ํน์ง์ ๊ฐ์ง๋๋ฐ, ์์ ํด๋์ค์์ ์ ์ํ ๋ด์ฉ๋ค์ด ์์์ ์ํด ๋ค๋ฅธ ๋ด์ฉ์ผ๋ก ๊ต์ฒด ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ์ด๋ผ๊ณ ํ๋ค.
์ค๋ฒ๋ก๋ฉ์ด๋ผ๋ ๊ฒ์ ๋ฌด์์ผ๊น? ํด๋์ค ๋ด๋ถ์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ช ์ธ๊ฐ ๋ค๋ฅธ ๋ฉ์๋๋ค์ ์ฌ๋ฌ๊ฐ์ง ๋ง๋ค ์ ์๋ค. ์ด ๋ํ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ฉ์๋๊ฐ ๋ค๋ฅธ ํ์์ผ๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฉ์๋๊ฐ ๋ค๋ฅธ ๋ช ์ธ์ ๋ฉ์๋๋ก ๊ต์ฒด๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋คํ์ฑ์ ํน์ง์ ๊ฐ์ง๋ค.
์ด์ฒ๋ผ ๋คํ์ฑ์ ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค์ํ ํ์ ์ผ๋ก ์ ์ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ ์ ์ ์ฐํ๊ฒ ์ ์ ํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๋ค.(ํ์ฅ์ฑ)
๐ ์บก์ํ
: ์์๊ณผ ๋คํ์ฑ์ ํน์ง์ ๊ฐ์ง๊ณ ์ค๊ณํ๊ฒ ๋๋ค๋ฉด ๊ฒฐ๊ตญ ๋ถ๋ฅ๋ ๊ฐ๋ ์ ์ํด์ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ฒ ๋๋๋ฐ, ์ด๋ฌํ ๊ณ์ธต ๊ตฌ์กฐ๋ ํ์ ํด๋์ค์ ์ ๊ทผํ๊ธฐ ์ํด ์์ ํด๋์ค๋ฅผ ์๊ณ ์์ด์ผ ํ๋ค๋ ์ ์ ๊ฐ ํ์ํ๋ค. ์ด ๋ง์ ์ฐธ์กฐ ๋ณ์์ ํ์ ์ ์์ ํด๋์ค์ด๋ฉด์ ๊ตฌํ์ฒด๋ ํ์ ํด๋์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ ๋๋ฅผ ์๋ฏธํ๋๋ฐ, ์ฐธ์กฐ ๋ณ์์ ํ์ ์ด ๊ตฌํ์ฒด ํด๋์ค๋ก ์ ์๋์ด ์๋ค๋ฉด ๊ด๊ณ ์๋ค.
ํ์ง๋ง ๋คํ์ฑ์์ ์ป์ ์ ์๋ ํ์ฅ์ฑ์ ์ฅ์ ์ ์ ๊ทน ํ์ฉํ๊ธฐ ์ํด์ ๊ฒฐ๊ตญ ์ฐธ์กฐ ๋ณ์์ ํ์ ์ ์์ ํด๋์ค๋ก ์ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ด๋ ๊ฒ ์์ ํด๋์ค๋ก ์ ์๋ ์ฐธ์กฐ ๋ณ์๋ ํ์ ํด๋์ค๊ฐ ์ค์ง์ ์ธ ๊ตฌํ์ฒด์์๋ ๋ถ๊ตฌํ๊ณ ํ์ ํด๋์ค์์๋ง ์ ์๋ ํ๋๋ ๋ฉ์๋๋ ์ ๊ทผํ์ง ๋ชปํ๋ค.
์ด์ฒ๋ผ ํ์ ํด๋์ค ๊ตฌํ์ฒด๋ฅผ ์์ ํด๋์ค ํ์ ์ผ๋ก ๊ฐ์ธ๊ณ ์๋ ํํ๋ฅผ ์บก์ํ๋ผ๊ณ ํ๋๋ฐ, ์บก์ํ๋ ๋คํ์ฑ, ์์๊ณผ ๋ง๋ฌผ๋ ค์ ์์ฐ์ค๋ฝ๊ฒ ํ์ ํด๋์ค ๋ด๋ถ๋ฅผ ์๋ํ๊ณ ์ฝ๊ฒ ์ ๊ทผ ํ ์ ์๋๋ก ํ๋ ํน์ง์ ๊ฐ์ง๋ค. ๋๋ฌธ์ ํ์ ํด๋์ค๋ก ๊ตฌํ๋ ์์ ํด๋์ค ํ์ ์ ๊ฐ์ง๋ ์ฐธ์กฐ ๋ณ์์์ ํ์ ํด๋์ค์ ์ง์ญ์ ์ธ ํ๋๋ ๋ฉ์๋์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์บ์คํ ์ ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค. ์ด์ Java ๋ instanceof ํค์๋๋ฅผ ํตํด ํด๋น ์ฐธ์กฐ ๋ณ์๊ฐ ํน์ ํด๋์ค์ ํ์ ๊ณผ ๋ง๋์ง ํ์ธํ๊ณ , ์ด๋ฅผ ํ์ ํด๋์ค์ ๋ง๊ฒ ์บ์คํ ํ์ฌ ์ง์ญ์ ํ๋์ ๋ฉ์๋๋ฅผ ์ฌ์ฉ ํ ์ ์๋ค.
๐ ์ถ์ํ
: ์ฌ๋ฌ ํด๋์ค๋ค์ด ๊ฐ์ง๋ ๊ณตํต์ ์ธ ํน์ฑ๊ณผ ์์๋ค์ ํ๋์ ์ธํฐํ์ด์ค ํน์ ์ถ์ ํด๋์ค์ ๋ช ์ธํ๊ณ , ์ด๋ฌํ ์ธํฐํ์ด์ค, ์ถ์ ํด๋์ค์ ๋ช ์ธ๋ ํน์ฑ๊ณผ ์์๊ฐ ํ์ํ ํด๋์ค๋ค์ด ์ด๋ฅผ ํ์ฅ, ๊ตฌํํ๋๋ก ํ๋ ๊ฒ์ ์ถ์ํ๋ผ๊ณ ํ๋ค. ์ฆ, ๊ณตํต ๋ถ๋ชจ๋ ๋ถ๋ช ํ๋ฐ ๊ฐ ๋ถ๋ฅ(ํด๋์ค) ๋ณ๋ก ๊ณตํต ๋ถ๋ชจ๊น์ง ๋์ถํ๋ ๊ณผ์ ์ด ๋ค๋ฅผ ๋ ์ด๋ฌํ ์ถ์ํ๋ฅผ ํตํด์ ๊ฐ๊ฐ์ ํด๋์ค๋ค์ ์์ ์ ๋ฐฉ์์ผ๋ก ํน์ฑ๊ณผ ์์๋ค์ ์ ์ํ ์ ์๊ฒ ๋๋ค.
์ถ์ํ๋ฅผ ์ ๊ทน ํ์ฉํ๋ค๋ฉด, ์บก์ํ๋ ๋คํ์ฑ์ ํน์ง๊ณผ ๋ง๋ฌผ๋ ค์ ํ์ ํด๋์ค๋ก ๊ตฌํ๋ ์์ ํด๋์ค์ ํ์ ์ ๊ฐ์ง๋ ์ฐธ์กฐ ๋ณ์(์บก์ํ)๋ ๊ตฌํ์ฒด๊ฐ ๋ณ๊ฒฝ๋์ด๋(๋คํ์ฑ) ์ธ์ ๋ ๊ฐ์ ๋ฉ์๋๋ฅผ ํธ์ถ ํ ์ ์๊ฒ ๋๋ค.
3. ๊ฐ์ฒด ์งํฅ 5๋ ์์น
๊ฐ์ฒด ์งํฅ 5๋ ์์น? ์์์ ์ ๋ฆฌํ ๊ฐ์ฒด ์งํฅ 4๋ ํน์ง๊ณผ ๋น์ทํ ๊ฒ ๊ฐ์๋ฐ ๋ญ๊ฐ ๋ค๋ฅธ๊ฑธ๊น?
๊ฐ์ฒด ์งํฅ์ 4๋ ํน์ง์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์งํฑํ๊ณ ์๋ ๊ทผ๋ณธ์ด๋ ๋ฟ๋ฆฌ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์งํฅ์ 4๋ ํน์ง์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์์ผ๋ฉด ์๋๋ ์กด์ฌ๋ค์ด๋ค. ํ์ง๋ง ๊ฐ์ฒด ์งํฅ 5๋ ์์น์ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ํ์ ๋ ํด๋น ์์น์ ๋ฐ๋ฅธ๋ค๋ฉด ์์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์ ํ์ฅ์ฑ, ํ์ ๋ฑ ๋ง์ ๋ถ๋ถ์์ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ถ๊ณ ์ฌํญ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
์ฆ, 4๋ ํน์ง ์ค ํ๋๋ผ๋ ๋น ์ง๋ค๋ฉด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํ ์ ์์ง๋ง 5๋ ์์น์ ๋ชจ๋ ๋ฐ๋ฅด์ง ์๋๋ผ๋ ๋ฌธ์ ๊ฐ ์ด๋ ๊ฒ ์ง์ฌ์ง ํ๋ก๊ทธ๋จ์ด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ๊ณ ํ ์ ์๋ค. (ํ์ ์ฑํฅ์ ๋ฐ๋ผ ์ฝ๋ ์คํ์ผ์ด ๋ฌ๋ผ์ง๋ ๊ฒ ์ฒ๋ผ ๊ฐ๋ฐ ์คํ์ผ์ ์์น์ ์ ์ํ๋ค๊ณ ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.)
์ด๋ฌํ 5๋ ํน์ง์ SOLID ๋ผ๋ ๋ช ์นญ์ ๊ฐ์ง๋๋ฐ
- SRP (Single Responsibility Principle) : ๋จ์ผ ์ฑ ์ ์์น
- OCP (Open Close Principle) : ๊ฐ๋ฐฉ ํ์ ์์น
- LSP (Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น
- ISP (Interface Segregation Principle) : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- DIP (Dependency Inversion Principle) : ์์กด์ฑ ์ญ์ ์์น
์ ์์น์ ์ ๊ธ์๋ฅผ ๋ฐ์ ๋ง๋ค์ด์ก๋ค.
์ด๋ฌํ ์์น๋ค์ ์ด๋ค ๊ฒ์ ์๋ฏธํ ๊น?
๐ ๋จ์ผ ์ฑ ์ ์์น - SRP
: ๋ฌธ์ฅ ๊ทธ๋๋ก ํ๋์ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ง๋๋ก ์ค๊ณํ๋ ์์น์ ๋ปํ๋ค. ์ด์ ์ ๊ณต๋ถํ๋ ๋์ ํ์ด์ง๋ฅผ ์๋ตํ๊ธฐ ์ํด ํ๋์ JSP ์ด๋ ์๋ธ๋ฆฟ์์ DB ์ปค๋ฅ์ ์ค์ ์ด๋ ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ , ๋์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ํ๋ฉด์ผ๋ก ๋ง๋ค์ด ํด๋ผ์ด์ธํธ์์ ์๋ตํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
์ด๋ ํ๋์ ํด๋์ค์์ ์ฌ๋ฌ ์ญํ ์ ๋งก๊ฒ ๋๋ ๊ฒฝ์ฐ์ธ๋ฐ, ์ด๋ฌํ ๊ฒฝ์ฐ์ ์ฌ๋ฌ ์ญํ ์ ๋งก์ ํด๋๋ ์ฑ ์์ ๋ฌด๊ฒ๊ฐ ๋ฌด๊ฑฐ์์ง๊ฒ ๋๋ค. (๊ฒฐํฉ๋๊ฐ ๋๊ณ , ์์ง๋๋ ๋ฎ์์ง๋ค.) ์ด๋ฐ ๊ฒฝ์ฐ, ํด๋น ํด๋์ค๋ฅผ ์์กดํ๋ ํด๋์ค๋ค์ด ๋ง์์ง๊ฒ ๋๊ณ , ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๋ ํ์ฅ์์ ์ ์ฐํ์ง ๋ชปํ๋ค.
๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ๋์ ํด๋์ค๋ ํ๋์ ์ญํ ๋ง์ ๊ฐ์ง๋๋ก ํ๋ ์์น์ด ๋จ์ผ ์ฑ ์ ์์น์ด๋ค.
๐ ๊ฐ๋ฐฉ ํ์ ์์น - OCP
: ์์ ์ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์๋๋ก ์ค๊ณํ๋ ์์น์ ๋ปํ๋ค.
์ฌ๊ธฐ์ ํ์ฅ์ ์ฝ๊ฒ ์ดํด๊ฐ ๋๋๋ฐ, ๋ณ๊ฒฝ์ ๋ซํ์๋ค๋ ๊ฒ์ ์ด๋ค ๊ฒ์ ์๋ฏธํ๋๊ฑธ๊น?
๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ฅด๋ค๋ณด๋ฉด ๊ฒฐ๊ตญ ๊ฐ๊ฐ์ ํด๋์ค๋ ์ต์ํ์ ์ญํ ๋ง์ ๊ฐ์ง๊ฒ ๋๊ณ , ์ํผ ํด๋์ค(ํน์ ์ธํฐํ์ด์ค)๋ฅผ ํตํด์ ๊ฐ์์ ์ญํ ์ ์ ์กฐํฉํด ๋์ถ๋ ๊ฒฐ๊ณผ๋ฅผ ์ํผ ํด๋์ค๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต ํ ๊ฒ ์ด๋ค.
์ด ๋, ํด๋ผ์ด์ธํธ์์ ๊ธฐ์กด ์์ฒญ์ ๋ํ ์๊ตฌ์ฌํญ์ด ๋ณ๊ฒฝ ๋์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ํผ ํด๋์ค์์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์๋ตํ๋๋ก ์์ ํ๋ค๋ฉด ์ํผ ํด๋์ค๋ง ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์๋ ํด๋น ํด๋์ค ๋ด๋ถ์ ์๋ ๊ฐ๊ฐ์ ์ญํ ๋ค๊น์ง๋ ๋ณ๊ฒฝ์ ๋ํ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค. ์ด ๊ฒ์ด ๋ฐ๋ก ์์ ์ ๋ณ๊ฒฝ์ ๋ํด ๋ซํ ์๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
์ฆ, ๊ฐ๋ฐฉ ํ์ ์์น์ ์ํผํด๋์ค์ ํ์ ํด๋์ค ํ์ฅ์๋ ์ด๋ ค ์๊ณ , ์์ ์ ๋ด๋ถ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๊ต์ฒด๋๋ ๊ฒ์๋ ๋ซํ ์๊ฒ ๋๋ฉด์ ์ปดํ์ผ ํ์์์ ์๊ธธ ์ ์๋ ์์กด์ฑ์ ์ธํฐํ์ด์ค์๊ฒ ์ญ์ ์์ผ ๋ฐํ์์ ์์กด์ฑ์ ์์ํ์ฌ ์ฌ์ฌ์ฉ์ฑ์ด๋ ํ์ฅ์ฑ ์ ์ฐ์ฑ์ ์ํ ์์น์ด๋ค.
๐ ๋ฆฌ์ค์ฝํ ์นํ ์์น - LSP
: <์๋ฐ์ ์ > ์ฑ ์ ์ฝ์ผ๋ฉฐ ๊ณต๋ถํ๋ฉด์ Inheritance (์์)๊ณผ Composition (ํฉ์ฑ, ์กฐํฉ)์ ๋ํด ๊ณต๋ถํ๋ฉด์ ํจ๊ป ๊ณต๋ถํ๋ ๋ด์ฉ์ด๋ค. ๊ทธ ๋ ๊ณต๋ถํ๋ ๋ด์ฉ์ ๋ ์ฌ๋ ค๋ณด์. ๋ฆฌ์ค์ฝํ ์นํ ์์น์ด๋ ๋คํ์ฑ์ ํน์ง์ ๋ฐํ์ผ๋ก ์ด์ผ๊ธฐํ๊ณ ์๋ค. ์ฆ, ํ๋์ ๊ตฌํ์ฒด๋ ๋ค๋ฅธ ํ์ ์ผ๋ก ๊ต์ฒด ๋ ์ ์์ด์ผ ํ๋ค๋ ์์น์ธ๋ฐ, <์คํ๋ง ์ ๋ฌธ์ ์ํ ๊ฐ์ฒด ์งํฅ์ ์์น> ์ด๋ผ๋ ์ฑ ์์๋
- ํ์ ํด๋์ค is a kind of ์์ ํด๋์ค
- ๊ตฌํ์ฒด ํด๋์ค is able to ์ธํฐํ์ด์ค
๋ผ๋ ๋ฌธ์ฅ์ด ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์ ํฉํ ์์๋ผ๊ณ ๋งํ๊ณ ์๋๋ฐ, ์ด ๋ถ๋ถ์ ๋์ํ๋ค. ์๋ํ๋ฉด ์์์ 4๋ ํน์ง์ ๋ํด ์ด์ผ๊ธฐ ํ ๋๋, ๋จ์ํ is a ๊ด๊ณ์์๋ ๋คํ์ฑ์ ํน์ง์ ์ด๊ธ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ ํ ์ ์๋ค. ํ์ง๋ง is a kind of ๋ผ๋ ๊ด์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ๋๋ฉด ์์ฐ์ค๋ ๋ถ๋ฅ๋ก ์ ์๋๊ณ , ์ด๋ฌํ ๋ถ๋ฅ๋ ์์ ์ ์์ ๋ถ๋ฅ๋ก ๋์ฒ ๋ ์ ์๋ค.
์ฌ๋ฌ ์ผํ๋ชฐ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ํ๋ฒ ์ดํด๋ณด์.
๋๋ถ๋ฅ์ ์ ์์ ํ์ด ์๊ณ , ์ค๋ถ๋ฅ์ ๊ฐ์ ์ ํ, ๋ชจ๋ฐ์ผ๊ธฐ๊ธฐ ๋ฑ์ผ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ, ์ด ์ค์ ๋ชจ๋ฐ์ผ๊ธฐ๊ธฐ ์ค๋ถ๋ฅ์ ์๋ถ๋ฅ์๋ ํด๋์ ํ, ํํ๋ฆฟ PC, ์ค๋งํธ ์์น ๋ฑ์ด ์กด์ฌํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์ฌ๊ธฐ์ ์ง๊ณ ๋์ด๊ฐ์ผ ํ ์ ์ ํ์์ ์๋ถ๋ฅ๋ค์ ์ต์์์ ์์นํ ๋๋ถ๋ฅ๋ก๋ ๋ถ๋ฆด ์ ์๋ค. ์ฆ, ์ค๋งํธ ์์น๋ ๋ชจ๋ฐ์ผ๊ธฐ๊ธฐ์ ํ ์ข ๋ฅ์ด๊ธฐ๋ ํ๋ฉด์ ์ ์ ์ ํ์ ์ข ๋ฅ์ด๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ๊ฒ ํ์์ ํด๋์ค(๋ถ๋ฅ)๊ฐ ์์์ ํด๋์ค๋ก ๋์ฒ๋์ด๋ ๊ฐ์ฒด์ ๋์์ ์์ด ๋ฌธ์ ๊ฐ ์๋๋ก ํ๋ ์์น์ด ๋ฆฌ์ค์ฝํ ์นํ ์์น์ด๋ค.
๋ฐ๋ฉด ์ด๋ ๊ฒ ๋ถ๋ฅ๋์ ๊ด์ ์ด ์๋ ๊ด๊ณ๋์ ๊ด์ ์ผ๋ก ๋ฐ๋ผ ๋ดค์ ๋๋ฅผ ์ดํด๋ณด์.
4๋ ํน์ง์ ๋คํ์ฑ ํํธ์์ ๊ฐ๋ตํ ์ค๋ช ํ๋ ๋ด์ฉ์ธ๋ฐ, ์ต์์ ํด๋์ค์ ํ ์๋ฒ์ง๊ฐ ์์นํ๊ณ ๊ทธ์ ์์์ผ๋ก๋ ์๋ฒ์ง, ์๋ฒ์ง์ ์์์ผ๋ก๋ ๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํ์. ๊ทธ๋ ๋ค๋ฉด ๋คํ์ฑ์ ํน์ง์ ์ํด์ ์๋ฒ์ง ํฐ๋ธ = new ๋ธ() ์ด๋ฐ ์์ผ๋ก ํ์ ํด๋์ค ๊ตฌํ์ฒด๋ ์์ ํด๋์ค ํ์ ์ผ๋ก ๊ฐ์ธ์ง ์ ์๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ตฌ์กฐ์์ ๋ธ์ด ๊ณผ์ฐ ์๋ฒ์ง์ ์ญํ ์ ์ถฉ๋ถํ ํด๋ผ ์ ์์๊น? ํน์ ์ฐ๋ฆฌ๋ ํฐ ๋ธ์ ์๋ฒ์ง๋ผ๊ณ ๋ถ๋ฅผ ์ ์์๊น? ์ ๋ต์ '์๋์ค'์ด๋ค.
์ด ์ฒ๋ผ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์ ๋ฐ๋์ ๋, ํด๋น ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ์ดํด ํ ์ ์๊ฒ ๋๋ค.
๐ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น - ISP
: ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌํ๋ค. ๊ฒฐ๊ตญ ์ฃผ์ฒด์ ๊ด์ ์ด ๋ค๋ฅผ ๋ฟ, ๋จ์ผ ์ฑ ์ ์์น์ฒ๋ผ ํ๋์ ํด๋์ค์ ์ญํ ์ ๋ถ๋ฆฌ๋ถ์ฐ ํด์ฃผ๊ณ ์ ํ๋ ๊ฒ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค. ๋จ์ผ ์ฑ ์ ์์น๊ณผ ๋ค๋ฅธ ์ ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ฐ ์ญํ ์ ๋ถ๋ฆฌํ๊ณ , ํ์ํ ์ญํ ์ ํด๋์ค์์ ๊ตฌํํ์ฌ ์ฌ์ฉํ๋๋ก ํ๋ ์์น์ด๋ค. ํ์ง๋ง ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ๊ฐ์ฒด ์งํฅ ๋ ผ๋ฆฌ์์ ์กฐ๊ธ ์ด๊ธ๋๋ ๋ถ๋ถ์ด ์กด์ฌํ๋๋ฐ, ํ๋์ ํด๋์ค์์ ํ์๋ก ํ๋ ์ธํฐํ์ด์ค๋ค์ ๊ตฌํํ๋ค๊ณ ๊ฐ์ ํ์ ๋, ํด๋น ํด๋์ค์ ๊ฐ์ฒด๋ค์ ๊ฐ์์ ์์น์์ ์์ ์ด ๊ตฌํํ๊ณ ์๋ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ ํ ์ ์๊ฒ ๋๋ค.
์ฆ, ์ฌ๋ฌ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์๋ ํด๋์ค๋ ์ธํฐํ์ด์ค์ ์ํด์ ์ฌ๋ฌ ๊ฐ์ง ์ญํ ์ ๊ฐ์ง๊ฒ ๋๋๋ฐ, ๊ฒฐ๊ตญ ์ด๋ฌํ ํด๋์ค๊ฐ ์ธ์คํด์คํ ๋๋ฉด ์ญํ ์ ๋ง๋ ๋ฉ์๋๋ฅผ ์ ์ธํ ํ์ฌ ์ญํ ์์๋ ์ธ๋ชจ ์๋ ๋ฉ์๋๋ฅผ ํธ์ถ ํ ์ ์๋ ์ํฉ์ด ๋ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ถ์ฅํ๋ ์์น์ ์๋๋ผ๊ณ ํ๋ค.
๐ ์์กด์ฑ ์ญ์ ์์น - DIP
: ๊ณ ์์ค์ ๋ชจ๋์ด ์ ์์ค ๋ชจ๋์ ๊ตฌํ์ฒด์ ์์กดํด์๋ ์๋๋ฉฐ ์ ์์ค ๋ชจ๋์ ๊ตฌํ์ฒด๊ฐ ์ถ์ํ๋ ๊ณ ์์ค ๋ชจ๋์ ์์กดํด์ผ ํ๋ค๋ ์์น์ด๋ค. ์ฌ๊ธฐ์ ๊ณ ์์ค ๋ชจ๋์ด๋ ์ด๋ ํ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๋ฉฐ, ์ด๋ฌํ ์ธํฐํ์ด์ค์ ์ค์ง์ ์ธ ๊ตฌํ์ฒด๋ฅผ ์ ์์ค ๋ชจ๋์ด๋ผ๊ณ ํ๋๋ฐ , ๋ง์ฝ ๊ตฌํ์ฒด์ ์ง์ ์ ์ผ๋ก ์์กดํ๊ฒ ๋๋ค๋ฉด ์ถํ์ ๋ค๋ฅธ ๊ตฌํ์ฒด๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ์์กดํ๊ณ ์๋ ๊ฐ์ฒด์ ์ฝ๋๋ค์ ๋ณ๊ฒฝ๋๋ ๊ตฌํ์ฒด(์ ์์ค ๋ชจ๋)์ ์ํฅ์ ๋ฐ์ ์ ๋ฐ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ค๋ฉด ์ ์ง๋ณด์๋ ์ ์ฐ์ฑ ๋ฑ ๋ง์ ๋ถ๋ถ์์ ํจ๊ณผ์ ์ด์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ถ์ํํ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ค์ง์ ๊ตฌํ์ฒด๋ค์ ์์กด์ฑ์ ์ฃผ์ ๋ฐ๋๋ค๋ฉด ์ธํฐํ์ด์ค์ ์์กด ๊ด๊ณ๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ ์ํฅ์ ๋ฐ์ง ์์ ๋ณ๋์ ์์ ์ ๊ฑฐ์น ํ์ ์์ด ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
๐ฅ ๋์ ์ธ์ด, ์ ์ ์ธ์ด, ๋ ํ์ดํ
๐ฅ Stack Frame, Java Capturing
๐ฅ Message Queue