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

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

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.
[Distributed Tracing] Messaging ํ™˜๊ฒฝ์—์„œ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต ๋ณธ ๊ธ€์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹œ๋ฆฌ์ฆˆ๋กœ ์ด๋ก ๊ณผ ์‹ค์Šต์ด ํ•จ๊ป˜ ํฌํ•จ๋œ ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ชฉ์ฐจ์— ํ‘œ์‹œ๋œ ๊ธ€์„ ๋ชจ๋‘ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Distributed Tracing, ๋ถ„์‚ฐ ์ถ”์ ์ด๋ž€? Spring Cloud Sleuth ์™€ Zipkin Sleuth ๋กœ Http ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต Sleuth ๋กœ Messaging ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต ์‹ค์Šต์— ๋Œ€ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๊ณ  ์‹ถ๋‹ค๋ฉด ์‹ค์Šต github์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Messaging ํ™˜๊ฒฝ ์—์„œ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” HTTP ํ™˜๊ฒฝ์—์„œ์˜ ๋ถ„์‚ฐ ์ถ”์  ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐœ๋žต์ ์ธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ ํ™•์ธํ•ด๋ณด์ž ์œ„ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์ž๋ฉด 2๊ฐœ์˜ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. HTTP API Messaging ์ด๋ฒˆ์—๋Š” HTTP.. 2022. 5. 1.
[Distributed Tracing] HTTP ํ™˜๊ฒฝ์—์„œ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šตํ•˜๊ธฐ ๋ณธ ๊ธ€์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹œ๋ฆฌ์ฆˆ๋กœ ์ด๋ก ๊ณผ ์‹ค์Šต์ด ํ•จ๊ป˜ ํฌํ•จ๋œ ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ชฉ์ฐจ์— ํ‘œ์‹œ๋œ ๊ธ€์„ ๋ชจ๋‘ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Distributed Tracing, ๋ถ„์‚ฐ ์ถ”์ ์ด๋ž€? Spring Cloud Sleuth ์™€ Zipkin Sleuth ๋กœ Http ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต Sleuth ๋กœ Messaging ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต ์‹ค์Šต์— ๋Œ€ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๊ณ  ์‹ถ๋‹ค๋ฉด ์‹ค์Šต github์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Spring Cloud Sleuth ๋ฅผ ์ด์šฉํ•œ HTTP ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์ด๋ฒˆ์€ ์ง€๋‚œ ์‹œ๊ฐ„์— ์•Œ์•„๋ณด์•˜๋˜ ๋ถ„์‚ฐ ์ถ”์ ์— ๋Œ€ํ•œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์šฐ์„  ๊ฐœ๋žต์ ์ธ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค ์œ„ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์ž๋ฉด 2๊ฐœ์˜ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. HTTP API Messaging.. 2022. 5. 1.
[Spring Boot] CORS ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ• (Filter, @CrossOrigin, WebMvcConfigurer) Server Side Template ๋ฐฉ์‹์ด ์•„๋‹Œ Front์™€ Back ์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” Cors๊ฐ€ ๋งค์šฐ ์นœ์ˆ™ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ ๊ฐœ๋ฐœ ํ๋ฆ„์—์„œ ์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ Cors ๋ฅผ ๋งŒ๋‚  ํ™•๋ฅ ์€ ๊ฐ€ํžˆ 100% ๋ผ๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ CORS ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋ฉฐ ๋˜, Spring Boot Application ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๋‹น ์ •์ฑ…์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž. CORS ํ•ด๊ฒฐํ•˜๊ธฐ ์šฐ์„  ๊ฐ€์žฅ ๋จผ์ € ๋ง ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ CORS ๋Š” ์—๋Ÿฌ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. Cross-Origin Resource Sharing Policy ์ด๋‹ค. ์ฒ˜์Œ ๋‚ด๊ฐ€ Front ์™€ Back ์„ ๋‚˜๋ˆ ์„œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ์—๋Š” ๋‹จ์ˆœํžˆ Front ์—์„œ fetch ์š”์ฒญ์œผ๋กœ Back ์„ ๋ฐ”๋ผ๋ณด๊ณ  ๋‚ ๋ฆฌ๋ฉด ๋ .. 2021. 8. 14.
[Spring Cloud] Spring Cloud Bus์™€ RabbitMQ ๋ฅผ ์ด์šฉํ•œ Config ์ •๋ณด ๋ฐ˜์˜ํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ Spring Cloud Config ์—์„œ ๋ณ€๊ฒฝ๋œ ์ •๋ณด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์—์„œ Spring Boot Actuator ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์— ๋‚˜์˜จ ์‹ค์Šต์„ ๋”ฐ๋ผํ•˜์‹œ๊ธธ ๊ถŒ๊ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ์ง€๋‚œ ์‹œ๊ฐ„์˜ ์„ค์ • ์ •๋ณด ๋ฐ˜์˜ ๋ฐฉ๋ฒ• Spring Boot Actuator ๋ฅผ ์ด์šฉํ•œ ์„ค์ • ์ •๋ณด ๋ฐ˜์˜ Spring Cloud Bus๋ž€? RabbitMQ๋ž€? Spring Cloud Bus ์‹ค์Šตํ•˜๊ธฐ RabbitMQ ๋“ฑ๋ก Config, Gateway, User Cloud Bus ๋“ฑ๋ก ์ง€๋‚œ ์‹œ๊ฐ„์˜ ์„ค์ • ์ •๋ณด ๋ฐ˜์˜ ๋ฐฉ๋ฒ• ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” ์„ค์ • ์ •๋ณด๋ฅผ ์™ธ๋ถ€ Repository ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋“ค์ด ํ•ด๋‹น ์„ค์ • ์ •๋ณด๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ์‹ค์Šต์„ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ.. 2021. 5. 20.