๋ชฉ๋ก์ „์ฒด ๊ธ€ (123)

DevLog ๐Ÿ˜ถ

[JPA] OSIV ์ฐ๋จนํ•˜๊ธฐ 2ํŽธ - ์ค€์˜์† ์ƒํƒœ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ง€์—ฐ ๋กœ๋”ฉํ•˜๊ธฐ (FetchType.EAGER์™€ N+1 ๋ฌธ์ œ, fetch join)

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ค€์˜์† ์ƒํƒœ์˜ ์—”ํ‹ฐํ‹ฐ๋Š” ์ง€์—ฐ ๋กœ๋”ฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋งํ–ˆ๋‹ค. ์ด๋Š”, ์ง€์—ฐ ๋กœ๋”ฉ์„ ์œ„ํ•œ ํ”„๋ก์‹œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ค€์˜์† ์ƒํƒœ์˜ ์—”ํ‹ฐํ‹ฐ๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ๊ด€๋ฆฌ ๋ฒ”์œ„์—์„œ ๋ฒ—์–ด๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์ค€์˜์† ์ƒํƒœ์˜ ์—”ํ‹ฐํ‹ฐ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ๊นŒ? ๐ŸŒฑ ๊ธ€๋กœ๋ฒŒ ํŽ˜์น˜ ์ „๋žต์„ LAZY์—์„œ EAGER๋กœ ์ˆ˜์ •ํ•˜๊ธฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์ง€์—ฐ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ , ์ฆ‰์‹œ ๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜์ž๋Š” ๊ฒƒ์ด๋‹ค ๐Ÿ˜… @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Crew { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private ..

Back-end/JPA 2023. 5. 21. 19:22
[JPA] OSIV ์ฐ๋จนํ•˜๊ธฐ 1ํŽธ - ํ”„๋ก์‹œ ๊ฐ์ฒด์™€ ์ค€์˜์† ์ƒํƒœ ์—”ํ‹ฐํ‹ฐ

๊ธˆ์š”์ผ์— ๊ทผ๋กœํ•˜๋ฉด์„œ ๊ตฌ๊ตฌ์™€ ๊ทผ๋กœ ํฌ๋ฃจ๋“ค์˜ ๋„์›€ ๋•๋ถ„์— JPA๋ฅผ ๋‹ค์‹œ๊ธˆ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋๋‹ค ๐Ÿ˜… ๋‚˜๋„ ์™„์ „ํ•˜๊ฒŒ ์ž˜ ์•„๋Š” ๋‚ด์šฉ์€ ์•„๋‹Œ์ง€๋ผ ์•„๋Š”๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๐ŸŒฑ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ํŠธ๋žœ์žญ์…˜ ๐Ÿ’ก ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ž€? ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜์†ํ™”์‹œํ‚ค๋Š” ํ™˜๊ฒฝ. EntityManager๋ฅผ ํ†ตํ•ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋ฉด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ๋ณด๊ด€๋œ ์—”ํ‹ฐํ‹ฐ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. EntityManager ์ƒ์„ฑ ์‹œ 1๊ฐœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๐Ÿ’ฌ ํŠน์ง• - ์‹๋ณ„์ž ๊ฐ’์œผ๋กœ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. - ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ ์‹œ์ ์— flush. (์“ฐ๊ธฐ ์ง€์—ฐ - ๋‚ด๋ถ€ ์ฟผ๋ฆฌ ์ €์žฅ์†Œ์— SQL ์ €์žฅ ํ›„ ํ•œ ๋ฒˆ์— ํ”Œ๋Ÿฌ์‹œ) - 1์ฐจ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (์ฒ˜์Œ์— 1์ฐจ ์บ์‹œ์—์„œ ์—”ํ‹ฐํ‹ฐ ์กฐํšŒ > ์—†์œผ๋ฉด DB ์กฐํšŒ > 1์ฐจ ์บ์‹œ์— ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ = '์˜์†ํ™”') - ..

Back-end/JPA 2023. 5. 21. 16:44
[Network] ๋ฐฉํ™”๋ฒฝ์˜ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๊ณผ์ • ์•Œ์•„๋ณด๊ธฐ

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ง€๋‚œ ํฌ์ŠคํŒ…๊นŒ์ง€๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก LAN์—์„œ ๋ผ์šฐํ„ฐ๊นŒ์ง€ ์–ด๋–ป๊ฒŒ ํŒจํ‚ท์ด ํ˜๋ €๋Š”์ง€ ์•Œ์•„๋ณด์•˜์—ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ๋„ ์ „๊ธฐ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜๋˜๊ณ , ํŒจํ‚ท์ด ์ค‘๊ณ„๋˜๊ณ , ํ†ต์‹  ํšŒ์„ ์ด๋‚˜ ํ”„๋กœ๋ฐ”์ด๋”์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ์ธก์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ด๋™ํ•˜๋Š”์ง€ ๊ทธ๋Ÿฌํ•œ ๊ณผ์ •์ด ์žˆ์ง€๋งŒ ๋‚ด์šฉ์ด ๋„ˆ๋ฌด ๊นŠ์€ ๊ฒƒ ๊ฐ™์•„์„œ ์ƒ๋žตํ–ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์›น ์„œ๋ฒ„์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. ๐ŸŒฑ ์›น ์„œ๋ฒ„๋Š” ์–ด๋””์— ์„ค์น˜๋ ๊นŒ์š”? ๊ณผ๊ฑฐ์—๋Š” ์‚ฌ๋‚ด์˜ LAN์— ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•œ ๋‹ค์Œ, ์ธํ„ฐ๋„ท์—์„œ ์ง์ ‘์ ์œผ๋กœ ์•ก์„ธ์Šคํ–ˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ํŒจํ‚ท์€ ์•ก์„ธ์Šค ํšŒ์„ , ์„œ๋ฒ„์ธก ๋ผ์šฐํ„ฐ๋ฅผ ๊ฒฝ์œ ํ•ด์„œ ์„œ๋ฒ„ ๋จธ์‹ ์— ๋„์ฐฉํ•˜์—ฌ ํŒจํ‚ท์ด ํ๋ฅด๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋ชจ๋‘์— ๊ธ€๋กœ๋ฒŒ ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•ด์•ผ ๋ผ์„œ IP ์ฃผ์†Œ๊ฐ€ ๋ถ€์กฑํ•ด์ง„๋‹ค. ๋˜ํ•œ, ์„œ๋ฒ„๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ๋…ธ..

โœ๏ธ/Network 2023. 5. 19. 00:42
[์šฐํ…Œ์ฝ” 5๊ธฐ] ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฏธ์…˜ ํšŒ๊ณ 

ํ—™ํฌ์™€ ์ง„ํ–‰ํ•œ ๋ ˆ๋ฒจ 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๋‹จ๊ณ„ ..

[Network] ๋ผ์šฐํ„ฐ์˜ ์ฃผ์†Œ ๋ณ€ํ™˜๊ณผ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ

๐Ÿ€ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ผ์šฐํ„ฐ์˜ ํŒจํ‚ท ์ค‘๊ณ„ ๋™์ž‘์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ผ์šฐํ„ฐ์˜ ์ฃผ์†Œ ๋ณ€ํ™˜ ๊ธฐ๋Šฅ๊ณผ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž! ๐Ÿ€ ์ฃผ์†Œ ๋ณ€ํ™˜์ด ๋‚˜์˜จ ์ด์œ  ๋ผ์šฐํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ์ผ์„ ํ•˜์ง€๋งŒ, ๊ทธ์ค‘ ํ•ต์‹ฌ์€ ์ฃผ์†Œ ๋ณ€ํ™˜ ๋ฐ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์ด๋‹ค. ์ฃผ์†Œ ๋ณ€ํ™˜์€ ์™œ ๋‚˜์™”์„๊นŒ? ์ด์ „์—๋Š” IP์ฃผ์†Œ๋ฅผ ๊ด€๋ฆฌ ๊ธฐ๊ด€์— ์‹ ์ฒญ์„œ๋ฅผ ๋‚ด์„œ ํ• ๋‹น๋ฐ›์•˜์ง€๋งŒ, ์ธํ„ฐ๋„ท์— ์ ‘์†ํ•˜๋Š” ๊ธฐ๊ธฐ๊ฐ€ ๋งŽ์•„์ง€๋ฉด์„œ ํ• ๋‹นํ•ด์ค„ ์ฃผ์†Œ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋™์ผํ•œ ํšŒ์‚ฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋Š” ๋‹ค๋ฅธ ํšŒ์‚ฌ์˜ ์ฃผ์†Œ์™€ ๋™์ผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค. ์ด๋Š” ์–ด์ฐจํ”ผ ๋‹ค๋ฅธ ํšŒ์‚ฌ์˜ ํŒจํ‚ท์€ ์„œ๋กœ ์™•๋ž˜ํ•  ์ผ์ด ์—†์œผ๋ฉฐ, ๊ฐ™์€ ํšŒ์‚ฌ์—์„œ๋ผ๋ฆฌ ๋ณ„๋„์˜ ์‚ฌ๋‚ด๋ง์œผ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํšŒ์‚ฌ์™€ ๊ฒน์ณ๋„ ์ƒ๊ด€์—†๋Š” ๊ฒƒ์ด๋‹ค. ๋•๋ถ„์— ๊ฐ™์€ ํšŒ์‚ฌ์— ์žˆ..

โœ๏ธ/Network 2023. 5. 15. 14:38
[Web] JWT๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • ์•Œ์•„๋ณด๊ธฐ

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ…Œ์ฝ”ํ†ก์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ๋ฐœํ‘œ ์ž๋ฃŒ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค! ์ธ์ฆ๊ณผ ์ธ๊ฐ€, ์ฟ ํ‚ค / ์„ธ์…˜ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋Š” ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. [Web] ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ž€? - ์ฟ ํ‚ค์™€ ์„ธ์…˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž! ๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ํ…Œ์ฝ”ํ†ก์—์„œ ์ง„ํ–‰ํ•œ ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ด€๋ จ ์ž๋ฃŒ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :D ๐ŸŒฑ ์ธ์ฆ (Authentication) ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์ด์ „์—, ๋“ฑ๋ก๋œ ์œ ์ €์˜ ์‹ ์›์„ cl8d.tistory.com 4. ํšจ์œจ์ ์œผ๋กœ ์ธ์ฆํ•˜๊ธฐ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์„ธ์…˜์„ ํ†ตํ•ด์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ธ์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ, ์„ธ์…˜ ๋ฐฉ์‹์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์€ ์„œ๋ฒ„๋„, ํด๋ผ์ด์–ธํŠธ๋„, ๊ทธ๋ฆฌ๊ณ  ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๊นŒ์ง€ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋„ˆ๋ฌด ๋‹ค์–‘ํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ..

โœ๏ธ/CS 2023. 5. 14. 18:48
[Spring] ์Šคํ”„๋ง ํ…Œ์ŠคํŠธ - ํ…Œ์ŠคํŠธ ์ปจํ…์ŠคํŠธ ์บ์‹ฑ, @SpringBootTest, @WebMvcTest

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ด์ „ ํฌ์ŠคํŒ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์Šคํ„ฐ๋””์—์„œ ๋งก์€ 'ํ…Œ์ŠคํŠธ' ํŒŒํŠธ์— ๋Œ€ํ•ด์„œ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค ๐Ÿ˜Š ํ…Œ์ŠคํŠธ ์ชฝ์€ ๊ณต์‹ ๋ฌธ์„œ๋„ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋„ˆ๋ฌด ์•ˆ ์ข‹์•„์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ํ›‘์–ด๋ณด์•˜๋‹ค. ์•„์ง ๋ชจ๋ฅด๋Š” ๊ฒŒ ์ •๋ง ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค ใ…Žใ…Ž ๐ŸŒฑ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ vs ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด, ์™ธ๋ถ€ ์ž‘์—…๋“ค๊ณผ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์™ธ๋ถ€ ์ž‘์—…๋“ค์„ ํฌํ•จํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์ž˜ ๋Œ์•„๊ฐ€๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, @SpringBootTest ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋งŽ๋‹ค. (๊ด€๋ จ๋œ ๋ชจ๋“  ๋นˆ์„ ๊ฐ€์ ธ์™€์„œ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋Š๋‚Œ) ๋ฐ˜๋ฉด, ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋งž์ถฐ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ์˜ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ E2E ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ฃผ์–ด์ง„ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ..

Back-end/Spring 2023. 5. 8. 00:50
[Spring] IoC Container์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ DI, ๋นˆ ์Šค์ฝ”ํ”„, ๋นˆ๊ณผ ์Šคํƒœํ‹ฑ ๋ฉ”์„œ๋“œ

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์Šคํ„ฐ๋””์—์„œ ๋ฐœํ‘œ ์ž๋ฃŒ๋กœ ์ค€๋น„ํ–ˆ๋˜ ๋‚ด์šฉ์ธ๋ฐ, ๋ธ”๋กœ๊ทธ์—๋„ ์˜ฎ๊ฒจ๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ •๋ฆฌํ•˜๋Š” ๊ธ€ ๐Ÿ˜Š ํ”„๋กค๋กœ๊ทธ ๋กœ๋“œ๋งต์˜ ํ‚ค์›Œ๋“œ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค! ๐ŸŒฑ DI (์˜์กด๊ด€๊ณ„ ์ฃผ์ž…) โœ”๏ธ ์˜์กดํ•œ๋‹ค? A๊ฐ€ B๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , B๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด A์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ๊ด€๊ณ„. ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. - ํด๋ž˜์Šค ๋ชจ๋ธ์ด๋‚˜ ์ฝ”๋“œ์—๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์ ์˜ ์˜์กด๊ด€๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋„๋ก, ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์˜์กดํ•ด์•ผ ํ•œ๋‹ค. - ๋Ÿฐํƒ€์ž„ ์‹œ์ ์˜ ์˜์กด๊ด€๊ณ„๋Š” ์ปจํ…Œ์ด๋„ˆ๋‚˜ ํŒฉํ„ฐ๋ฆฌ์™€ ๊ฐ™์€ ์ œ 3์˜ ์กด์žฌ (ex. IoC container)๊ฐ€ ๊ฒฐ์ •ํ•œ๋‹ค. - ์˜์กด๊ด€๊ณ„๋Š” ์‚ฌ์šฉํ•  ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์™ธ๋ถ€์—์„œ ์ œ๊ณตํ•ด์คŒ์œผ๋กœ์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค. โœ”๏ธ DI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์—‡์ด ์ข‹์€๊ฐ€? - ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ → ์žฌ์‚ฌ์šฉ์„ฑ, ์œ ์ง€๋ณด..

Back-end/Spring 2023. 5. 7. 18:19
[Network] ๋ผ์šฐํ„ฐ์˜ ํŒจํ‚ท ์ค‘๊ณ„ ๋™์ž‘์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ง€๋‚œ ํฌ์ŠคํŒ…๊นŒ์ง€๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ผ, ๋ธŒ๋ผ์šฐ์ € -> ์†Œ์ผ“ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ -> ํ”„๋กœํ† ์ฝœ ์Šคํƒ -> LAN ๋“œ๋ผ์ด๋ฒ„ -> LAN ์–ด๋Œ‘ํ„ฐ๊นŒ์ง€ ์–ด๋–ป๊ฒŒ HTTP ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” [ํด๋ผ์ด์–ธํŠธ ์ธก LAN]์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ ์ค‘, ํŠธ์œ„์ŠคํŠธ ํŽ˜์–ด ์ผ€์ด๋ธ”, ๋ฆฌํ”ผํ„ฐ / ์Šค์œ„์นญ ํ—ˆ๋ธŒ๋ฅผ ์ง€๋‚˜ ๋ผ์šฐํ„ฐ์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ํŒจํ‚ท์„ ์ค‘๊ณ„ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. (์ผ€์ด๋ธ”, ํ—ˆ๋ธŒ์—์„œ ์ผ์–ด๋‚˜๋Š” ๊ฑด ์ „๊ธฐ์‹ ํ˜ธ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋ผ ์ •๋ฆฌํ•˜์ง€ ์•Š์•˜๋‹ค.) ๐ŸŒฑ ๋ผ์šฐํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์„๊นŒ? ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ผ์šฐํ„ฐ์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ๊ฐ„์˜ ํŒจํ‚ท์„ ์ค‘๊ณ„ํ•˜๋Š” ์žฅ์น˜๋กœ, ์ด๋”๋„ท ๊ฐ™์€ ๋งํฌ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ๊ณผ IP ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ์‹ค์ œ๋กœ๋Š” ํ›จ์”ฌ ๋ณต์žกํ•˜๊ฒ ์ง€๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ทธ๋ฆฌ๋ฉด ์ด๋Ÿฐ ๊ตฌ์กฐ๋กœ ์ƒ๊ฒผ๋‹ค. ์—ฌ๊ธฐ์„œ '์ค‘๊ณ„..

โœ๏ธ/Network 2023. 5. 5. 20:19
[Network] TCP/IP์˜ ํŒจํ‚ท ์ฒ˜๋ฆฌ ๋ฐ UDP ํ”„๋กœํ† ์ฝœ์˜ ๋ฐ์ดํ„ฐ ์†ก์‹  ๊ณผ์ • ์•Œ์•„๋ณด๊ธฐ

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ”„๋กœํ† ์ฝœ ์Šคํƒ์—์„œ์˜ ๋ฐ์ดํ„ฐ ์†ก/์ˆ˜์‹  ๋ฐ ๋ง์†Œ ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” TCP / IP์—์„œ ํŒจํ‚ท์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  LAN ์–ด๋Œ‘ํ„ฐ๋กœ ์–ด๋–ป๊ฒŒ ์†ก์‹ ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ UDP์—์„œ์˜ ์†ก,์ˆ˜์‹  ๋™์ž‘์„ ์•Œ์•„๋ณด์ž! ๐ŸŒฑ ํŒจํ‚ท์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„๊นŒ? ํŒจํ‚ท์€ ํฌ๊ฒŒ ํ—ค๋”์™€ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ—ค๋”์—๋Š” ์ˆ˜์‹ ์ฒ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์†Œ ๊ฐ™์€ ์ œ์–ด ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ์—๋Š” ์‹ค์ œ๋กœ ์šด๋ฐ˜๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ์ƒ์„ฑ๋œ ํŒจํ‚ท์€ ์ค‘๊ณ„ ์žฅ์น˜๋กœ ๋„์ฐฉํ•˜๊ณ , ์ค‘๊ณ„ ์žฅ์น˜๋Š” ํ—ค๋” ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŒจํ‚ท์˜ ๋ชฉ์ ์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์ด๋•Œ, ์ค‘๊ณ„ ์žฅ์น˜ ๋‚ด์—๋Š” ์–ด๋Š ์ˆ˜์‹ ์ฒ˜๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๊ธฐ๋ก๋œ ํ‘œ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ํ•ด๋‹น ํ‘œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŒจํ‚ท์˜ ๋ชฉ์ ์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ค‘๊ณ„ ์žฅ์น˜๋ฅผ ๊ฑฐ์ณ์„œ ํŒจ..

โœ๏ธ/Network 2023. 5. 4. 23:53