2021-03-24(Wed)
ํญ๋ชฉ | ๋ด์ฉ |
ํ์ต ๋ ์ง | 2021-03-24(์) |
ํ์ต ์๊ฐ | 11:00~23:00 |
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์ | TDD, ์คํ๋ง๋ถํธ |
ํ์ต ๋ชฉํ | TDD์ ์คํ๋ง๋ถํธ๋ฅผ ํ์ตํ๋ค. |
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ | - |
์์ธ ํ์ต ๋ด์ฉ
TDD๊ฐ ์คํจํ๋ ์ด์ - by ์ด๊ท์๋
ํ์ด ์๋ ๊ฐ์ธ์ด ์คํจํ๋ ์ด์ ๋ถํฐ ์ดํด๋ณด์.
'๋น์ ์ ์ด๋ ๊ฒ ํ์ง ์๋๋ค.'
Science vs Engineering. ๊ฐ๋ฐ์๋ ํ์์ ๊ฐ๊น๋ค. ์ ์ฝ๋ ์์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํ๋ค. TDD๊ฐ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ด ๋๋ค๋ฉด ๋์ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ ํ์ง ์๋๋ค. ์ด๋ ๊ฒ ์ค์ฉ์ ์ธ ํ๋จ์ ํด์ผํ๋ค.
๊ทธ๋ผ ์ธ์ TDD๋ฅผ ํ๊ณ ์ธ์ TDD๋ฅผ ํ์ง ์์์ผํ๋?
์ฐ๋ฆฌ๊ฐ ๋ณดํธํด์ผ ํ๋ ๊ฒ
AWS x
Spring X
๋๋ฉ์ธ O
์ฐ๋ฆฐ ๋๋ฉ์ธ์ ๊ฐ์ฅ ๋ง์ ์์์ ์จ์ผํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ ์ดํ ์ ์๋ ๊ฒ
์ธ๋ถ ์ธ์
์ค ์ธ๊ณ
์ธํ๋ผ
์ธ๋ถ ์๋น์ค
๋ ๊ฑฐ์
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ณดํธํด์ผํ ๊ฒ๋ค์ ์ฐ๋ฆฌ๊ฐ ์ ์ดํ ์ ์๋ ๊ฒ๋ค๋ก๋ถํฐ ๋ถ๋ฆฌ์ํฌ ํ์๊ฐ ์๋ค. ์ด๋ฅผ ์ํด ์ด๋ป๊ฒ ์ค๊ณ๋ฅผ ํด์ผํ ๊น?
์ค๊ณ
๋ฎ์ ๊ฒฐํฉ
๋์ ์์ง
๋๋ฉ์ธ ๋ชจ๋ธ ๋ณดํธ
๊ทธ๋ฐ๋ฐ ๋น์ ์ ์๋ง..
..๊ตฌํ์ ํ ์คํธํ๊ณ ์์ ๊ฒ์ด๋ค.
๊ตฌํ ๋ฐฉ์์ ํ ์คํธํ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ธธ๊น? ๊ตฌํ์ ๋ด๋ถ์์๋ค๊ณผ ํ ์คํธ ์ผ์ด์ค๊ฐ ๊ฒฐํฉ ๋์ด์๋ค. ๋ฆฌํฉํฐ๋ง์ด๋ผ๋ ํ๋ฒ ํ๋ฉด ๋ง๋ค์ด๋์ ํ ์คํธ ์ผ์ด์ค๋ค์ด ์ธ๋ชจ ์์ด์ง ์ ์๋ค. ๊ทธ๋ผ ์ฝ๋๋ฅผ ๋ฐ๊ฟ ๋๋ง๋ค ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฐ๊ฟ์ผํ๋ฏ๋ก ๋น์ฉ์ด ๋์ด๋๋ค.
์ด๋ป๊ฒ ํํผํ ๊น?
์ ๋ณด ์จ๊น(Information Hiding) ์ ์๊ฐํด๋ณผ ํ์๊ฐ ์๋ค.
On the Criteria To Be Used in Decomposing System into Modules
Information distribution aspets of design methodology - David Parnas, 1971
์ ๋ณด ์จ๊น์ ์ด๋ ค์ด์ค๊ณ ๊ฒฐ์ ๊ณผ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ค๊ณ ๊ฒฐ์ ์ ๋ค๋ฅธ ๋ชจ๋๋ก๋ถํฐ ์จ๊ธฐ๋ ๊ฒ์ด๋ค.
๋น๋ฒํ๊ฒ ๋ฐ๋๋ ๊ฒ๋ค์ ํ ์คํธ์ผ์ด์ค๋ฅผ ์์กด์ํค์ง ๋ง๊ณ , ๋ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ ๊ฒฌ๊ณ ํ ์ธํฐํ์ด์ค์ ์์กด์ํค์. ๊ตฌํ์ด ์๋๋ผ ์ค๊ณ๋ฅผ ํ ์คํธํ์.
..๋ ๊ฑฐ์์ ํจ๊ป ์ด๊ณ ์ด๋ฅผ ํํ ๊ฒ์ด๋ค.
์๋ ๋ ๊ฑฐ์๋ฅผ ๋ฒ์ด๋ ์ ์๋ค. ๋ด๊ฐ ์ง๋ ์ฃผ์ ์์ฑํ ์ฝ๋๋ ๋ ๊ฑฐ์๋ค. ๋ ๊ฑฐ์๊ฐ ์๋ ์ํ์์ ์ด๋ป๊ฒ TDD๋ฅผ ์งํํ ์ ์์๊น? ๊นจ๋ํจ์ ์ ์งํ๋ ์ฝ๋๋ฅผ ๊ฐ์ธ๋ ์ด๋ํฐ๋ฅผ ๋ง๋ค์ด์ ๋ ๊ฑฐ์๋ก๋ถํฐ ๊ฒฐํฉ์ ๋จ์ด๋จ๋ฆฌ์.
๊ทธ๋ผ ์ด์ ํ ์์ค์ TDD๋ ์ด๋ป๊ฒ ์งํํ๋์ง ์ดํด๋ณด์.
Fail-fast ์ ๋ต์ ์ํด ์๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ค.
์ ์ง
๋ฐ๋ณต
๊ณํ
์คํ <-- ์ด๊ฒ๋ง ํ๋ฉด ๊ฐํ๋๋ค.
ํ๊ฐ
๋ฌธํ๋ ๊ต์ฅํ ์ค์ํ๋ค.
๋ ๊ฐ์ง ๊ณต์ ๊ฐ ์ค์ํ๋ค๊ณ ๋ณธ๋ค. 1) ๋ชฉํ 2) ์ง์
์ํคํ ์ณ๋ ๊ต์ฅํ ์ค์ํ๋ค.
๋ฎ์ ๊ฒฐํฉ
๋์ ์์ง
๋๋ฉ์ธ ๋ชจ๋ธ ๋ณดํธ
๋๋ฉ์ธ ๋ชจ๋ธ๊ณผ ํ๋ซํผ์ ์๊ฐํด๋ณด์. ์๋ฐ ๊ฐ๋ฐ์๋ค์ ํ ์คํธ ์๊ธฐ๋ฅผ ํ๋ค๊ฐ๋ ๊ธฐ์น์ ์คํ๋ง ์๊ธฐ๋ฅผ ํ๋๋ฐ, ๊ทธ ์ด์ ๊ฐ ์ฐ๋ฆฌ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์คํ๋ง(ํ๋ซํผ)์ ๋งก๊ฒจ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๋๋ฉ์ธ ๋ชจ๋ธ ๊ณณ๊ณณ์ ์คํ๋ง ์ฝ๋๊ฐ ํผ์ ธ์๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผํ๋๊ฐ? ๋๋ฉ์ธ ๋ชจ๋ธ๊ณผ ํ๋ซํผ์ ๋ถ๋ฆฌ์์ผ์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๊ฒ ํด์ผํ๋ค. ํ๋ซํผ์ ๋ง ๊ทธ๋๋ก ๋๋ฉ์ธ ๋ชจ๋ธ์ ํธ์คํ ํ๋ ์ญํ ์ ํด์ผํ๋ค. ํ๋ซํผ์ด ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊น์ํ ํ๊ณ ๋ค๋ฉด ์๋๋ค. ๊ทธ๋์ผ ๋๋ฉ์ธ ๋ชจ๋ธ์ ํ ์คํธํ๊ธฐ ์ฉ์ดํ๋ค.
์ด๋ฒ ๋ผ์ด๋ธ ์ฝ๋ฉ์์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํคํ ์ณ๋ค. ์๋น์ค์ ์นดํ์นด ์ฐ๋๊ฑด ์ข์๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ์ฐ๊ฒฐ์ํค์ง๋ง ๋ง์๋ผ.
MVVM์์๋ view๋ ํ ์คํธํ๊ธฐ ์ด๋ ต์ง๋ง ์๊ฒ ๋ง๋ค ์ ์๋ค. model, view model์ ํ ์คํธํ์.
์ฐ์ ๋ชฉ์ ์ ๋ถ๋ช ํ, ๊ตฌ์ฒด์ ์ผ๋ก ํ์.
๋ชฉ์ : ์ํํธ์จ์ด ์ฌ์ฉ์์๊ฒ ์ด๋ค ๊ฐ์น๋ฅผ ์ ๋ฌํ ๊ฒ์ธ๊ฐ?
๋ฉ์ง ๊ธฐ๋ฅ ๋ง๋ค์ด์ฃผ์ธ์ -- X
์๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ ๋ช ํํ๊ฒ ๋ชฉ์ ์ ๊ณต์ ํ์.
๋ถ์
์์ ์ค๊ณ
์ํํธ์จ์ด ๋ณ๊ฒฝ์ ์ด๋ค ์ธ๋ถ ์์ ๋ค์ด ์๋๊ฐ?
๊ฐ ์์ ๋ค์ ์ด๋ค ์์๋ก ์งํ๋์ด์ผ ํ๋๊ฐ?
๊ฐ ์์ ๋ค์ ๋๊ฐ ๋ด๋นํ๋๊ฐ?
์ TDD๋ฅผ ํด๋ณด์.
์ฝ๋ ์ค๊ณ
์ด๋ค ์ฝ๋ ๋ณ๊ฒฝ(commit)์ด ํ์ํ ์ง ๋ถ์ํ๋ค.
ํ ์คํธ ์์ฑ
์ฝ๋ ๋ณ๊ฒฝ์ ๊ฒ์ฆํ๋ ์๋ํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ ๋ค.
๋ฆฌํฉํฐ
์๋ ๋ ธ์ถ
์ค๋ณต ์ ๊ฑฐ
์ถ์ํ ์์ค ์กฐ์
ํผ๋๋ฐฑ
๋จ์ ํ ์คํ
์ฝ๋ ๋ฆฌ๋ทฐ
๊ธฐ๋ฅ ํ ์คํ
์๋ ํ ์คํ
์ฌ์ฉ์ ๋ฐ์ ์์ง
๋ฉ์ธ์ง๋ฅผ ํ์ธํ๊ณ ํ ์คํธ๊ฐ ์ ์์ฑ๋์๋ค๋ ํ์ ์ ๊ฐ์ง ๋ค์ ๊ทธ๋ฆฐ๋จ๊ณ๋ก ๋์ด๊ฐ์ผํ๋ค.
Q&A
๋จ์ ํ ์คํธ๋ฅผ ๋์ด์ ํตํฉ ํ ์คํธ๋ ์ธ์ ๋ง๋ค์ด์ผํ ๊ฒ์ธ๊ฐ? ๋จ์ํ ์คํธ 2000๊ฐ์ฏค ์๋๋ฐ, ๋ฉ๋ด์ผ ํ ์คํธ, ๊ธฐ๋ฅ ํ ์คํธ๋ ๋ฐ๋ก ํ๋ค. ์ธ๋ถ ์์คํ ํตํฉ์ํค๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ์๋ 'fake ์๋น์ค'๋ฅผ ์์๋ก ๋ง๋ค์ด์ ์ ๋๋ก ํตํฉ์ด ๋๋์ง๋ฅผ ํ์ธํ๊ธฐ๋ ํ๋ค.
https://www.youtube.com/watch?v=UttzAcbuk5k
https://www.youtube.com/watch?v=cVxqrGHxutU
๋๊ท๋ชจ ํธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ ํ๋ ๋
ธํ์ฐ ๋ค ์๋ ค ๋๋ฆผ | ๋ผ์ธ๊ฐ๋ฐ์ค๋ก
Q) ์ ํ๋ฆฌ์ผ์ด์
๊ด์ ์์๋ ์ด๋ค ์ค๋น๋ฅผ ํ์๋์ง?
๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
๋ฏธ๋ฆฌ ์ค๋นํ ์ ์๋ ๊ฒ
๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋์ํ ์ ์๋ ๊ฒ๋ค.
1๋ฒ ์์. keep-alive๋ฅผ ์ด์ฉํด์ connection์ ๋งบ์ด๋๊ณ ๊ณ์ ์ฐ๋ ๋ฐฉ๋ฒ์ ์ด๋ค. ํ๋ก์๋ ์ ํ๋ฆฌ์ผ์ด์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ WAS๋จ์ ์๋ฒ๊ฐ ์์ ์ ์๋๋ฐ, ํ๋ก์์์ WAS๋จ์ ์ ๋ฌํ ์ ์๋ Max Connection์ ๋ฏธ๋ฆฌ ์ ํํด ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก Proxy์์ ๋ท๋จ์ผ๋ก ์ ๋ฌ๋๋ connection ์๋ ์ ํ์ ๊ฑธ์ด๋๋ค.
keep-alive๋ฅผ ์ ์ฉํ ๋๋ timeout, maxRequests๋ฅผ ์ค์ ํ ์ ์๋ค. ๋ผ์ธ ๋ฉ์์ง ์๋ฒ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์งง์ ์๊ฐ์ ํธ๋ํฝ์ด ํ ์ค๋ฅด๊ธฐ ๋๋ฌธ์ maxRequests ๊ธฐ์ค์ผ๋ก๋ ์ฌ์ ์๊ฒ ๋๋ ค์ฃผ๊ฑฐ๋ ์์ ์ ํ์ ์์ ๋ฒ๋ ค์ keep-alive connection์ด ์ถฉ๋ถํ ์ ์ง๋ ์ ์๋๋ก ์ค์ ์ ํด๋ ์ ์๋ค.
keep-alive๋ฅผ ํค๊ฒ ๋๋ฉด connection๋ค์ด ์ฐ๊ฒฐ๋ ์ฑ๋ก ๋ง์ด ๋ฌผ๋ ค ์์ ์ ์๊ธฐ ๋๋ฌธ์ tomcat์ max connections ์ค์ ๋ ๋ฏธ๋ฆฌ ๋ฌธ์ ๊ฐ ์๋๋ก ํ๋ก์ ์๋ฒ๋ค์ ์์ค์ ๊ณ์ฐํด์ ๋๋ ค ๋๋๋ค.
Q) ์ ์กํ๋ ํ์ผ์ ์ ํ์ ๋ฐ๋ผ์ ์ต์ ํ๋ ์๋ฒ ํ๋ผ๋ฏธํฐ๋ผ๋ ๊ฑด ๋๋ฌด ๋ง๋ค. ๊ด๋ฆฌํ ๊ฒ ๋ง์ ํ
๋ฐ ์ด๋ฐ๊ฑธ ๋ค ํ ๋ช
์ด ๊ด๋ฆฌํ๋ ๊ฑด๊ฐ?
์๋๋ค. ๊ฐ ์๋น์ค์ ํน์ง์ ๋ง๊ฒ ํ๋ํ๋ค.
Q) ๋ชจ๋ํฐ๋งํ๋ค๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ด๋ป๊ฒ ๋์ํ๋์ง?
๋ชจ๋ํฐ๋ง ์์น๋ค, ์ฃผ์ ๋งคํธ๋ฆญ๋ค์ ๋ณด๊ณ ์๋ค๊ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๊ฒฝ์ฐ์ ์ด๋ป๊ฒ ๋์ฒํ ์ง ๋ฐฉ๋ฒ์ ๋ ผ์ํ๊ฒ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ ๊ฒ์ด๋ค.
๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์๋ฒ๋ก ๋ค์ด์ค๋ ๋ฆฌํ์คํธ ์์ฒด๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ
ํ ์ปดํฌ๋ํธ์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์์ฒญ์ ๋ณด๋ด์ง ์๋๋ก ํ๋ ๋์
์๋น์ค ๊ด์ ์์ Throttling์ ๊ฑด๋ค๋ฉด ์ด๋ป๊ฒ ๋์์ ํ๋๊ฐ? ๋ง์ฝ VoIP ์ชฝ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฒจ์ 10%๋ง ์์ฉํ ์ ์๊ฒ ๋์๋ค๋ฉด? ์๋ฒ๋ฅผ ๋ค ๊บผ๋ฒ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ, 10%๋ผ๋ ์๋ฒ๋ฅผ ์ด์ฉํ ์ ์๊ฒ ํ๊ณ , ๋๋จธ์ง์๊ฒ๋ ๋ค์ ์๋ํด๋ฌ๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ฒ ๋๋ค.
Q) ๋ง์ ํธ๋ํฝ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์?
์ด ์ง๋ฌธ์ ๋ํ ๋ต์ ์๋น์ค๋ง๋ค ๋ฌ๋ผ์ง ์ ์์ ๊ฒ์ด๋ค.
๋ง์ฝ ๋ฉ์ ์ ์๋น์ค์ฒ๋ผ ์ผ๋ฐ์ ์ธ ์๋น์ค์ ๊ฒฝ์ฐ์๋ ํ๋์๊ฐ๋๊ฐ ๋ค๋ฅผ ์ ์๋ค. ๋ ์ด๋ค ์๋น์ค์ ๊ฒฝ์ฐ ์ด๋ฏธ์ง๋ฅผ ๋ง์ด ์ฐ๊ฑฐ๋ ์์์ ๋ง์ด ์ฐ๋ ๋ฑ ์ํฉ์ ๋ฐ๋ผ ํธ๋ํฝ์ด ๋ฌ๋ผ์ง๋ค.
์ผ๋ฐ์ ์ผ๋ก statelessํ ์๋ฒ ๊ฐ์ ๊ฒฝ์ฐ ์๋จ์ ์ ์ (static) ์ฝํ ์ธ ๋ฅผ ์๋นํ๊ธฐ ์ํ ์๋ฒ๋ฅผ ๋ฐ๋ก ๋นผ๊ณ CDN์ ์ ์ฉํด ๋๊ณ Application layer์๋ Storage์ชฝ์ผ๋ก ๊ฐ๊ธฐ ์ ์ ์บ์ ๋ฑ์ ๊ตฌ์ฑํ๋ ์ผ๋ฐ์ ์ด๊ณ ๋ณดํธ์ ์ธ ๊ตฌ์ฑ๋ค์ด ์์ ์ ์๋๋ฐ, ๋๋จธ์ง๋ค์ ์์น ๊ฐ์ ๊ฒ์ ์ข ๋ ์กฐ์ ํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์ด๋ค ๋ณ๋ชฉ์ ์ฐ๋ ๋ ํ(Thread pool)์ ๋๋ฆฌ๋ ๋ฑ๋ฑ!
Q) ๋ผ์ธ์์๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ด๋ค ๋ก์ง์ด๋ ๊ธฐ์ ๋ก ํ์๋์ง?
๋ผ์ธ์ Armeria ์คํ์์ค๋ฅผ ํ๋ฒ์ฉ ๋ด์ฃผ๋ฉด ์ข๊ฒ ๋ค. ํผํฌ๋จผ์ค๋ ์ข๊ณ ์๋ฒ, ํด๋ผ์ด์ธํธ ๋ ๋ค ๊ธฐ๋ฅ์ด ์๋ค.
Q) ๋ผ์ธ์ ์ฅ์ ๋์๋ฐฉ์ ์ด๋์ ์ฐ๊ณ ๊ณ์ธ์?
๋ผ์ธ ๋ฉ์ธ์ง๋ก ์ฅ์ ๋์์ ํ ๋๋ ๋ผ์ธ ์์ค๋ Slack์ ์ฐ๊ณ ์๋ค.
Q) CDN ํ์ฉ์ ๋ํด์ ๋ ์์ธํ ์๊ณ ์ถ๋ค. REST API ์๋ต ์ฒ๋ฆฌ๋ CDN์ผ๋ก ์๋น ๋ถ๋ถ ์ฒ๋ฆฌ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์๋ฐ, ์ ๋
๋์ ์์ ์๋ TTL ๋ฑ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋๊ฐ?
๋ฉ์ ์ ๋ ๋ฐ๋ก ๋ณด๋ด์ผํ๊ธฐ ๋๋ฌธ์ ์บ์ฑํ ์ ์๋ ๋ถ๋ถ์ด ๊ฑฐ์ ์๊ธด ํ๋ค. ์คํฐ์ปค ์ ๋??
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ๋์์ ์ํด TTL์ ๋ฐ๋ก ์กฐ์ ํ๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ณดํต API ์ฝ ๊ฐ์ ๊ฒฝ์ฐ๋ ์บ์ํ ์ ์๋๊ฑด non-store๋ก ์ฒ๋ฆฌ๋๊ณ ์๋ค.
Q) ์ ๋
๋์์ ๋ด๋
์ ๋ ํ๋ค๋ฉด ์ฌํด์ ๋ญ๊ฐ ๋ฌ๋ผ์ง ๊ฒ ๊ฐ์๊ฐ?
์ฝ๋ก๋ ์ํฉ์ด ๊ณ์๋ ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ๊ฒ ๊ฐ๋ค.
์ถ์ฒ: ๋๊ท๋ชจ ํธ๋ํฝ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ํ๋ ๋ ธํ์ฐ ๋ค ์๋ ค ๋๋ฆผ|๋ผ์ธ๊ฐ๋ฐ์ค๋ก
ํค์๋ ๋ชจ์
DAO(Data Access Object)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด ์์ฑํ๋ ๊ฐ์ฒด์ด๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ธฐ ์ํ ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
DTO(Data Transfer Object)
๊ณ์ธต๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ์๋ฐ๋น์ฆ๋ฅผ ๋ปํ๋ค. ๋ํ DTO๋ VO(Value Object)์ ์ฉ์ด๋ฅผ ํผ์ฉํด์ ๋ง์ด ์ฌ์ฉํ๋๋ฐ, VO๋ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ read only ์์ฑ์ ๊ฐ์ ธ DTO์์ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
์ผ๋ฐ์ ์ผ๋ก DTO๋ ๋ก์ง์ ๊ฐ์ง๊ณ ์์ง ์์ ์์ํ ๋ฐ์ดํฐ์ ๊ฐ์ฒด์ด๋ฉฐ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ทธ ์์ฑ์ ์ ๊ทผ์ ์ํ getter ๋ฐ setter ๋ฉ์๋๋ง์ ๊ฐ์ง๊ณ ์๋ค.
MyBatis vs JPA
MyBatis(๊ตฌ iBatis)๋ SQL Mapper์ด๋ค. ORM์ด ์๋๋ค. ORM์ ๊ฐ์ฒด๋ฅผ ๋งคํํ๋ ๊ฒ์ด๊ณ , SQL Mapper๋ ์ฟผ๋ฆฌ๋ฅผ ๋งคํํ๋ค.
SI ๊ฐ์ ๊ณณ์์๋ Spring & MyBatis๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง, ๋ค์นด๋ผ์ฟ ๋ฐฐ ๊ฐ์ ์์ฌ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ ๊ณณ์ SpringBoot & JPA๋ฅผ ์ ์ฌ ํ์ค์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ค.
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
TDD์ ๋ํด์ ํ์ตํจ๊ณผ ๋์์ ์๋ฐ ์คํ๋ง๋ถํธ ํ๋ ์์ํฌ์ ๋ํด์ ์ ํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ์ค์ฒ์ผ๋ก ์ฎ๊ฒผ๋ค. ๊ธฐ์ ์ ์ ํํ ๋ ๋ด๊ฐ ๋ฉ๋์ด ๋์ด์ผํ๋๋ฐ, ๊ทธ๋๋ ์๋ ์ด์ ๋ฅผ ํตํด ์ด๋ ์ ๋ ๋ฉ๋์ํค๋๋ฐ ์ฑ๊ณตํ์๋ค.
์์ฐ์ฑ์ ์คํ๋ง ๋ถํธ๋ฅผ ํ์ฉํ๋ฉด ํ ํ๋ ์์ํฌ์ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.
์์ฐ์ฑ์ ๋ํ์์ด๋ผ๋ ๋ฃจ๋น์จ๋ ์ผ์ฆ๋ ๋๋ฆ ๋ค๋ค๋ดค์ผ๋, ์ด๋ฒ์ ๊ฐ์ธ์ ์ผ๋ก ์์ฐ์ฑ์ ๋จ์ด์ง์ง๋ง ์์ ์ ์ด๋ผ๋ ํ๊ฐ๋ฅผ ๋ฐ๋ ์คํ๋ง ํ๋ ์์ํฌ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด์์์ง์ ๋ํ ๊ฐ์ธ์ ์ธ ๊ถ๊ธํจ๋ ์์๋ค.
์ปค๋ฆฌ์ด ๋ชฉํ๋ฅผ ์๊ฐํ๋ฉด ์คํ๋ง์ ํ์์ ์ผ๋ก ํ์ตํด์ผ ํ๋ค.
์๋ฐ ํ๋ก์ ํธ๋ ์๋นํ IDE์ ์ข ์์ ์ธ ๋๋์ด๋ผ ๋ญ๊ฐ ๋ถ์์ฐ์ค๋ฝ๊ฒ ๋๊ปด์ง๋ค. ํ ๊ทธ๋งํผ ์ด์ ์ด ์๊ฒ ์ง, ์ต์ํด์ง๋ฉด ๊ด์ฐฎ์์ง๊ฒ ์ง!
๋ค์ ํ์ต ๊ณํ
TDD, ์คํ๋ง๋ถํธ ํ์ต
Last updated