๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€83

2024๋…„ ํšŒ๊ณ  ์–ด์ œ ์˜ฌ๋ ธ์–ด์•ผ ํ–ˆ๋Š”๋ฐ.. ๋„ˆ๋ฌด ์กธ๋ ค์„œ ์ž๋ฒ„๋ ธ๋‹ค.2025๋…„์˜ ์ฒซ๋‚ ์— ์“ฐ๋Š” 2024๋…„ ํšŒ๊ณ  Layer์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ์ธ Mad Sad Glad๋ผ๋Š” ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. Mad: ๋ฌด์—‡์ด ๋‹น์‹ ์„ ํ™”๋‚˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋ฐฉํ•ดํ•˜๋‚˜์š”?1. ์ฒด๋ ฅ2024๋…„ ๋ง‰ํŒ์—๋Š” ์ฒด๋ ฅ์ด ๋‹ฌ๋ ค์„œ ํž˜๋“ค์—ˆ๋‹ค. ๊ทธ๋Ÿด๋งŒ๋„ ํ•œ๊ฒŒ, 5์›” ์ดํ›„๋กœ ์šด๋™์„ ํ•œ ๋‚ ์ด ์†์— ๊ผฝ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋๊นŒ์ง€ ์ง€๊ตฌ๋ ฅ ์žˆ๊ฒŒ ์ผ์„ ํ•ด๋‚ด๋ ค๋ฉด ์šด๋™์€ ํ•„์ˆ˜์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ์š”์ฆ˜์€ ์ฒด๋ ฅ์„ ๊ธฐ๋ฅด๋ ค๊ณ  ์ธํ„ฐ๋ฒŒ ๋Ÿฌ๋‹ ์ค‘์ด๋‹ค! ์˜ฌํ•ด๋Š” ๊ผญ ๊พธ์ค€ํ•˜๊ฒŒ ์šด๋™ํ•ด์„œ ์ฒด๋ ฅ ์ข‹์•„์ ธ์•ผ์ง€ 2. ๊ณ„ํš์˜ ๋ถ€์žฌ2024๋…„์€ ์—ด์‹ฌํžˆ๋Š” ์‚ด์•˜์ง€๋งŒ ๊ตฌ์ฒด์  ๊ณ„ํš ์—†์ด ๋„ˆ๋ฌด ๋ฌด์ง€์„ฑ์œผ๋กœ๋งŒ ์—ด์‹ฌํžˆ ์‚ด์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.๋‚˜๋Š” ์ง„์งœ ๊ณ„ํš์„ ์•ˆ์„ธ์šด๋‹ค. ์„ธ์›Œ๋ดค์ž ๋Œ€์• ์ถฉ ๋‹น์ผ ๊ณ„ํš ์ •๋„..?์ตœ๊ทผ์— ์ง„์งœ ๊ฐ“์ƒ ์‚ฌ๋Š” ์นœ๊ตฌ๋ž‘ ๋ฐฅ์„ ๋จน์—ˆ๋Š”.. 2025. 1. 1.
[Test Code / Java] Spring ํ”„๋กœ์ ํŠธ์—์„œ Persistence Layer์˜ ํ…Œ์ŠคํŠธ Persistence Layer์˜ ํ…Œ์ŠคํŠธPersistence Layer๋Š” ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ์˜์—ญ์ด๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋กœ์ง๋งŒ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ์„ฑ๊ฒฉ์„ ๋งŽ์ด ๋ ๊ณ  ์žˆ๋‹ค.Persistence Layer๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ด์œ ๋Š” ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋กœ ์ธํ•ด ์ฟผ๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋‚˜๊ฐˆ ๊ฒƒ์ธ๊ฐ€๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. @SpringBootTest, @DataJpaTest@SpringBootTest: ์Šคํ”„๋ง์—์„œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜. ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ๋‹ฌ๊ณ  ํ…Œ์ŠคํŠธํ•˜๋ฉด ์Šคํ”„๋ง ์„œ๋ฒ„๋ฅผ ๋„์›Œ์„œ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.@DataJpaTest: ์–˜๋„ ์Šคํ”„๋ง ์„œ๋ฒ„๋ฅผ ๋„์›Œ์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. ๊ทผ๋ฐ ์ด ์–ด๋…ธํ…Œ์ด์…˜์€ ์Šคํ”„๋ง๋ถ€ํŠธ ํ…Œ์ŠคํŠธ๋ณด๋‹ค๋Š” ๊ฐ€๋ณ๋‹ค. JPA ๊ด€๋ จ๋œ ๋นˆ๋“ค๋งŒ ๋„์›Œ์„œ ์ฃผ์ž…์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Persi.. 2024. 12. 29.
[Test Code / Java] @DisplayName๊ณผ BDD ํ…Œ์ŠคํŠธ๋Š” []๋‹ค.ํ…Œ์ŠคํŠธ๋ž€ ๋ฌธ์„œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํ”„๋กœ๋•์…˜ ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ตํ•ด ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ๊ณผ ๊ด€์ ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋‹ค.์–ด๋Š ํ•œ ์‚ฌ๋žŒ์ด ๊ณผ๊ฑฐ์— ๊ฒฝํ—˜ํ–ˆ๋˜ ๊ณ ๋ฏผ์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ํŒ€ ์ฐจ์›์œผ๋กœ ์Šน๊ฒฉ์‹œ์ผœ์„œ, ๋ชจ๋‘์˜ ์ž์‚ฐ์œผ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.DisplayName@DisplayName์€ Junit5๋ถ€ํ„ฐ ์‹œ์ž‘๋œ ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ์ด๋ฆ„๋งŒ์œผ๋กœ๋Š” ์ด ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋–ค ํ…Œ์ŠคํŠธ์ธ์ง€ ์•Œ์•„๋ณด๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.์ด๋•Œ @DisplayName ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ข€ ๋” ์ƒ์„ธํ•œ ์„ค๋ช…์„ ์ ์„ ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์ž‘์—…ํ•  ๋•Œ @DisplayName์„ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•œ ์ ์ด ํ•˜๋‚˜ ๋” ์žˆ๋‹ค.์ธํ…”๋ฆฌ์ œ์ด์˜ Settings > Build, Execution, D.. 2024. 12. 28.
[Test Code / Java] TDD(Test Driven Development) TDD: Test Driven Development๋ž€?ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜์—ฌ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ตฌํ˜„ ๊ณผ์ •์„ ์ฃผ๋„ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ฆ‰, ๊ธฐ๋Šฅ ๊ตฌํ˜„๋ณด๋‹ค ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ๊ตฌํ˜„ํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•œ๋‹ค. Red-Green-RefactorTDD์˜ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” Red, Green, Refactor๋ฅผ ์ฃผ๋กœ ์–ธ๊ธ‰ํ•œ๋‹ค.Red: ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑ. → ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋ผ์žˆ์ง€ ์•Š๊ธฐ์— ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒƒ์ด ๋‹น์—ฐํ•˜๋‹ค.Green: ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ. → ์ดˆ๋ก๋ถˆ์„ ๋ณผ ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด, ์ด ๋‹จ๊ณ„์—์„œ์˜ ๊ตฌํ˜„์€ ๋‹ค์†Œ ์—‰ํ„ฐ๋ฆฌ์—ฌ๋„ ๋œ๋‹ค.Refactor: ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ„๋‹ค.Red-Green.. 2024. 12. 27.
[Test Code / Java] ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์ž‘์€ ์ฝ”๋“œ ๋‹จ์œ„(ํด๋ž˜์Šค ๋˜๋Š” ๋ฉ”์„œ๋“œ)๋ฅผ ๋…๋ฆฝ์ (=๋„คํŠธ์›Œํฌ๋ฅผ ํƒ„๋‹ค๋“ ๊ฐ€ ํ•˜๋Š” ์™ธ๋ถ€ ์ƒํ™ฉ์— ์˜์กดํ•˜์ง€ ์•Š์Œ)์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ๊ฒ€์ฆ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ด๋‹ค.JUnit5๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„ ์›ŒํฌXUnit - Kent Beck์ž๋ฐ” ๋ง๊ณ ๋„ ์—ฌ๋Ÿฌ ์ง„์˜์—์„œ ์‚ฌ์šฉ์—ฌ๋Ÿฌ ์–ด๋…ธํ…Œ์ด์…˜ ์ง€์› (ex. @Test)AssertJํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์›ํ™œํ•˜๊ฒŒ ๋•๋Š” ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌํ’๋ถ€ํ•œ API, ๋ฉ”์„œ๋“œ ์ฒด์ด๋‹ ์ง€์›๊น”๋”ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅ  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ธ๋ถ„ํ™”ํ•˜๊ธฐ์งˆ๋ฌธํ•˜๊ธฐ: ์•”๋ฌต์ ์ด๊ฑฐ๋‚˜ ์•„์ง ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์€ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋Š”๊ฐ€?์ด๋Ÿฐ ๊ฒƒ์„ ํ•ญ์ƒ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•œ๋‹ค.ํ•ดํ”ผ ์ผ€์ด์Šค์˜ˆ์™ธ ์ผ€์ด์Šคex) ์•„๋ฉ”๋ฆฌ์นด๋…ธ 0๊ฐœ ์ด๋Ÿฐ์‹์œผ๋กœ ์ž…๋ ฅ๋˜๋ฉด ์–ด๋–กํ•จ?→ ๊ฒฝ๊ณ„๊ฐ’ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค!๋ฒ”์œ„(์ด์ƒ, ์ดํ•˜, ์ดˆ๊ณผ, ๋ฏธ๋งŒ), ๊ตฌ๊ฐ„, ๋‚ ์งœ์˜ˆ๋ฅผ .. 2024. 12. 26.
[Network] OSI 7๊ณ„์ธต OSI 7๊ณ„์ธต์ด๋ž€?OSI 7๊ณ„์ธต์ด๋ž€ ๋„คํŠธ์›Œํฌ์—์„œ ํ†ต์‹ ์ด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ 7๋‹จ๊ณ„๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 7๊ณ„์ธต์„ 4๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์„œ1, 2๊ณ„์ธต: Network Interface3๊ณ„์ธต: Internet ๊ณ„์ธต4๊ณ„์ธต: Transport ๊ณ„์ธต5, 6, 7๊ณ„์ธต: Application ๊ณ„์ธต์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์†ก์‹ ํ•  ๋•Œ๋Š” ์†ก์‹  ์ธก์—์„œ 7๊ณ„์ธต, 6๊ณ„์ธต, ... ์œ— ๊ณ„์ธต๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๊ฑฐ์น˜๋ฉด์„œ ๋ฐ์ดํ„ฐ์— ํ—ค๋”๋ฅผ ํ•˜๋‚˜์”ฉ ๋ถ™์ธ๋‹ค. (์บก์Šํ™”)๊ทธ๋ฆฌ๊ณ  ์ˆ˜์‹  ์ธก์—์„œ๋Š” 1๊ณ„์ธต, 2๊ณ„์ธต, ... ์•„๋ž˜ ๊ณ„์ธต๋ถ€ํ„ฐ ๊ฑฐ์น˜๋ฉด์„œ ํ—ค๋”๋ฅผ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค. (์—ญ์บก์Šํ™”)7๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆˆ ์ด์œ ๋Š”?๊ณ„์ธต์„ ๋‚˜๋ˆˆ ์ด์œ ๋Š” ํ†ต์‹ ์ด ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ , 7๋‹จ๊ณ„ ์ค‘ ํŠน์ •ํ•œ ๊ณณ์— ์ด์ƒ์ด ์ƒ๊ธฐ๋ฉด ๋‹ค๋ฅธ ๋‹จ๊ณ„์˜ ์žฅ๋น„ .. 2024. 12. 22.