๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’Š Java & Kotlin & Spring/- spring framework +43

Multi Datasource Application ์„ธํŒ…ํ•˜๊ธฐ (with Spring Boot 3.3 + JPA + kotlin) ๋ชฉ์ฐจMulti DataSource Application ํ™˜๊ฒฝ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑSpring Application ๊ตฌ์„ฑ - 1. DataSource ๊ตฌ์„ฑSpring Application ๊ตฌ์„ฑ - 2. EntityMangager TxManager ๊ตฌ์„ฑ 1. Multi DataSource Application ํ™˜๊ฒฝ Spring Application ์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๋ถ„๋ช… ํ•˜๋‚˜์˜ applcation ์—์„œ ๋‘๊ฐœ ์ด์ƒ์˜ DB ๋ฅผ ๋ฐ”๋ผ๋ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.  ์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ํ•˜๋‚˜์˜ Spring Container ์—์„œ ๋‘๊ฐœ ์ด์ƒ์˜ DataSource ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ์˜ˆ์ •์ด๋‹ค. 2. ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑkotlin (jdk 21)Spring Boot 3.3.4Spring Data JpaMySQL & Post.. 2024. 9. 30.
AWS SDK ๋กœ DLQ ์— ์Œ“์ธ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๊ด€๋ จ ๊ธ€AWS SQS + Spring Boot 3 + kotlin ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ธฐAWS SQS Consumer ์—๋Ÿฌ๋ฅผ DLQ ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐmessage converter ๋ฅผ ์ด์šฉํ•œ sqs message serializerAWS SDK ๋กœ DLQ ์— ์Œ“์ธ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์•ž์„  ์‹œ๊ฐ„์— ์šฐ๋ฆฌ๋Š” SQS ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Spring Boot 3 ๋กœ producer/consumer ๋ฅผ ๊ตฌํ˜„ ํ•˜์—ฌ DLQ ๋ฅผ ์ด์šฉํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌ ํ•˜์˜€๋‹ค. DLQ ์— ์Œ“์ธ ๋ฉ”์‹œ์ง€๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๋‹ค. ์ง์ ‘ console ์„ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  programmatically ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” web console UI ๊ฐ€ ์•„๋‹Œ programmatically ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ.. 2024. 8. 4.
DLQ ๋กœ SQS Consumer ์—๋Ÿฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๊ด€๋ จ ๊ธ€AWS SQS + Spring Boot 3 + kotlin ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ธฐAWS SQS Consumer ์—๋Ÿฌ๋ฅผ DLQ ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐmessage converter ๋ฅผ ์ด์šฉํ•œ sqs message serializerAWS SDK ๋กœ DLQ ์— ์Œ“์ธ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์•ž์„  ์‹œ๊ฐ„์— ์šฐ๋ฆฌ๋Š” SQS ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Spring Boot 3 ๋กœ producer/consumer ๋ฅผ ๊ตฌํ˜„ ํ•˜์˜€๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Consumer Application ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํŒจ์— ๋Œ€์ฒ˜ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ DLQ ๋ฅผ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ์‹ค์Šต์„ ํ†ตํ•ด Spring Boot 3 ์™€ kotlin ์œผ๋กœ ๊ฐ„๋‹จํžˆ DLQ Consumer ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜์ž. ๋ชฉ์ฐจDLQAWS ์—์„œ DLQ ๊ตฌ์„ฑํ•˜๊ธฐDLQ Consumer.. 2024. 7. 29.
AWS SQS + Spring Boot 3 + kotlin ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ธฐ ๊ด€๋ จ ๊ธ€AWS SQS + Spring Boot 3 + kotlin ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ธฐAWS SQS Consumer ์—๋Ÿฌ๋ฅผ DLQ ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐmessage converter ๋ฅผ ์ด์šฉํ•œ sqs message serializerAWS SDK ๋กœ DLQ ์— ์Œ“์ธ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ด๋ฒˆ ๊ธ€์˜ ๋ชฉํ‘œ๋Š” Spring Boot ๊ณผ kotlin ์„ ์ด์šฉํ•ด์„œ SQS ๋ฅผ ์—ฐ๋™ํ•˜๋Š” application ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Spring Boot ๋กœ application ์„ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ๊ฐ„๋žตํ•˜๊ฒŒ SQS ์˜ ์„ค์ •์ด ์–ด๋–ค ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๋ชฉ์ฐจprerequisitesIAM User ์ƒ์„ฑํ•˜๊ธฐsqs ์ƒ์„ฑํ•˜๊ธฐspring boot ์™€ ์—ฐ๋™SQS ์˜ ์—ฌ๋Ÿฌ ์„ค์ •๋“ค1. prerequisities๋‹ค์Œ ๋ฒ„์ „์œผ๋กœ ์‹ค์Šต์„ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋‹ค.. 2024. 7. 27.
Spring ์—์„œ @Async ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ThreadPoolTaskExecutor ๋ฅผ ๋“ฑ๋กํ•ด์ฃผ์ž TL;DR ์ด๋ฒˆ ๊ธ€์˜ ํ•ต์‹ฌ์„ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค @Async ์€? Spring ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ ์™œ ThreadPoolTaskExecutor ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ• ๊นŒ? Spring ์˜ ๊ธฐ๋ณธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ Executor ๋Š” ๋งค๋ฒˆ ์ƒˆ๋กœ์šด thread ๋ฅผ ์ƒ์„ฑ ThreadPool ์„ ์ด์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ ์‚ฌ์ „์ง€์‹ Executor ์™€ ThreadPoolExecutor Spring ์˜ TaskExecutor ThreadPoolExecutor ์ดํ•ดํ•˜๊ธฐ ์ •ํ™•ํžˆ๋Š” ThreadPoolExecutor ์•ˆ์—์„œ ์–ด๋–ค ๋กœ์ง์— ์˜ํ•ด ์ƒˆ๋กœ์šด thread ๋ฅผ ๋งŒ๋“œ๋Š”์ง€ ์•Œ์•„์•ผ ํ•จ ์„ค์ •์— ๋”ฐ๋ผ single thread ์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Œ ์ ์ ˆํ•œ ThreadPoolTaskExecutor ์˜ ์„ค์ • ๊ฐ’ ์ฐพ๊ธฐ.. 2024. 4. 17.
[Spring] ApplicationEventPublisher ๋ฅผ ์ด์šฉํ•ด์„œ Event ๋ฅผ ๋ฐœํ–‰ํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ ํ•ด๋‹น ๊ธ€์˜ ์ „์ฒด ์†Œ์Šค์ฝ”๋“œ๋Š” github ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. README ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” ๋ชฉ์ฐจ ๋™๊ธฐ There is No Magic in spring ๋™๊ธฐ ์ตœ๊ทผ์— DDD ๋ฅผ ํ•™์Šตํ•˜๋ฉด์„œ ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ Spring ์—์„œ ํ•œ VM ์•ˆ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ handling ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ ‘ํ–ˆ๊ณ , ๊ทธ์™€ ๊ด€๋ จํ•ด์„œ ์—ฌ๋Ÿฌ ์‹ค์Šต์„ ํ•ด๋ณด๋˜ ์ค‘ Spring ์—์„œ ๋ฌด์–ธ๊ฐ€ Magic ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์„ ๋ฐ›์•˜๋‹ค. ๊ธด ๋ง ํ•„์š” ์—†์ด ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด์ž. @Entity(name = "orders") public class Order { public static Order create() { return new Order(); } @Id private Long id; .. 2022. 8. 15.