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

์ „์ฒด ๊ธ€244

[์ด๋ฒคํŠธ ์†Œ์‹ฑ๊ณผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜] CH.1 ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ ํ˜„์žฌ ๋‹ค๋‹ˆ๊ณ  ์žˆ๋Š” ํšŒ์‚ฌ๋Š” ์‹ค - ํŒ€ ๊ตฌ์กฐ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค.๋‚˜๋Š” ์ œํ’ˆ์‹ค ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด์ธ๋ฐ, ๊ฒฉ์ฃผ๋กœ ์ œํ’ˆ์‹ค ๋ฐฑ์—”๋“œ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ํ˜„์žฌ ์†ํ•ด ์žˆ๋Š” ์„ฑ์žฅํŒ€์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ๋ถ„๋“ค์€ ์ œํ’ˆ์‹ค ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค๋ผ๋ฆฌ ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์Šคํ„ฐ๋””๋ฅผ ํ•˜์‹ ๋‹ค๊ณ  ํ•˜์—ฌ,๋ฐฑ์—”๋“œ๋Š” ๋‚ด๊ฐ€ ํ•œ๋ฒˆ ์Šคํ„ฐ๋””๋ฅผ ์ œ์•ˆํ•˜๋ฉด ์–ด๋–จ๊นŒ๋ž€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค!ํšŒ์˜ ๋•Œ, ์Šคํ„ฐ๋”” ์ฃผ์ œ์™€ ์‹œ์ž‘์— ๋Œ€ํ•ด์„œ ์†Œ์Šค๋ฅผ ๋˜์กŒ๊ณ , ๋‚˜ ํฌํ•จ 5๋ช…์ด์„œ ์ œํ’ˆ์‹ค ๋ฐฑ์—”๋“œ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ˜„์žฌ ํŒ€ & ์‹ค ๋ณ„๋กœ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ ์ค‘์ด๋ฏ€๋กœ,์ฒซ ์‹œ์ž‘์€ ๋น„๊ต์  ๊ฐ„๊ฒฐํ•˜๊ณ  ์ต์ˆ™ํ•œ ๊ฐœ๋…์ธ ์ด๋ฒคํŠธ ์†Œ์‹ฑ ํ™œ์šฉํ•œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ฃผ์ œ๋กœ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.๋‚ด๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ์Šคํ„ฐ๋””๋งŒ ๋ญ ๊ฑฐ์˜ 3๊ฐœ์ธ๋ฐ.. ๊ทธ๋ž˜๋„ ๊ฐ™์ด ํ•˜๋ฉด ๋‹ค ์ข‹์€ ๊ฑฐ์ง€~~ใ…Žใ…Ž์ด ์Šคํ„ฐ๋””๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งˆ์น˜๊ณ , ํšŒ์‚ฌ ์†Œ์Šค์—.. 2025. 2. 13.
[Spring Boot] Restclient & HttpInterface ์กฐํ•ฉ ์‚ฌ์šฉ ์‹œ, ์š”์ฒญ ์‘๋‹ต์„ Logging ํ•ด๋ณด์ž ๋งŽ์€ Spring ๊ฐœ๋ฐœ์ž๋“ค์ด RestClient ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ, Spring์ด API ํ˜ธ์ถœ ๋„๊ตฌ์˜ ๊ณตํ†ต์ ์„ ์ถ”์ƒํ™”ํ•ด์„œ ํ•˜๋‚˜์˜ Adapter ์ธ Http Interface ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋“ฏ ํ•˜๋‹ค. ์žฅ์ ์€ ๋ฐ˜๋ณต๋˜๋Š” RestClient ์˜ ์ฒด์ด๋‹ ์ฝ”๋“œ๋ฅผ ๊ณตํ†ตํ™” ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Open feign ์„ ์‚ฌ์šฉํ•˜๋“ฏ์ด Interface ํ•˜๋‚˜๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์ข€ ๋” ๊ณ ๋„ํ™”๋ฅผ ํ•ด์•ผํ•˜์ง€ ์•Š๊ฒ ๋Š”๊ฐ€.์šด์˜์—์„œ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ด logging ์ด๋‹ค.๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ logging ํ•ด๋†“๋Š” ํŽธ์ด trace ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ํ›จ์”ฌ ์ˆ˜์›”ํ•  ๊ฒƒ์ด๋‹ค. ํ˜ธ์ถœํ•˜๋Š” API ๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก configuration ํ•ด์•ผ ํ•˜๋Š” rest client ์˜ Bean ๋“ฑ๋ก ์ฝ”๋“œ๋„ ๋งŽ์•„์งˆ ๊ฒƒ์ด๋ฏ€.. 2025. 1. 6.
[ํšŒ๊ณ ] 2024๋…„์„ ๋งˆ์น˜๋ฉฐ ํ–‡์ˆ˜๋กœ ๊ฐœ๋ฐœ ๊ฒฝ๋ ฅ์ด ๋ฒŒ์จ 2๋…„์ด ๋˜์—ˆ๋‹ค.์—Š๊ทธ์ œ ์—ฐ๋ง ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๋•Œ๊ฐ€ 1๋…„์ฐจ์˜€๋Š”๋ฐ, ์‹œ๊ฐ„ ์ฐธ ๋น ๋ฅด๊ฒŒ ํ๋ฅด๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๐Ÿ˜‚ ์˜ฌํ•ด๋Š” ์ฐธ ๋‹ค์–‘ํ•œ ์ผ๋“ค์ด ์žˆ์—ˆ๋‹ค.์ด์ง ์ด๋ผ๋Š” ๋น… ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์—ˆ๊ธฐ๋„ ํ–ˆ๊ณ , ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ต๋ฅ˜ํ•˜๋ฉฐ ์œ ์ตํ•œ ๊ฒฝํ—˜์„ ์–ป๊ธฐ๋„ ํ–ˆ๋‹ค. 2024๋…„์€ ์‹œ์ž‘๋ถ€ํ„ฐ ์ด์ง์„ ์œ„ํ•ด ์ค€๋น„ํ–ˆ๋˜ ๊ธฐ๊ฐ„๋“ค์ด์—ˆ๋‹ค.์ด์ง์„ ๊ฒฐ์‹ฌํ•˜๊ฒŒ ๋œ ์ด์œ ๋กœ ๊ฐ€์žฅ ๊ฐˆ์ฆ์ด ๋‚ฌ๋˜ ์š”์†Œ๋“ค์€๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์„œ๋น„์Šค์˜ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๋“ค์„ ์œตํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•ด๋ณด๋Š” ์ž์œ ๋กœ์šด ํ™˜๊ฒฝ,๊ทธ๋ฆฌ๊ณ  ๋” ์ฒด๊ณ„์ ์ธ ๊ธฐ์ˆ  ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ๊ณผ ์„ ๋ฐฐ๋“ค์„ ์›ํ–ˆ๋‹ค. ์Šคํ„ฐ๋””๋ฅผ ๋งค์ฃผ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ, ์ด๋ฒˆ ๋งŒํผ์€ ์ด์ง์— ๋Œ€ํ•œ ํฌ์ปค์Šค๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์ฃผ์ œ๋ฅผ ์„ ์ •ํ–ˆ์—ˆ๋‹ค.๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„ ์‹ค๋ ฅ์€ ๊ธฐ๋ณธ์ด๊ณ , CS ์ง€์‹ & ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๋Šฅ๋ ฅ๊ณผ DB์—.. 2024. 12. 25.
[Delta Lake] DB Sink ๋˜๋Š” ๊ฑด๋“ค์˜ ๋ชจ์ˆ˜๋ฅผ ์ค„์—ฌ๋ณด๊ธฐ ๋‚˜๋Š” ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด์ด์ง€๋งŒ, Databricks ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง ์—…๋ฌด๋„ ๊ฒธํ•˜๊ณ  ์žˆ๋‹ค.์ถ”ํ›„ ๊ฐœ๋ฐœ ์ปค๋ฆฌ์–ด๋ฅผ ๋ฐ์ดํ„ฐ ์ชฝ์œผ๋กœ ์ „ํ–ฅํ•˜๊ณ  ์‹ถ๊ธฐ๋„ ํ•˜์—ฌ, ํ˜„์žฌ ํšŒ์‚ฌ์— ์ž…์‚ฌ ์ดํ›„ ์ง€์†์ ์ธ ๋ฉด๋‹ด์—์„œ ๋ฐ์ดํ„ฐ ์—…๋ฌด๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์ ๊ทน์ ์œผ๋กœ ์–ดํ•„์„ ํ–ˆ๊ณ , ์ฑ•ํ„ฐ ๋ฆฌ๋“œ๋ถ„์€ ์ด๋ฅผ ํ”์พŒํžˆ ๋ฐ›์•„๋“ค์—ฌ์ฃผ์…จ๋‹ค. ์›ํ•˜๋Š” ์—…๋ฌด๋ฅผ ๊ฒธํ•˜๊ฒŒ ๋˜์–ด ์ •๋ง ํ–‰๋ณตํ•˜๋‹ค. Databricks๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๋Š” API๋Š” Apache Spark๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.์‚ฌ์‹ค ์ ๊ทน์ ์ธ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง๋ณด๋‹ค๋Š” ๋ฐ์ดํ„ฐ ํ”Œ๋žซํผ, ๋ฐ์ดํ„ฐ ๋ถ„์„ํŒ€์—์„œ ๋งŒ๋“ค์–ด์ฃผ์‹  Raw Data๋ฅผ ์„œ๋น„์Šค์— ๋งž๊ฒŒ ๊ฐ€๊ณตํ•˜์—ฌ Delta table์— ์ ์žฌํ•œ ํ›„, ์ด๋ฅผ DB Sink ํ•˜๋Š” ์šฉ๋„์˜ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ์ฒ˜์Œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐœ๋ฐœํ–ˆ์„ ๋•Œ๋Š”, ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ง„ํ–‰ํ–ˆ์—ˆ๊ธฐ์— ๋ชจ๋“ .. 2024. 11. 30.
Bean ๋“ฑ๋ก์— ๋Œ€ํ•œ ์žฌ๊ณ  SpringBoot์—์„œ Bean์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ. 1. ํด๋ž˜์Šค์— ์ง์ ‘ @Component ์• ๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ 2. @Configuration ์• ๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•ด @Bean ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ์‹ ์œ„ 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ๋ณดํŽธ์ ์ด๋‹ค. ๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋˜ ๋ณดํ†ต์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ๋Š” 1๋ฒˆ์„ ์••๋„์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. @Configuration ๋ฐฉ์‹์˜ ๊ฒฝ์šฐ, ํ†ต์ƒ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•จ์ด๋ผ๋ฉฐ ๋ฉด์ ‘ ์งˆ๋ฌธ์—์„œ ์ •์„์ ์œผ๋กœ ํšŒ์ž๋œ๋‹ค. ๊ทธ ๊ณ ์ • ๊ด€๋… ํƒ“์—, ๋‚˜์˜ ๊ฒฝ์šฐ๋„ 2๋ฒˆ ๋ฐฉ์‹์€ ์™ธ๋ถ€ ์„ค์ • ์ด์™ธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์—ˆ๋‹ค. Java9์—์„œ ๋‚˜์˜จ, ์ƒˆ๋กœ์šด ์ถ”์ƒํ™” ๊ฐœ๋…์ธ ๋ชจ๋“ˆ์ด๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค. ๋ชจ๋“ˆ์—๋Š” ์ข…์†์„ฑ(dependency)์˜ ๊ฐœ๋…์ด ์žˆ์œผ๋ฉฐ, Public API๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  .. 2024. 10. 12.
Spring boot multi datasource ๋“ฑ๋ก ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ Spring Boot Multi datasource ๋“ฑ๋ก ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ์ตœ๊ทผ ์ง„ํ–‰ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋Š” ์™ธ๋ถ€ ํœด๋ฌด์ผ ์ •๋ณด API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ DB์— ์ ์žฌํ•˜๋Š” ์›”๋ฐฐ์น˜์šฉ Spring Batch ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.ํšŒ์‚ฌ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ DataBase๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ๋ฉ”์ธ DB๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๊ณ , spring batch ์šฉ DB๋Š” ๋”ฐ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.๊ทธ๋ž˜์„œ ๋ฉ€ํ‹ฐ datasource bean ์„ ๋“ฑ๋กํ•ด์ค˜์•ผ ํ–ˆ๋‹ค.๊ทธ ๊ณผ์ •์—์„œ ์ •๋ง ๊ธฐ์ดˆ์ ์ด์ง€๋งŒ ์‹ค์ˆ˜ํ–ˆ๋˜ ๋ถ€๋ถ„์„ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.Multi Datasourceํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ.spring ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ yaml ํŒŒ์ผ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ datasource ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.๋”ฐ๋กœ java ์ฝ”๋“œ๋กœ bean ์„ ๋“ฑ๋กํ•  ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ์ด๋‹ค.ํ•˜์ง€.. 2024. 9. 18.
๋ฒˆ์•„์›ƒ, ๋‚˜์˜ ๊ฒฌํ•ด ์–ด๊น€์—†์ด ํ–‰๋ณตํ•œ ๋‚ ๋“ค์„ ๋ณด๋‚ด๊ณ  ์žˆ๋‹ค. ํ•˜๊ณ  ์‹ถ์€ ์ผ์„ ์žฌ๋ฐŒ๊ฒŒ ํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ทจ๋ฏธ ํ™œ๋™๋„ ์ƒ๊ฒผ๊ธฐ๋„ ํ–ˆ๊ณ , ์˜ฌํ•ด ์ด๋ฃฐ ์ƒˆ๋กœ์šด ๋ชฉํ‘œ๋„ ์ƒ๊ฒจ์„œ ํ•ญ์ƒ ๋งค์ผ์ด ์ฆ๊ฒ๋‹ค. ์ตœ๊ทผ์— ์˜ค๋žœ๋งŒ์— ๋ณด๋Š” ์ง€์ธ์„ ๋งŒ๋‚˜์„œ ๊ฐ€๋ณ๊ฒŒ ์ €๋…์„ ๋จน์œผ๋ฉด์„œ ์ด๋Ÿฐ์ €๋Ÿฐ ์–˜๊ธฐ๋“ค์„ ๋‚˜๋ˆด๋‹ค. ๊ธฐ์กด ์ „๊ณต๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์™€ ๊ฐ™์€ ์ปค๋ฆฌ์–ด๋ฅผ ๊ฑธ์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ค€๋น„ํ•˜๋Š” ์ค‘์ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋Œ€ํ™”๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ, ๋‚˜์˜ ์ƒˆ๋กญ๊ฒŒ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ทจ์—…๊นŒ์ง€ 1๋ถ„ 1์ดˆ ์•„๋ผ๋ฉฐ ์ง„ํ–‰ํ–ˆ๋˜ ์‹œ์ ˆ์ด ๋– ์˜ฌ๋ผ, ๊ฒฝํ—˜๊ณผ ๊ธฐ๋ฐ˜ ์ง€์‹์„ ์–˜๊ธฐํ•˜๋ฉด์„œ ์ž์—ฐ์Šค๋ ˆ ๋ฒˆ์•„์›ƒ์— ๋Œ€ํ•œ ์ฃผ์ œ๊ฐ€ ํŠ€์–ด๋‚˜์™”๋‹ค. "OO์•ผ ๋„ˆ๋Š” ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰ํ•ด ์˜ค๋ฉด์„œ, ๋ฒˆ์•„์›ƒ ๊ฐ™์€ ๊ฒŒ ์—†์—ˆ์–ด?" ์ง€์ธ์ด ์งˆ๋ฌธ์„ ๋˜์กŒ๋‹ค. "๊ธ€์Ž„, ๋‚˜๋Š” ๋ฒˆ์•„์›ƒ ๊ทธ๋Ÿฐ ๊ฑฐ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด." "๊ทผ๋ฐ ๋ชฉํ‘œ๊ฐ€ ๋ช…ํ™•ํ•˜๋ฉด ๋ฒˆ์•„์›ƒ์ด ์˜ฌ ์„ธ๊ฐ€ ์—†์ง€ ์•Š์„๊นŒ.".. 2024. 9. 16.
์ผ์ฃผ์ผ์˜ ํœด์‹๊ณผ ์ƒˆ๋กœ์šด ์ทจ๋ฏธ ๊ฐœ์‹œ ํ‡ด์‚ฌ ํ›„ ์ž…์‚ฌ ์ „ ์ผ์ฃผ์ผ์˜ ํœด์‹ ๊ธฐ๊ฐ„์ด ์ฃผ์–ด์กŒ๋‹ค.๋ฌด์—‡์„ ํ•˜๊ณ  ์‰ฌ์–ด์•ผ ํ• ๊นŒ ํ•˜๋‹ค, ์ฃผ๋ณ€ ์ง€์ธ๋“ค ๊ถŒ์œ ์— ๋ฌด๊ณ„ํš์œผ๋กœ 2๋ฐ• 3์ผ ์ œ์ฃผ๋„ ์—ฌํ–‰์„ ๋‹ค๋…€ ์™”๋‹ค.์ฐจ๊ฐ€ ์—†์–ด์„œ ๋ถˆํŽธํ–ˆ์ง€๋งŒ, ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋‚œ ์ธ์—ฐ๋“ค์„ ํ†ตํ•ด ์ฐจ๋„ ์–ป์–ดํƒ€๊ฐ€๋ฉด์„œ ๋œปํ•˜์ง€ ์•Š๊ฒŒ ์žฌ๋ฐŒ๊ฒŒ ๊ตฌ๊ฒฝํ•˜๊ณ  ๋จน๊ณ  ์‰ฌ์—ˆ๋‹ค.์„ธ์ƒ์ด ์ •๋ง ์ข๋‹ค๊ณ  ๋Š๋‚€๊ฒŒ, ๊ณ ๋“ฑํ•™๊ต ์นœ๊ตฌ๋ฅผ ์•„๋Š” ์ธ์—ฐ์„ ๋งŒ๋‚ฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฐธ ์„ธ์ƒ ์ข๊ณ  ์‹ ๊ธฐํ–ˆ๋‹ค.์—ฌํ–‰์— ํฐ ๊ฐํฅ์€ ์—†์–ดํ•˜๋Š” ์„ฑ๊ฒฉ์ด์ง€๋งŒ, ์ด๋ฒˆ์—๋Š” ์งง๊ฒŒ๋ผ๋„ ๋‹ค๋…€์˜ค๊ธธ ์ž˜ํ–ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.(๋ฉดํ—ˆ ์ด๋ฒˆ ๋…„๋„ ์•ˆ์— ๋ฌด์กฐ๊ฑด ๋”ฐ์•ผ๊ฒ ๋‹ค.) ์ฃผ์ง“์ˆ˜๋„ ์‹œ์ž‘ํ–ˆ๋‹ค.์ฒซ ํšŒ์‚ฌ ๋™์ผ ์ง๊ตฐ ๊ฐœ๋ฐœ์ž ํ˜•๊ณผ ์ง€์†์ ์œผ๋กœ ์—ฐ๋ฝํ•˜๋ฉฐ ์ง€๋‚ด๋Š”๋ฐ, ๊ทธ ํšŒ์‚ฌ ๋‹ค๋‹ ๋•Œ๋ถ€ํ„ฐ ํ•ญ์ƒ ์ฃผ์ง“์ˆ˜๋ฅผ ๊ฐ™์ด ํ•˜์ž๊ณ  ๊ถŒ์œ ํ–ˆ์—ˆ๋‹ค๐Ÿ˜…์ด์ง๋„ ํ–ˆ๊ฒ ๋‹ค ์ €๋ฒˆ ์ฃผ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, ์ƒˆ๋กญ๊ฒŒ ์šด๋™์„ ๋ฐฐ์›Œ๋ณด๋Š” ๊ฑด ์‚ด๋ฉด์„œ ์ฒ˜์Œ์ด๋‹ค... 2024. 8. 19.
[DB] ์˜ตํ‹ฐ๋งˆ์ด์ € (1) Mysql ์„œ๋ฒ„๋กœ ์š”์ฒญํ•œ ์ฟผ๋ฆฌ๋Š” ์ตœ์ ์œผ๋กœ ์‹คํ–‰ ๋˜๊ธฐ ์œ„ํ•ด ์ตœ์ ์˜ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”.๋Œ€๋ถ€๋ถ„์˜ DBMS ์—์„œ๋Š” ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ๋‹ค.Explain ๋ช…๋ น์œผ๋กœ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš ํ™•์ธ ๊ฐ€๋Šฅ. Mysql ์—์„œ๋Š” ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™” (Cost-based optimizer, CBO) ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ’€ ํ…Œ์ด๋ธ” ์Šค์บ” ์กฐ๊ฑด- ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ ๊ฑด์ˆ˜๊ฐ€ ์ž‘์•„, ์ธ๋ฑ์Šค๋ฅผ ํƒํ•˜๊ธฐ ๋ณด๋‹ค ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ” ํ•˜๋Š” ํŽธ์ด ๋” ๋น ๋ฅธ ๊ฒฝ์šฐ- where ์ ˆ์ด๋‚˜ on ์ ˆ์— ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ์กฐ๊ฑด์ด ์—†์„ ๊ฒฝ์šฐ- ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋”๋ผ๋„, ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ํŒ๋‹จํ•œ ์กฐ๊ฑด ์ผ์น˜ ๋ ˆ์ฝ”๋“œ ๊ฑด์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์€ ์กฐ๊ฑด์—์„œ Mysql ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์„ ์‹œ๋„ํ•œ๋‹ค.ํ’€ ํ…Œ์ด๋ธ” ์Šค.. 2024. 8. 11.
๋ˆ„์  ๋ฐฉ๋ฌธ 3๋งŒ๋ช… ๋‹ฌ์„ฑ ์†ŒํšŒ ์ž‘๋…„ 8์›” ์ฆˆ์Œ 2๋งŒ ๋ช… ๋‹ฌ์„ฑ, 1๋…„์ด ์ฑ„ ์•ˆ ๋˜์–ด์„œ ๋ฒŒ์จ ๋ฐฉ๋ฌธ์ž ์ˆ˜ 3๋งŒ ๋ช…์ด๋‹ค. ๋ฐฉ๋ฌธ์ž ์ˆ˜ ์˜ค๋ฅด๋Š” ์†๋„๊ฐ€ ๋ถ™๋Š” ๊ฒƒ ๊ฐ™๊ธฐ๋„? ใ…Žใ…Ž 1๋…„ ์ „ ๋‚œ ์–ด๋–ค ์ƒ๊ฐ์„ ํ•˜๊ณ  ์žˆ์—ˆ์„๊นŒ? ์—ด์‹ฌํžˆ ์ฝ”๋”ฉ ์ค‘์ด์—ˆ๊ตฌ๋‚˜ ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ๐Ÿ˜…๐Ÿ˜… ์‹œ๊ฐ„๋„ ์ฐธ ๋น ๋ฅด๋‹ค. 1๋…„์ด ๋ฒŒ์จ ๋„˜์—ˆ์œผ๋‹ˆ ๋ง์ด๋‹ค. ๊ทธ๋• ํ•ญ์ƒ ์ƒˆ๋ฒฝ๊นŒ์ง€ ์•ผ๊ทผํ•˜๋ฉด์„œ, ๊ฐœ๋ฐœ์— ๋ชฐ์ž…ํ–ˆ์—ˆ๋Š”๋ฐ ๋ง์ด์ง€. ๊ทธ ๋‹น์‹œ ๋งˆ์ผ์Šคํ†ค๋„ ์ฐธ ์งง๊ธฐ๋„ ํ–ˆ๋‹ค. ์ฃผ๋ง ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ƒˆ๋ฒฝ 1, 2์‹œ ์•ผ๊ทผ ํ›„ ๊ท€๊ฐ€, ์ง‘ ๊ฐ€์„œ ์ž๊ณ  ๋ฐ”๋กœ ์ถœ๊ทผ์˜ ๋ฐ˜๋ณต. ๊ทธ๋ž˜๋„ ๋ณด๋žŒ์ฐผ๋‹ค. ์˜จ์ „ํžˆ ๋‚˜๋งŒ์˜ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. DB ๊ตฌ์กฐ ์„ค๊ณ„, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ, ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ๊นŒ์ง€ ๋‹ค ํ–ˆ์œผ๋‹ˆ ๋ง์ด๋‹ค. ์˜†์—์„œ ๋„์›€ ์ฃผ์‹  ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋ถ„๋“ค๊ป˜๋„ ์ฐธ ๊ฐ์‚ฌ๋“œ๋ฆฐ๋‹ค. ์ด ํšŒ์‚ฌ์—์„œ ์ฐธ ๋งŽ์ด๋„ ๋ฐฐ์› ๋‹ค. ์ธํ”„๋ผ ๊ตฌ์„ฑ, ๋ฐฐํฌ ํ™˜๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋ง, ๊ฐ.. 2024. 7. 27.
No more free! ์„ธ์ƒ์— ๊ณต์งœ๋Š” ์—†๋‹ค.์„ธ์ƒ์€ ๋‚˜์—๊ฒŒ ๋นš ์ง„๊ฒŒ ์—†๋‹ค. ์‚ด์•„์˜ค๋ฉด์„œ ํ•ญ์ƒ ๋Š๊ผˆ๋˜ ๊ฒƒ์€ ์›ํ•˜๋Š” ๊ฒƒ์„ ๊ณต์งœ๋กœ ๋ฐ”๋ž„ ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์ด๋‹ค.๋Œ€๊ฐ€๋“  ๊ฐ€์น˜๋“ , ๋ฌด์—‡์ด๋“  ์ง€๋ถˆํ•ด์•ผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒƒ์„ ์Ÿ์ทจํ•˜๋Š” ๊ฒƒ์€ ์„ธ์ƒ๊ณผ์˜ ๊ฑฐ๋ž˜์ด๋‹ค.๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์–ป๊ณ ์ž ํ•œ๋‹ค๋ฉด, ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ๊ฐ€์น˜๋ฅผ ๋จผ์ € ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.๊ทธ๋ž˜์•ผ, ๋น„๋กœ์†Œ ๊ณต์ •ํ•œ ๊ฑฐ๋ž˜๊ฐ€ ์„ฑ๋ฆฝ๋œ๋‹ค.๋ถˆ๊ณต์ • ๊ฑฐ๋ž˜๋Š” ์„ธ์ƒ์—์„œ ์„ฑ๋ฆฝ๋˜์ง€ ์•Š๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๊ฐ€์น˜๋Š” ๊ผญ ๋ฌผ์งˆ์ ์ธ ๊ฒƒ๋งŒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š๋Š”๋‹ค.๋น„๋ฌผ์งˆ์ , ์ฆ‰ ์†์— ์žกํžˆ์ง€ ์•Š๋Š” ๋ฌดํ˜•์˜ ๊ฐ€์น˜๋„ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ƒํ™ฉ์— ์ฒ˜ํ•œ ๊ฐœ์ธ๋งˆ๋‹ค ์ถฉ์กฑ์‹œํ‚ค๊ณ ์ž ํ•˜๋Š” ์š•๊ตฌ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.๊ทธ์™€ ๋™๋“ฑํ•œ ๊ฐ€์น˜๋กœ ๊ฑฐ๋ž˜๋ฅผ ํ•œ๋‹ค๋ฉด, ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•œ ๊ฑฐ๋ž˜๊ฐ€ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ์งˆ์„ ๋‹ค๋ฃจ๋Š” ์‹œ์žฅ,๋ฌดํ˜•์˜ ์ง€์‹์„ ๋‹ค๋ฃจ๋Š” ๊ต์œก,๊ฐ์ •๊ณผ ๋ณธ๋Šฅ ๊ทธ๋ฆฌ๊ณ  ๋ฌด์˜์‹์„ ์ฑ„.. 2024. 7. 17.
[DB] ์ธ๋ฑ์Šค ๊ฐ„๋žต ์ •๋ฆฌ [1] ์ธ๋ฑ์Šค๋žœ๋ค & ์ˆœ์ฐจ IO๋””์Šคํฌ ํ—ค๋”๋ฅผ 1๋ฒˆ, ์—ฌ๋Ÿฌ๋ฒˆ ์˜ฎ๊ธฐ๋Š๋ƒ? ์ฆ‰, ๋””์Šคํฌ์˜ ์„ฑ๋Šฅ์€ ๋””์Šคํฌ ํ—ค๋” ์œ„์น˜ ์ด๋™ ์—†์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ธฐ๋กํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ์ •Mysql ๋Š” ๊ทธ๋ฃน ์ปค๋ฐ‹, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ ๋ฒ„ํผ, InnoDB ๋กœ๊ทธ ๋ฒ„ํผ ๋“ฑ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐœ์„ ๊ฒฐ๊ตญ ๋žœ๋ค IO ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ์ •์˜ArrayList ์™€ SortedList ์˜ ์ฐจ์ด๋ฅผ ์•„๋Š”๊ฐ€?์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ or ์ •๋ ฌํ•˜์—ฌ ์ €์žฅ๋น ๋ฅด๊ฒŒ ์ ์žฌ or ๋Š๋ฆฌ์ง€๋งŒ ์ •๋ ฌํ•˜์—ฌ ์ ์žฌ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์–ด๋Š ์ •๋„ ํฌ๊ธฐํ•˜๊ณ , ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ํƒํ•˜๊ฒ ๋‹ค.B-Tree ์—์„œ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ๋ณดํ†ต์˜ ๊ฒฝ์šฐ, ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€ ๋น„์šฉ 1 ๊ฐ€์ • ์‹œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ๋น„์šฉ์„ 1.5 ๋กœ ์˜ˆ์ธกํ•˜๋Š” ํŽธ.์ธ๋ฑ์Šค ํ‚ค ์‚ญ์ œ์™€ ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ, InnoDB ์—”์ง„์— .. 2024. 6. 29.
[DB] ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฝ ๊ฐ„๋žต ์ •๋ฆฌ ํŠธ๋žœ์žญ์…˜ํŠธ๋žœ์žญ์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ž…์žฅ์—์„œ, ๊ณ ๋ฏผํ•ด์•ผ ํ•  ๋ฌธ์ œ๋ฅผ ํ’€์–ด์ฃผ๋Š” ํ•„์ˆ˜์ ์ธ DBMS ์˜ ๊ธฐ๋Šฅ.ํŠธ๋žœ์žญ์…˜ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญDBMS ์˜ ์ปค๋„ฅ์…˜๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ผญ ํ•„์š”ํ•œ ์ตœ์†Œ์˜ ์ฝ”๋“œ์—๋งŒ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํŠธ๋žœ์žญ์…˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ผ๋Š” ์˜๋ฏธ. ๊ฐ ๋‹จ์œ„ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„ฅ์…˜์„ ์†Œ์œ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜๋ก ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ์œ  ์ปค๋„ฅ์…˜์˜ ๊ฐœ์ˆ˜๋Š” ์ค„์–ด๋“ ๋‹ค. ๋ฉ”์ผ ์ „์†ก์ด๋‚˜, ํŒŒ์ผ ์ „์†ก ์ž‘์—… ๋“ฑ, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ์ž‘์—…์€ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ œ๊ฑฐํ•˜๋ผ. ์›น ์„œ๋ฒ„๋ฟ ์•„๋‹ˆ๋ผ DBMS ์„œ๋ฒ„๊นŒ์ง€ ์œ„ํ—˜ํ•œ ์ƒํ™ฉ ๋ฐœ์ƒ ์ €์žฅ ๋ฐ์ดํ„ฐ์˜ ๋‹จ์ˆœ ์กฐํšŒ์˜ ๊ฒฝ์šฐ๋„ ํŠธ๋žœ์žญ์…˜์— ํฌํ•จํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.๋ฝ๋ ˆ์ฝ”๋“œ ๋ฝ๋ ˆ์ฝ”๋“œ ์ž์ฒด๋งŒ์„ ์ž ๊ทธ๋Š” ๊ฒƒ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ ˆ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ, ์ธ๋ฑ์Šค์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ทผ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ๋‚ด๋ถ€.. 2024. 6. 27.
Spring Cloud OpenFeign ๋” ์ž˜ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์—์„œ,Spring Boot ๋ฅผ ์ด์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ๋ฉด,์™ธ๋ถ€ API ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์กด์žฌํ•œ๋‹ค. Spring ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ง€์›ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ Http Client ๊ฐ€ ์žˆ๋‹ค. RestTemplate ์˜ ๊ฒฝ์šฐ Blocking ๋ฐฉ์‹์œผ๋กœ Http ์š”์ฒญ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์œ„ํ•ด, ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด,์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•œ๋‹ค ํ• ๋•Œ, ์ž‘๋”” ์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋กœ ์ถ”์ƒํ™”๋ฅผ ๋งŽ์ด ์ง„ํ–‰ํ•˜์—ฌ ๋ฒˆ๊ฑฐ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด ์žˆ์—ˆ๋‹ค.๋ฌด์—‡๋ณด๋‹ค ์–ด๋– ํ•œ ์š”์ฒญ์„ ํ•˜๋Š”์ง€ ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ค์ง€ ์•Š์•˜๋‹ค. WebClient ์˜ ๊ฒฝ์šฐ, Non-Blocking ๋ฐฉ์‹์œผ๋กœ Http ์š”์ฒญ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฌผ๋ก  Blocking call ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.๋นŒ๋” ํŒจํ„ด์„ ํ™œ์šฉํ•œ ๋ฐฉ์‹์œผ๋กœ, RestTemplate ๋ณด๋‹ค๋Š” ๊ฐ€๋…์„ฑ์ด .. 2024. 5. 11.
MapStruct! JPA Entity ๋งคํ•‘ ๊ฐ„ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜์ž ์ตœ๊ทผ ๋น„์ƒ ๊ฒฐ์ œ ๋ชจ๋“œ๋ฅผ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌํ•˜๋ฉฐ, ์ฐธ์œผ๋กœ ์–ด์ด ์—†๋Š” ์ž‘์€ ์ฝ”๋”ฉ ๊ด€๋ จ ์ด์Šˆ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ์— ์ด์ƒ์ด ์žˆ์—ˆ๋‹ค. ๋ฐ”๋กœ, MapStruct ์–˜ ๋•Œ๋ฌธ์ธ๋ฐ.. ํ•œ๋ฒˆ ๋‚˜์—ดํ•ด๋ณด๊ฒ ๋‹ค. (ํ•ญ์ƒ ์ƒ๊ฐํ•˜๋Š” ๊ฑฐ์ง€๋งŒ, ์ฝ”๋“œ ๋‹จ ํ•œ์ค„์˜ ํŒŒ๊ธ‰ํšจ๊ณผ๊ฐ€ ์—„์ฒญ ๋‚˜๋‹ค.) MapStruct ๋ž€?Java Bean ์œ ํ˜• ๊ฐ„ ๋งคํ•‘ ๊ตฌํ˜„์„ ๋„์™€์ฃผ๋Š” ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ฝ”๋“œ ์ƒ์„ฑ ๋ฐ ๋Ÿฐํƒ€์ž„์—์„œ ์•ˆ์ •์„ฑ ๋ณด์žฅ์ˆœ์ˆ˜ Java code ๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋งคํ•‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. (Reflection ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ)Annotation Processor ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘ ๋ฐฉ์‹์— ํŽธ๋ฆฌํ•จ์„ ์ œ๊ณต ์‚ฌ์šฉ ์˜ˆ์‹œJAVA@Mapper public interface UserMapper { UserMapper INSTANCE = Mappers.g.. 2024. 3. 24.
๋ฐ˜์‘ํ˜•