์ ํ๋ธ ์ ๋ฏธ๋์ ๊ฐ๋ฐ์ค๋ฌด๋ฅผ ์ด์ํ๊ณ ์์ต๋๋ค.
16๋ ์ฐจ ๊ฐ๋ฐ์
์ฃผ์ ๊ฒฝ๋ ฅ
์ ํ ์คํ์ด๋จผ์ธ ๊ธฐ์ ์ด์ฌ (Director of Engineering)
์ ์ฐ์ํํ์ ๋ค ์๋ฒ ๊ฐ๋ฐ์
์ ๋ ์ง์ํฐํ ์ธ๋จผํธ ์๋ฒ ๊ฐ๋ฐ์
์ด์ธ ์คํํธ์ ๋ฑ 7๊ณณ์ ํ์ฌ์์ ๋ค์ํ ๊ฒฝํ ๋ณด์
๋ฐํ ๋ฐ ์ธํฐ๋ทฐ
SLASH 22 - ์ง์ ์ฑ์ฅ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ง๋ค์ด๊ฐ๋ ๋ฐฉ๋ฒ
์ธํ์ฝ 2024 - ์ง์ ์ฑ์ฅ ๊ฐ๋ฅํ ์ค๊ณ๋ฅผ ๋ง๋ค์ด๊ฐ๋ ๋ฐฉ๋ฒ
๋ธ๋ก๊ทธ
Courses
Reviews
- ์ ๋ฏธ๋์ ๊ฐ๋ฐ์ค๋ฌด - ์ปค๋จธ์ค ๋ฐฑ์๋ ๊ธฐ๋ณธํธ
- Gemini's Development Practices - How to Create Sustainable Software
- Gemini's Development Practices - How to Create Sustainable Software
- Gemini's Development Practices - How to Create Sustainable Software
- Gemini's Development Practices - How to Create Sustainable Software
Posts
Q&A
Controller์์ ๋น์ฆ๋์ค ๋ก์ง ํ๋ฆ์ด ๋ํ๋๋ ๊ฒ์ ๋ํ์ฌ..
์ฐ์ ์ฒซ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค! ๋๋ฌด ๊ธฐ์ฉ๋๋ค!ํํ.. ์ ์๋์ ์ผ์นํ๊ฒ ๊ณ ๋ฏผ์ด ์๊ธฐ๊ธฐ ์์ํ์ จ๋ค๋ ์์ฃผ์์ฃผ ๊ธฐ์ ๋ง์์ ๋๋ค +_+!์ ๋ ๊ฒฐ๊ตญ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ํ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด ๋ฐฉํฅ๊ณผ ๊ธฐ์ค์ ์ ํํด์ผํ๋ค๊ณ ๋ด ๋๋ค!(์ฌ์ค ์ปจํธ๋กค๋ฌ์์ ์กฐํฉํ๋๊ฒ ์ด์ง์ ์ด๊ณ ์ด์ํ๊ฒ ๋๊ปด์ง์ ๋ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ ์ฌ๋๋ค์ด ๊ทธ๋ ๊ฒ ๋๋ ๊ฒ์ด๋ผ์ ๊ทธ๋ ๊ฒ ๋๋ผ์๋๊ฒ ๋ง์ต๋๋ค +_+ ํํํ... (๊ณํ๋๋ก...))์ ์ด์ฃผ์ ๊ฒ๊ณผ ๊ฐ์ด QuestionPaymentService ๊ฐ ๋๋ฌด ๋ง์ ๊ฒ์ ์๊ณ ์๋ ํํ๋ผ๊ณ ๋ณด์ฌ์ง๋๋ค๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ์ ํ ํ ์์๋ ์ ๋ต์ ์๋์ ๊ฐ์ ๊ฒ๋ค์ด ์์ต๋๋ค (๋น์ฅ ์๊ฐ๋๋ ๊ฒ๋ค๋ง ์ ์์ต๋๋ค ใ ใ )1์. Controller ์์ Service๋ฅผ ์กฐํฉํ๋ค2์. QuestionPaymentService ์์ ์์กด๋์ด์๋ ์ปดํฌ๋ํธ๋ค์ ๋ '๊ฐ๋ ํ'ํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ํ ๋จ๊ณ ๋ '์์ง' ์ํจ๋ค3์. Controller ์ Service๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๋จ๊ณ(ex] ๋ ์ด์ด)์ ๊ตฌ์ฑํ๋ค์ ๋ ๋ณดํต 2์์ ํํฅ์ (Service ๋ฐ์ผ๋ก ์์ง์ ๋ด๋ ค์ ํ์ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ถ), 3์์ ์ํฅ์ (Service ์๋ก ์์ ์์ญ์ ๊ตฌ์ฑํด์ ๊ตฌ์ถ) ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธดํฉ๋๋ค๋ง--์์ ๊ฐ์ ์์์ ์๊ณ ์์ ๋์ ์ด๋ค ์ ๋ต์ ์ ํํ์ค ๊ฒ ๊ฐ์ผ์ ๊ฐ์?๋ช๊ฐ์ง ์๊ฐํ ๊ฑฐ๋ฆฌ๋ฅผ ๋ ๋์ ธ๋๋ฆฌ๋ฉด....1์ ๊ณ ๋ฏผ์๋น์ค๊ฐ ํ๋๊ฐ์์ ๋์์ง ์์๋ณด์, ๊ทผ๋ฐ ๋ง์์ง๋ฉด..? ํ๋ฆ์ด ์ฌ๊ธฐ ๋ณด์ด๋๊ฒ ๋ง๋..?2์ ๊ณ ๋ฏผ ์ด๋ ๋จ์๋ก ์์ง ์์ผ์ผํ์ง?, ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง์์ ์ปดํฌ๋ํธ ์์ง์ด ์๊ธฐ์ง๋ ์์ํ ๋ฐ (์กฐํ์ฑ๋ ๋จ์ํ ๊ธฐ๋ฅ์์๋ ์ฌ๋ฌ ๊ฐ๋ ์ด ๋ฌถ์ด๋ ๊ฒฝ์ฐ๊ฐ ์ ์ผ๋๊น..?), ๊ทธ๋ ๋ค๋ฉด '์์ง ๋ ์ปดํฌ๋ํธ'๋ฅผ ๋ง๋๋ ๊ธฐ์ค์ ์ด๋ป๊ฒ ํด์ผํ์ง..?๋ฌด์์ ๊ธฐ์ค์ผ๋ก ์์ง ์์ผ์ผํ์ง?3์ ๊ณ ๋ฏผ๊ทธ ๊ตฌ๋ถ์ '๋ ์ด์ด'๋ผ๊ณ ์ง์นญํ๋ค๋ฉด ์ ์ฒด ํ๋ก์ ํธ์ ํต์ผ์ ํด์ผํ๋ ๋๋์ธ๋ฐ... ๋ชจ๋ ๋น์ฆ๋์ค๊ฐ ์ด '๋ ์ด์ด'๊ฐ ํ์ํ์ง ์์๋ฐ ๊ทธ๋ผ ์ ํ์ ์ผ๋ก ๊ตฌ์ฑํด์ผํ ๊น........?๋ ์ด์ด(์ปดํฌ๋ํธ ๊ฐ์ ๊ฒฝ๊ณ ์์ญ)๋ ๋ฌด์์ผ๊น.....!?์ฌ์ค ์ ์ค์ ์ ๊ฐ ์ ์ผ ์ ํธํ๋ ์์.......... (๋๋ณด๊ธฐ) ์ ์ ํธ ์์ ์์ ๋ด์ฉ์ ์๊ฐํด๋ณด์ ํ์ ์๊ณ ์์ ๋์ '๊ฒฐ๋ก or ์ง๋ฌธ'์ ๋ค์ ๋ฌ์์ฃผ์๋ฉด ๋ต๋ณ ๋๋ฆฌ๊ฒ ์ต๋๋ค :p)
- 7
- 1
- 95
Q&A
๋์ผ ๊ณ์ธต์ ์ ํ๋ฆฌ์ผ์ด์ ์๋น์ค๊ฐ ์๋ก์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์กดํ๋ ๊ฒฝ์ฐ์ ๋ํด์
์๋ ํ์ธ์ :D ํ ๋น๋์๊ฒ ํด๋น ์ง๋ฌธ์ ๋ํด์ ์ ํด๋ค์ด์ ์ ๋ ์งค๋งํ ์๊ฐ์ ๋ฌ์๋ด ๋๋ค๐๊ทธ ์ ์ ๋จผ์ ์ค๋ ๋ ๊ธ์ธ๋ฐ๋ ๋ด์ฃผ์๊ณ ์ธ๊ธ๊น์ง ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!ํต์ฌ ์ง๋ฌธ์ ๋ํ ์๊ธฐ๋ฅผ ๋จผ์ ํด๋ณด๋ฉด (๋ค๋ง,, ์ ๊ฐ ํ์ค์ด ๋๋ฌด ๋ฐ๋น ์ ๊ฐ์๋ฅผ ์์ง ๋ชป ๋ดค์ต๋๋คใ ใ ์ด ์ ์ํด๋ฅผ... ํ ๋น๋ ์ฌ๋ํฉ๋๋ค)๊ฐ์ ๊ณ์ธต์์ ์ธํฐํ์ด์ค ํฌํธ๋ฅผ ํตํด์ ํธ์ถํ๋ ๊ฒ์ ๊ด์ฐฎ์๊น ๊ณ ๋ฏผ์ด ๋ค์์ต๋๋ค. ์ ์ด ์ฃผ์ ์ง๋ฌธ ๊ธ์ ๋งฅ๋ฝ์ผ๋ก ๋ณด๋ฉด ์ ๋ฐ ์ผ์ด์ค์ ํธ์ถ์ ๋ํ ๊ฒ์ ์ ๋ต์ ์ ํ ์ ์๋ ์์ญ์ผ๋ก ๋ณด์ ๋๋ค. ์ฝ๋๋ฅผ ๋ชป ๋ดค์ง๋ง ๋งฅ๋ฝ ๊ธฐ์ค์ผ๋ก ํ์ฉ์ด ์ถฉ๋ถํ ๊ฐ๋ฅํ๋ค๊ณ ๋ด ๋๋ค, ํนํ ๊ตฌํ์ฒด๊ฐ ์๋ ์ธํฐํ์ด์ค ๊ธฐ๋ฐ์ด๋ผ๋ฉด ๋์ฑ ํ์ฉ์ด ์ฌ์์ง๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ง, ์ด๋ฐ ํธ์ถ์ ๊ธฐ๋ฐ์๋ ์ฌ๋ฐ๋ฅธ ๊ฐ๋ (๋๋ฉ์ธ)์ ์ ๋ฆฝ๊ณผ ์๋ ์ค๋ช ํ '๊ฒฉ๋ฒฝ'(๋จ์ด์ ์๊ด์์ด ๊ฐ๋ ๊ฐ ๊ฒฝ๊ณ ์์ญ ์ ๋ํ์ฌ ๊ณ ๋ฏผ์ด ์ ์ ๋์ด์ผํ๋ค ์๊ฐํฉ๋๋ค.(๋จ์ํ ํด๋น ๊ท์น์ ํ์ฉํ๋ ์๊ฐ ์๋ชป ๋ ๊ฐ๋ ๋ผ๋ฆฌ๋ ์ฎ์ผ ์ ์์ผ๋๊น์, ๋ฌผ๋ก ์ด ๋ถ๋ถ๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ๋๋ฉ์ธ ๋ฆฌ๋ทฐ๊ฐ ์ฒ ์ ํ๋ค๋ฉด ๊ด์ฐฎ๊ฒ ์ง๋ง์)[ํด๋น ๊ธ์ '๋ ์ด์ด'์ ๋ํ์ฌ]๊ณผ๊ฑฐ์ ์ ๊ธ์์ โ๋ ์ด์ดโ๋ผ๊ณ ์๊ฐ ๋ ๋ถ๋ถ์ ์ฌ์ค '๋ ์ด์ด๋ ์ํคํ ์ฒ' ๋ฅผ ๊ฐ์กฐํ๊ณ ์ค๋ช ํ๊ณ ์ ํ ๊ธ์ ์๋๋๋ค์ฌ์ค ์ด๋ฐ ์คํด(?) ๋๋ฌธ์ ์ ๋ ์์ฆ โ๊ฒฉ๋ฒฝโ(2024์ธํ์ฝ ์์ ๋ฐํํ..) ์ด๋ผ๋ ์ฉ์ด๋ฅผ ๋ ๋ง์ด ์ฐ๋๋ฐ์ ๊ฒฐ๊ตญ ๋ค์ํ ๊ด์ ์ด ์์ง๋ง ๊ณตํต ๋ถ๋ชจ๋ก ๊ฐ๋ฐ์๋ค์ด ๋งํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์์คํ ์ฌ๊ฒจ์ผํ๋ ๋ถ๋ถ(๊ทธ๊ฑธ '๊ฐ๋ '์ด๋ผ ๋ถ๋ฅด๊ฑด '๋๋ฉ์ธ'์ด๋ผ ๋ถ๋ฅด๊ฑด)์ ์ด๋์ ๋ ์์กด์ํค๊ณ , ์ด๋ป๊ฒ ํ๋ ฅ์ํฌ์ง์ ๋ํ์ฌ ์ด๋ค ์ ๋ต์ ๊ฐ์ ธ๊ฐ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด ํต์ฌ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ ์ด๋ฐ ์ธก๋ฉด์์ ๋ ์ด์ด๋ / ํฌํธ&์ด๋ํฐ ์ด๋ ๊ฒ ๋ฌด ์๋ฅด๋ฏ์ด ์ํคํ ์ฒ ๊ฒฐ์ ํ๊ณ ๋๋๋ ๊ฒ์ ์ ํธํ์ง ์์ต๋๋ค์ ๊ธฐ์ค์์๋ ์ ๋ง๋ ๋ ์ด์ด๋๊ฐ ์งํํ๋ฉด ๊ฑด๊ฐํ ๋๋ฉ์ธ์ด ๋์ฌ ์ ์๊ณ ํ์์๋ฐ๋ผ ํฌํธ&์ด๋ํฐ๋ก ์งํํ๋ ๊ฒ์ ์๋นํ ์ฌ์ด ์ผ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ถ๊ฐ๋ก ํด๋น ๊ธ์ ๋น์ฆ๋์ค๋ก์ง + ๋ ์ด์ด ์ฑํฐ์ ํต์ฌ์ ํ ๋น๋์ด ์ ์ด ์ฃผ์ ๊ฒ์ด ์ ํํฉ๋๋ค.์์ธ ๊ตฌํ ๋ก์ง์ ์ ๋ชจ๋ฅด๋๋ผ๋ ๋น์ฆ๋์ค์ ํ๋ฆ์ ์ดํด ๊ฐ๋ฅํ ๋ก์ง์ด์ด์ผ ํ๋ค. ์ ๊ฐ ์ฌ๋ฌ ์กฐ๊ฑด ๋๋ฌธ์ ํ์ฌ ๊ฐ์๋ฅผ ์ฐ์ ์ ์์ง๋ง, ์ถํ์ ์ด๋ฐ ๋ด์ฉ์ ์ข ํฉํ์ฌ ํ๋ฒ ๊ฐ์๋ก ์ฐ์ด๋ณด๊ณ ์ถ๋ค์ :D [๋์ผ ๋ ์ด์ด ์ฐธ์กฐ ํ์ฉ ๊ท์น ๊ด๋ จ]์ ๋ ์ฌ๋ฏผ๋๊ป์ ์ ๋ ๊ฒ ์ ์ํ์ ์ด์ ๋ ์๋ง ์ค๊ณ์ ๋จ์์ฑ์ ํตํด์ ์ฌ๋ฌ์ฌ๋์ด ๊ฐ์ ์์ญ์ ์์ ํ๊ธฐ ํธํ๊ฒ ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.MASKUN ๋์ด ๋ต๋ณ ์ฃผ์ ๊ฒ ์ฒ๋ผ ํด๋น ๊ธ์ ์ ๊ท์น์ ํน์ ํ์ค ์ํฉ์ ์๋นํ ์ ๋ฆฌํ ๋ฉด์ด ์์ต๋๋ค.๊ฐ๋ฐ ํ์ ์๊ฐ๋ฐ ํ์๋ค์ ์ญ๋ ์์ค๊ฐ๋ฐ ํ์๋ค์ ์ฝ๋ ๋ฆฌ๋ทฐ/์ฝ์นญ ํด์ค ์ ์๋ ์ฌ์ ๊ฐ ์๋๊ฐ๊ฐ๊ฐ์ ํฌ๋ก ์ธ๋น ํ๋ก์ ํธ๋ฅผ 1๊ฐ์ฉ ํด์ผํ์ง ์๋๊ฐ ๋ฑ๋ฑ ๊ฐ๋ฐํ ๋์๋ ํ์ค์ ์ธ ์ํฉ์ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํด์ ํด์ผํฉ๋๋ค, ๊ทธ๋ ๋ค๋ฉด ์ ๊ธ์ ์ต๋ ํจ์จ์ ์ธ์ ๋์ฌ๊น๋ฅผ ์๊ฐํด๋ณด๋ฉด ๋๋ถ๋ถ์ ์กฐ๊ฑด์ด ์ด์ ํ ์ํฉ์์ ์ต์ ์ ํจ์จ์ ๋ ๊น์ง๋ ๋ณด์ฅ์ด ๋๋ ๊ฒ ๊ฐ์ต๋๋ค .(์จ์ ํ ์ ๊ฒฝํ ๊ธฐ์ค์ ๋๋ค :D )์ต์ ์ ๊ฒฝ์ฐ๋ก ๋งํ๋ฉด... ๋๊ตฐ๊ฐ ์ฝ๋๋ฅผ ๋ง์ณ๋์ ๊ทธ๋ก์ธํด ํ์ฌ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์์๋, ์ ๊ฐ ์ง์ ๊ฐ์ ํด๊ฒฐํด์ผํ๋ ์ํฉ์์ ๊ทธ๋๋ง ์ต์ ์ ์ฝ๋๋ฅผ ๋ง๋ ์ ์์ต๋๋ค. ๐ ๋ชจ์ชผ๋ก ์ข์ ์ง๋ฌธ๊ณผ ํ ๋น๋์ ๊น๋ํ ๋ต๋ณ๊ณผ ์ง๋ฌธ์ ๋ถ์ ์ ๋ฆฌ๊น์ง ์ฆ๊ฑฐ์ด ๊ธ ๊ฐ์ต๋๋ค :D์ ๊ธ ๋ฟ๋ง ์๋๋ผ ํ ๋น๋์ ๊ฐ์์์๋ ์ฅ์ ๊ณผ ๋จ์ ํธ๋ ์ด๋ ์คํ์ ๋ํ์ฌ ์ถฉ๋ถํ ์ดํดํ์๊ณ ์ฒํด๊ณ์ ์ํฉ์ ๋ง๋ ์ ๋ต์ ๊ฒฐ์ ํด์ ํผ์ณ๋๊ฐ๋ณด์๊ธธ ๋ฐ๋ผ๊ฒ ์ต๋๋ค. ๋ค์ํ ๊ด์ ์ ์ตํฉํด์ ์๋ํด๋ณด๊ณ ์คํํ๋ค๋ณด๋ฉด MASKUN๋ ๋ง์ ์๋ก์ด ์ ๋ต ๋ฐ ์ฒ ํ์ด ํ์ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์ ๋ ๊ทธ๋ฐ ๊ฒ์ด ์ ๋ง์ด ์ด๋ฏธ ์ ๋ฆฝ๋ ์ด๋ก ๋ณด๋ค ๋ฉ์ง ๊ฒ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค ๋ค์ ํ๋ฒ ์์ฐฌ ์ง๋ฌธ๊ณผ ๊ธ ์ธ๊ธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :D ์ถ๊ฐ๋ก ์๋ ๋ด์ฉ์ ์ ๋ ์ ๋ง๋ค๋ฉด ์ด๋ฐ ๋ฌธ์ ๋ ์๋ค ๋ผ๊ณ ์๊ฐํ๊ธด ํ๋๋ฐใ ใ (๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ธฐ ์ฌ์ด ๊ฒ์ ํฉํธ์ด๊ธดํฉ๋๋ค) ์ด๊ฑด ์ ๋ ์ถํ์ ์ฝ๋๋ก ๋ณด์ฌ์ค ์ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค์!๋๋ฉ์ธ ๋ชจ๋ธ์ ๋นํ์ ์ ๋ฐํ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋๋ค์.
- 5
- 2
- 1.3K
Q&A
Business Logic!
์ธ๋ถ์์ ์ฃผ์ ๋ฐ๋๋ก ๋ถ๋ฆฌํ ๋ก์ง๋ค์ด ์๋ฏธํ๋ ๋ถ๋ถ์ด ์ด๋ค ๋ก์ง์ ๋งํ์๋ ๊ฑด์ง ์ ๋งคํ ๊ฒ ๊ฐ์ต๋๋ค! ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋, ์ธ๋ถ ํต์ ์ ์ํ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ฏธํ์๋ ๊ฑธ๊น์? ๊ทธ๋ ๋ค๋ฉด Data Access Layer ์ ํด๋นํฉ๋๋ค!
- 0
- 2
- 354
Q&A
Business Layer ์ธ์ ์ฒ๋ฆฌ
1. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ ๋ฌ๋๋ presentation layer ์์ ๋ฐ๋ก ์ ๋ฌ๋ฐ๋ ๊ฒ์ ๊ธฐ๋ํ์ จ๋์ง2. ์๋๋ฉด ๋ฆฌํฉํ ๋ง ์ ๊ณผ ๊ฐ์ด payRequest ๋ก controller์์ ์ ๋ฌ ๋ฐ์ ๋ค ๋ค๋ฅธ layer (business ํน์ presentation) ์์ dto ๋ก ๋ณ๊ฒฝํ ๋ค businessPay() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ธ์๋ฅผ ์ ๋ ฅํด์ฃผ๋ ๊ฒ์ ๊ธฐ๋ํ์ จ๋์ง3. ์๋๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์งํ์ด ๋๋์ง2๋ฒ์ ๋๋ค!PayRequest ๊ฐ Presentation Layer ์ ์๋ ์ํฉ์์, Business, Implement Layer ์ ํ๋ผ๋ฏธํฐ๋ก ๋์ด์จ๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋ ์ด์ด๋ฅผ ์งํค๋ ๊ท์น์ ์๋ฐํ๋ '๋ ์ด์ด ์ญ๋ฅ' ์ ํด๋น ๋๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ํ๋ฆ ์์ผ๋ก ๋ณด๋ฉด ์ธ๋ถ ๋ ๊ฐ์ฅ ๊ฐ๊น์ด Presentation Layer ์์ PayRequest ๋ฅผ ๋ฐ๊ณ Presentation Layer ์์ Business Layer ๋ก ๊ฐ๊ธฐ์ ์ Business, Implement Layer ์ ๊ฐ์ฒด๋ก ๋ณํ์ ํ๊ณ ๋๊ฒจ์ค๋ค๊ณ ์ดํดํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ ํ๋ธ์๋ ์์ ๊ฒ ๊ฐ์๋ฐ ์ ๋ ๋ชป ์ฐพ๊ฒ ๋ค์;; ๊ด๋ จํด์๋ ์์ ์ ์ ๊ฐ ๋ฐํํ๋ ๋ด์ฉ์ ์ฐธ๊ณ ํด ๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!https://youtu.be/RVO02Z1dLF8?si=Wj4ZhsYESDE2T5xS&t=508 ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
- 1
- 2
- 369
Q&A
๋ชจ๋์ ๋ํ ๋จ๋ฐฉํฅ ์์กด
์ ๊ฐ ์๊ฐํ๋ ๊ตฌ์กฐ๋ 1๋ฒ ์ฝ๋์ 2๋ฒ ์ฝ๋ ๋ชจ๋ ์๋๋๋ค.์ด ๊ฐ์ ์ค๋ช ๊ธฐ์ค์์๋ API ๋ชจ๋์ด ์์ฒด์ ์ผ๋ก ๋๋น ์ ๊ทผ ์์กด์ฑ์ ๊ฐ์ง ์๊ณ DB ๋ชจ๋์ ์ฌ์ฉํ๋๊ฒ ํต์ฌ์ ๋๋ค.๊ทธ๋ ๊ธฐ์ ์ธํฐํ์ด์ค ์์ด API ๋ชจ๋์ด DB ๋ชจ๋์ ์์กดํ๊ณ ์๋ ํํ๊ฐ ์ ๋ถ ์ ๋๋ค.(๊ฐ์ ์ค๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง์ถ๋ค๋ ์๊ธฐ๋ ๋ฉ์๋ ์๊ทธ๋์ฒ๋ฅผ ๋ง์ถ๋ค๋ ์๋ฏธ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค.)๊ทธ๋์ ๋๋ต ์ด๋ฌํ ๊ตฌ์กฐ๋ผ๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.// Payments-API ๋ชจ๋ //// ์์กด์ฑ implementation(project(":storage:db-core")) //// ์ฝ๋ class PaymentAppender(val paymentRepository: PaymentRepository){ fun append(user: User, payment: NewPayment): Payment { // ... ์ค๋ต } } // db-core ๋ชจ๋ //// ์์กด์ฑ implementation(project("...:spring-boot-starter-data-jpa")) /** * ์์กด์ฑ์ด ๋ณ๊ฒฝ๋๋ค๋ฉด * implementation(project("...:hyper-persistence")) **/ //// ์ฝ๋ class PaymentRepository( val paymentJpaRepository: PaymentJpaRepository /** * ์์กด์ฑ์ด ๋ณ๊ฒฝ๋๋ค๋ฉด * val paymentHyperRepository: PaymentHyperRepository **/ ){ fun newPayment(paymentPersist: PaymentPersist): PaymentPersistResult { val saved = paymentJpaRepository.save(paymentCommand.toEntity()) /** * ์์กด์ฑ์ด ๋ณ๊ฒฝ๋๋ค๋ฉด * val saved = paymentHyperRepository.insert(paymentCommand.toEntity()) **/ return saved.toResult() } } PaymentDB, PaymentDB2 ๊ฐ ๋ณ๋ ๋ชจ๋์ด ์๋๊ฒ ์๋๋ผ, DB-Core ์์์ ๋ณ๊ฒฝ์ ๋์ํ๋ ๊ด์ ์ ๋๋ค.--์ํํธ์จ์ด๋ ๋จ๊ณ์ ์ผ๋ก ์งํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ๊ฐ์์์๋ ์ด๋ฐ ๋จ๊ณ ์ ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํด ๋ณผ๊ฑฐ๋ฆฌ๋ฅผ ์ค์ฌ์ผ๋ก ์ค๋ช ํ๊ณ ์์ผ๋ฏ๋ก ์์ ํ ์์ ๊ฐ ์ ์ ํ ๋์ค์ง ์์ต๋๋ค.์ด๋ฐ ๋จ๊ณ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ https://github.com/team-dodn/spring-boot-kotlin-template ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค. ์ค์ ๋ ์งํํ ์ธํฐํ์ด์ค(์ฝ๋ ์์์ ์ฐ๋ Interface๋ฅผ ์๋ฏธ)์ ๊ตฌํ ๋ฐฉํฅ์ฑ ๊ด๋ จํด์๋์ง์ ์ ์ผ๋ก ์ค๋ช ๋ฐ ํํํ๊ณ ์์ง ์์ง๋ง, ์ข ๋ ์งํ๋ ๊ธฐ์ค์ ๊ตฌ์กฐ๋ฅผ ์ฐธ๊ณ ํ์๋ ค๋ฉด ์๋ ์์์ ํ๋ฐ ๋ถ ๋ชจ๋ ๊ตฌ์กฐ์ ๋ํ ๊ฑธ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.https://youtu.be/RVO02Z1dLF8?si=FQdWoLdoBntwTfFS ๋ ์ด ์๋ ์์์์๋ ์ฐธ๊ณ ํ์ค ๋ถ๋ถ์ด ์์ ๊ฒ ๊ฐ์ต๋๋คhttps://youtu.be/p5ZMF2bpE6A?si=EE4JB5X2h6HS4F18์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :D
- 0
- 2
- 568