๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (124)
DevLog ๐ถ
๐ฑ DNS ์๋ฒ๋ฅผ ํตํด ๋ค์ค ์๋ฒ๋ก ๋ถ์ฐ ์ฒ๋ฆฌํ๊ธฐ ์๋ฒ์ ์ก์ธ์ค๊ฐ ์ฆ๊ฐํ๋ค๋ฉด ๋จ์ํ ํ์ ์ ๋น ๋ฅด๊ฒ ํ๋ ๊ฒ์ผ๋ก๋ ๋ถ์กฑํ ์ ์๋ค. ๋จ์ผ ์๋ฒ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด์๋, ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ์ด์ฉํ์ฌ ์ฒ๋ฆฌ๋ฅผ ๋ถ์ฐ์ํฌ ์ ์๋๋ฐ ์ด๋ฅผ '๋ถ์ฐ ์ฒ๋ฆฌ'๋ผ๊ณ ํ๋ค. ํด๋ผ์ด์ธํธ์ ๋ฆฌํ์คํธ๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ์ฌ๋ฌ ๋์ ์๋ฒ๋ก ๋ถ๋ฐฐํ ์ ์์๊น? ๋ฐ๋ก, DNS ์๋ฒ๋ฅผ ํตํด ๋ถ๋ฐฐํ๋ ๊ฒ์ด๋ค. DNS ์๋ฒ์ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ ๋์ ์น ์๋ฒ๋ฅผ ๋ฑ๋กํด๋๋ค๋ฉด, ์กฐํ๊ฐ ์์ ๋๋ง๋ค ์กฐํ๋ IP ์๋ฒ๋ฅผ ์ฐจ๋ก๋ก ๋ฐํํ๋ค. ์ด๋, ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ ํตํด ๊ท ๋ฑํ๊ฒ ์ก์ธ์ค๋ฅผ ๋ถ์ฐ์ํฌ ์ ์๋๋ก ๋๋๋ค. ๐ก aaa.com์ด๋ผ๋ ๋๋ฉ์ธ์ ๋ํด 192.0.2.60, 192.0.2.70, 192.0.2.80์ด ์๋ค๋ฉด ์๋์ ๊ฐ์ ์์๋ก ๋ฐํํ๋ค...
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ง๋ ํฌ์คํ ์์๋ ์ค์์ ์ํ์ ์ํฐํฐ๋ ์ง์ฐ ๋ก๋ฉํ ์ ์๋ค๊ณ ๋งํ๋ค. ์ด๋, ์ง์ฐ ๋ก๋ฉ์ ์ํ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํด ์์์ฑ ์ปจํ ์คํธ๊ฐ ํ์ํ๋ฐ, ์ค์์ ์ํ์ ์ํฐํฐ๋ ์์์ฑ ์ปจํ ์คํธ์ ๊ด๋ฆฌ ๋ฒ์์์ ๋ฒ์ด๋ฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ค์์ ์ํ์ ์ํฐํฐ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๊น? ๐ฑ ๊ธ๋ก๋ฒ ํ์น ์ ๋ต์ LAZY์์ EAGER๋ก ์์ ํ๊ธฐ ๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ์ง ๋ง๊ณ , ์ฆ์ ๋ก๋ฉ์ ์ฌ์ฉํ์๋ ๊ฒ์ด๋ค ๐ @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Crew { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private ..
๊ธ์์ผ์ ๊ทผ๋กํ๋ฉด์ ๊ตฌ๊ตฌ์ ๊ทผ๋ก ํฌ๋ฃจ๋ค์ ๋์ ๋๋ถ์ JPA๋ฅผ ๋ค์๊ธ ๊ณต๋ถํ๊ฒ ๋๋ค ๐ ๋๋ ์์ ํ๊ฒ ์ ์๋ ๋ด์ฉ์ ์๋์ง๋ผ ์๋๋๋ก ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. ๐ฑ ์์์ฑ ์ปจํ ์คํธ์ ํธ๋์ญ์ ๐ก ์์์ฑ ์ปจํ ์คํธ๋? ์ํฐํฐ๋ฅผ ์์ํ์ํค๋ ํ๊ฒฝ. EntityManager๋ฅผ ํตํด ์ํฐํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๋ฉด ์์์ฑ ์ปจํ ์คํธ์ ๋ณด๊ด๋ ์ํฐํฐ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค. EntityManager ์์ฑ ์ 1๊ฐ๊ฐ ๋ง๋ค์ด์ง๋ค. ๐ฌ ํน์ง - ์๋ณ์ ๊ฐ์ผ๋ก ์ํฐํฐ๋ฅผ ๊ตฌ๋ถํ๋ค. - ํธ๋์ญ์ ์ปค๋ฐ ์์ ์ flush. (์ฐ๊ธฐ ์ง์ฐ - ๋ด๋ถ ์ฟผ๋ฆฌ ์ ์ฅ์์ SQL ์ ์ฅ ํ ํ ๋ฒ์ ํ๋ฌ์) - 1์ฐจ ์บ์๋ฅผ ์ฌ์ฉํ๋ค. (์ฒ์์ 1์ฐจ ์บ์์์ ์ํฐํฐ ์กฐํ > ์์ผ๋ฉด DB ์กฐํ > 1์ฐจ ์บ์์ ์ ์ฅํ๋ ํํ = '์์ํ') - ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ง๋ ํฌ์คํ ๊น์ง๋ ํด๋ผ์ด์ธํธ ์ธก LAN์์ ๋ผ์ฐํฐ๊น์ง ์ด๋ป๊ฒ ํจํท์ด ํ๋ ๋์ง ์์๋ณด์์๋ค. ๊ทธ ์ดํ๋ก๋ ์ ๊ธฐ ์ ํธ๋ก ๋ณํ๋๊ณ , ํจํท์ด ์ค๊ณ๋๊ณ , ํต์ ํ์ ์ด๋ ํ๋ก๋ฐ์ด๋์ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ฒ ์ธก์ผ๋ก ์ด๋ป๊ฒ ์ด๋ํ๋์ง ๊ทธ๋ฌํ ๊ณผ์ ์ด ์์ง๋ง ๋ด์ฉ์ด ๋๋ฌด ๊น์ ๊ฒ ๊ฐ์์ ์๋ตํ๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ์น ์๋ฒ์์ ์ด๋ค ์์ผ๋ก ์์ฒญ์ด ์ฒ๋ฆฌ๋๋์ง ์์๋ณด๊ณ ์ ํ๋ค. ๐ฑ ์น ์๋ฒ๋ ์ด๋์ ์ค์น๋ ๊น์? ๊ณผ๊ฑฐ์๋ ์ฌ๋ด์ LAN์ ์๋ฒ๋ฅผ ์ค์นํ ๋ค์, ์ธํฐ๋ท์์ ์ง์ ์ ์ผ๋ก ์ก์ธ์คํ๋ค. ์ด๋ฌ๋ฉด ํจํท์ ์ก์ธ์ค ํ์ , ์๋ฒ์ธก ๋ผ์ฐํฐ๋ฅผ ๊ฒฝ์ ํด์ ์๋ฒ ๋จธ์ ์ ๋์ฐฉํ์ฌ ํจํท์ด ํ๋ฅด๊ฒ ๋๋ค. ํ์ง๋ง, ์ด ๋ฐฉ๋ฒ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋์ ๊ธ๋ก๋ฒ ์ฃผ์๋ฅผ ํ ๋นํด์ผ ๋ผ์ IP ์ฃผ์๊ฐ ๋ถ์กฑํด์ง๋ค. ๋ํ, ์๋ฒ๊ฐ ์ง์ ์ ์ผ๋ก ๋ ธ..
ํํฌ์ ์งํํ ๋ ๋ฒจ 2 ๋ ๋ฒ์งธ ํ์ด ํ๋ก๊ทธ๋๋ฐ ๋ฏธ์ ์ธ ์ฅ๋ฐ๊ตฌ๋ ๋ฏธ์ ์ด๋ค! ์ด์ฉ๋ค ๋ณด๋ ๋ ๋ฒจ 1 ๋ฐ์ผ๋ฆฌ ์กฐ ํ์๋ค๊ณผ ํ ๋ฒ์ฉ ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋๋์ด๋ค ใ _ใ ์ฌ๋ฐ๋ค! ์ด๋ฒ ๋ฏธ์ ์์๋ ์๊ตฌ์ฌํญ๋ณด๋ค๋ ๊ฐ์ธ์ ์ผ๋ก ์งํํ๊ณ ์ถ์ ๋ถ๋ถ๋ค์ ๋ํด ๊ตฌํํ๋ค ๋ณด๋ ๋๊ฒ ์ฌ๋ฐ๊ฒ ๊ตฌํํ์๋ค. ํ์ง๋ง... ์ง๊ธ ์์ ์ฝ๋๋ฅผ ๋ณด๋ ์์ง ๋ง์ด ๋ถ์กฑํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค ๐ฅฒ... ์ด๋ ต๋ค! โ๏ธ ์์ฑํ ์ฝ๋ GitHub - Cl8D/jwp-shopping-cart: ๋ ๋ฒจ 2 ์ฅ๋ฐ๊ตฌ๋ ๋ฏธ์ ๋ ํ์งํ ๋ฆฌ ๋ ๋ฒจ 2 ์ฅ๋ฐ๊ตฌ๋ ๋ฏธ์ ๋ ํ์งํ ๋ฆฌ. Contribute to Cl8D/jwp-shopping-cart development by creating an account on GitHub. github.com โ๏ธ 1์ฐจ PR [1๋จ๊ณ ..
๐ ๋ค์ด๊ฐ๊ธฐ ์ ์ง๋ ํฌ์คํ ์์๋ ๋ผ์ฐํฐ์ ํจํท ์ค๊ณ ๋์์ ๋ํด์ ์์๋ณด์๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๋ผ์ฐํฐ์ ์ฃผ์ ๋ณํ ๊ธฐ๋ฅ๊ณผ ํจํท ํํฐ๋ง ๊ธฐ๋ฅ์ ๋ํด์ ์์๋ณด์! ๐ ์ฃผ์ ๋ณํ์ด ๋์จ ์ด์ ๋ผ์ฐํฐ๋ ๋ค์ํ ์ผ์ ํ์ง๋ง, ๊ทธ์ค ํต์ฌ์ ์ฃผ์ ๋ณํ ๋ฐ ํจํท ํํฐ๋ง ๊ธฐ๋ฅ์ด๋ค. ์ฃผ์ ๋ณํ์ ์ ๋์์๊น? ์ด์ ์๋ IP์ฃผ์๋ฅผ ๊ด๋ฆฌ ๊ธฐ๊ด์ ์ ์ฒญ์๋ฅผ ๋ด์ ํ ๋น๋ฐ์์ง๋ง, ์ธํฐ๋ท์ ์ ์ํ๋ ๊ธฐ๊ธฐ๊ฐ ๋ง์์ง๋ฉด์ ํ ๋นํด์ค ์ฃผ์๊ฐ ๋ถ์กฑํด์ง๋ ํ์์ด ๋ฐ์ํ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋์ผํ ํ์ฌ์์ ์ฌ์ฉํ๋ ์ฃผ์๋ ๋ค๋ฅธ ํ์ฌ์ ์ฃผ์์ ๋์ผํ ์ ์๋๋ก ๋ง๋ค์๋ค. ์ด๋ ์ด์ฐจํผ ๋ค๋ฅธ ํ์ฌ์ ํจํท์ ์๋ก ์๋ํ ์ผ์ด ์์ผ๋ฉฐ, ๊ฐ์ ํ์ฌ์์๋ผ๋ฆฌ ๋ณ๋์ ์ฌ๋ด๋ง์ผ๋ก ํต์ ํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ์ฌ์ ๊ฒน์ณ๋ ์๊ด์๋ ๊ฒ์ด๋ค. ๋๋ถ์ ๊ฐ์ ํ์ฌ์ ์..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ์ฝํก์์ ์งํํ๋ ๋ฐํ ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ๊ธ์ ์์ฑํ์์ต๋๋ค! ์ธ์ฆ๊ณผ ์ธ๊ฐ, ์ฟ ํค / ์ธ์ ๋ฐฉ์์ ๋ํด์๋ ์ด์ ํฌ์คํ ์์ ์์ฑํ์์ต๋๋ค. [Web] ์ธ์ฆ๊ณผ ์ธ๊ฐ๋? - ์ฟ ํค์ ์ธ์ ์ ๋ํด์ ์์๋ณด์! ๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ํ ์ฝํก์์ ์งํํ ์ธ์ฆ๊ณผ ์ธ๊ฐ ๊ด๋ จ ์๋ฃ๋ค์ ๋ฐํ์ผ๋ก ๊ธ์ ์์ฑํ์์ต๋๋ค :D ๐ฑ ์ธ์ฆ (Authentication) ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒ์ ํ์ฉํ๊ธฐ ์ด์ ์, ๋ฑ๋ก๋ ์ ์ ์ ์ ์์ cl8d.tistory.com 4. ํจ์จ์ ์ผ๋ก ์ธ์ฆํ๊ธฐ ์ง๋ ํฌ์คํ ์์๋ ์ธ์ ์ ํตํด์ ์์ ํ๊ฒ ์ธ์ฆํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์๋ค. ํ์ง๋ง, ์ธ์ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ์ ์๋ฒ๋, ํด๋ผ์ด์ธํธ๋, ๊ทธ๋ฆฌ๊ณ ์ธ์ ์คํ ๋ฆฌ์ง๊น์ง ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๊ฐ ๋๋ฌด ๋ค์ํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ฌํ ๋ฌธ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด์ ํฌ์คํ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์คํฐ๋์์ ๋งก์ 'ํ ์คํธ' ํํธ์ ๋ํด์ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค ๐ ํ ์คํธ ์ชฝ์ ๊ณต์ ๋ฌธ์๋ ์๊ฐ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ๋๋ฌด ์ ์ข์์ ์ต๋ํ ๊ฐ๋ตํ๊ฒ๋ง ํ์ด๋ณด์๋ค. ์์ง ๋ชจ๋ฅด๋ ๊ฒ ์ ๋ง ๋ง์ ๊ฒ ๊ฐ๋ค ใ ใ ๐ฑ ํตํฉ ํ ์คํธ vs ์ธ์ ํ ์คํธ ํตํฉ ํ ์คํธ๋ ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด, ์ธ๋ถ ์์ ๋ค๊ณผ ์ฐ๊ด๋์ด ์๋ค๋ฉด ํด๋น ์ธ๋ถ ์์ ๋ค์ ํฌํจํ์ฌ ๊ตฌ์ฑ ์์๊ฐ ์ ๋์๊ฐ๋์ง ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ผ๋ก, @SpringBootTest ์ด๋ ธํ ์ด์ ์ ํ์ฉํ์ฌ ์งํํ๋ ๋ฐฉ๋ฒ์ด ๋ง๋ค. (๊ด๋ จ๋ ๋ชจ๋ ๋น์ ๊ฐ์ ธ์์ ํ ์คํธ ํ๋ ๋๋) ๋ฐ๋ฉด, ์ธ์ ํ ์คํธ์ ๊ฒฝ์ฐ ์ฌ์ฉ์์ ์๋๋ฆฌ์ค์ ๋ง์ถฐ ์ํํ๋ ํ ์คํธ์ด๋ค. ์ธ์ ํ ์คํธ์ ๋ฐฉ๋ฒ๋ก ์ผ๋ก E2E ํ ์คํธ๋ฅผ ํตํด ์ฃผ์ด์ง ์๋๋ฆฌ์ค์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์คํฐ๋์์ ๋ฐํ ์๋ฃ๋ก ์ค๋นํ๋ ๋ด์ฉ์ธ๋ฐ, ๋ธ๋ก๊ทธ์๋ ์ฎ๊ฒจ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ ๋ฆฌํ๋ ๊ธ ๐ ํ๋กค๋ก๊ทธ ๋ก๋๋งต์ ํค์๋ ์์ฃผ๋ก ์ ๋ฆฌํ์์ต๋๋ค! ๐ฑ DI (์์กด๊ด๊ณ ์ฃผ์ ) โ๏ธ ์์กดํ๋ค? A๊ฐ B๋ฅผ ์ฌ์ฉํ๊ณ , B๋ฅผ ๋ณ๊ฒฝํ๋ฉด A์ ์ํฅ์ ๋ผ์น๋ ๊ด๊ณ. ์์กด๊ด๊ณ ์ฃผ์ ์ ๋ค์ ์ธ ๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ์์ ์ ์๋ฏธํ๋ค. - ํด๋์ค ๋ชจ๋ธ์ด๋ ์ฝ๋์๋ ๋ฐํ์ ์์ ์ ์์กด๊ด๊ณ๊ฐ ๋๋ฌ๋์ง ์๋๋ก, ์ธํฐํ์ด์ค๋ง ์์กดํด์ผ ํ๋ค. - ๋ฐํ์ ์์ ์ ์์กด๊ด๊ณ๋ ์ปจํ ์ด๋๋ ํฉํฐ๋ฆฌ์ ๊ฐ์ ์ 3์ ์กด์ฌ (ex. IoC container)๊ฐ ๊ฒฐ์ ํ๋ค. - ์์กด๊ด๊ณ๋ ์ฌ์ฉํ ์ค๋ธ์ ํธ์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ์ธ๋ถ์์ ์ ๊ณตํด์ค์ผ๋ก์ ๋ง๋ค์ด์ง๋ค. โ๏ธ DI๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌด์์ด ์ข์๊ฐ? - ๊ฐ์ฒด๊ฐ์ ๊ฒฐํฉ๋ ๊ฐ์ → ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ง๋ ํฌ์คํ ๊น์ง๋ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฐ์ํ๋ ์ผ, ๋ธ๋ผ์ฐ์ -> ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ -> ํ๋กํ ์ฝ ์คํ -> LAN ๋๋ผ์ด๋ฒ -> LAN ์ด๋ํฐ๊น์ง ์ด๋ป๊ฒ HTTP ์์ฒญ์ด ์ฒ๋ฆฌ๋๋์ง ์์๋ณด์๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ [ํด๋ผ์ด์ธํธ ์ธก LAN]์์ ์ผ์ด๋๋ ์ผ ์ค, ํธ์์คํธ ํ์ด ์ผ์ด๋ธ, ๋ฆฌํผํฐ / ์ค์์นญ ํ๋ธ๋ฅผ ์ง๋ ๋ผ์ฐํฐ์์ ์ด๋ค ์์ผ๋ก ํจํท์ ์ค๊ณํ๋์ง ์์๋ณด์. (์ผ์ด๋ธ, ํ๋ธ์์ ์ผ์ด๋๋ ๊ฑด ์ ๊ธฐ์ ํธ์ ๋ํ ๋ด์ฉ์ด๋ผ ์ ๋ฆฌํ์ง ์์๋ค.) ๐ฑ ๋ผ์ฐํฐ๋ ์ด๋ป๊ฒ ์๊ฒผ์๊น? ๊ธฐ๋ณธ์ ์ผ๋ก ๋ผ์ฐํฐ์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ๊ฐ์ ํจํท์ ์ค๊ณํ๋ ์ฅ์น๋ก, ์ด๋๋ท ๊ฐ์ ๋งํฌ ๊ณ์ธต ํ๋กํ ์ฝ๊ณผ IP ๊ฐ์ ๋คํธ์ํฌ ๊ณ์ธต ํ๋กํ ์ฝ์ ๋ชจ๋ ์ง์ํ๋ค. ์ค์ ๋ก๋ ํจ์ฌ ๋ณต์กํ๊ฒ ์ง๋ง ๊ฐ๊ฒฐํ๊ฒ ๊ทธ๋ฆฌ๋ฉด ์ด๋ฐ ๊ตฌ์กฐ๋ก ์๊ฒผ๋ค. ์ฌ๊ธฐ์ '์ค๊ณ..