๐ 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. ์ด์ 1 2 3 4 ยทยทยท 7 ๋ค์