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

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

[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.
Spring Cloud Config ์—์„œ ๋ณ€๊ฒฝ๋œ ์ •๋ณด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์—์„œ Spring Boot Actuator ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ˜์˜ํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ Spring Cloud Config์˜ name, profiles ๊ทธ๋ฆฌ๊ณ  Github ๋ฅผ ์—ฐ๋™ํ•ด์„œ ์„ค์ • ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์— ๋‚˜์˜จ ์‹ค์Šต์„ ๋”ฐ๋ผํ•˜์‹œ๊ธธ ๊ถŒ๊ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ์„ค์ • ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์ด์œ  Spring Boot Actuator๋ž€? Spring Boot Actuator ์˜ ๊ธฐ๋Šฅ๊ณผ Endpoints Config Refresh Spring Boot Actuator ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€๊ฒฝ ์ •๋ณด ๊ฐฑ์‹ ํ•˜๊ธฐ User-Service์— Actuator ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ refresh Endpoints ํ™œ์„ฑํ™” ์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” yml ์„ค์ • ์ •๋ณด ๋ณ€๊ฒฝํ•˜๊ธฐ refresh ํ•˜๊ธฐ ์„ค์ • ์ •๋ณด๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์ด์œ  ์ง€๊ธˆ๊นŒ์ง€ Spring Cloud Config ์˜ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ์•Œ.. 2021. 4. 28.
Spring Cloud Config ์—์„œ ๋Œ€์นญํ‚ค๋ฅผ ์ด์šฉํ•œ application.yml ์˜ ๋ฏผ๊ฐ ์ •๋ณด ์•”ํ˜ธํ™” ํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ Spring Cloud Config์˜ name, profiles ๊ทธ๋ฆฌ๊ณ  Github ๋ฅผ ์—ฐ๋™ํ•ด์„œ ์„ค์ • ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์— ๋‚˜์˜จ ์‹ค์Šต์„ ๋”ฐ๋ผํ•˜์‹œ๊ธธ ๊ถŒ๊ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ๊ธฐ์กด Config Server์˜ ๋ฌธ์ œ์  ์•”ํ˜ธํ™”๋ฅผ ํ•˜์ง€ ์•Š์€ ์ •๋ณด์˜ ํƒˆ์ทจ ๊ฐ€๋Šฅ์„ฑ ์•”ํ˜ธํ™” ์ข…๋ฅ˜ ๋Œ€์นญํ‚ค ๋น„๋Œ€์นญํ‚ค Spring Cloud Config ์˜ encrypt, decrypt encrypt decrypt ์‹ค์Šตํ•˜๊ธฐ ๋Œ€์นญํ‚ค ์ด์šฉํ•˜๊ธฐ ๊ธฐ์กด Config Server์˜ ๋ฌธ์ œ์  ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” github๋ฅผ ์ด์šฉํ•ด์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์„ค์ • ํŒŒ์ผ๋“ค์„ ์ €์žฅํ•ด๋†“๊ณ  Config ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ฟŒ๋ ค์ฃผ๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด๊ณ  ์ด๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์—ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ๋‹ค์‹œ ๋“ค์–ด๊ฐ€๋ณด.. 2021. 4. 27.