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

๐Ÿ”ฌ์•„ํ‚คํ…์ฒ˜23

[Event-Driven-Architecture] CQRS ํŒจํ„ด์— ๋Œ€ํ•œ ์˜คํ•ด ํ’€๊ธฐ ๋ชฉ์ฐจ ๋„์ž… Query ์™€ Command ๋ž€? CQRS ๋ž€ CQRS ์˜ ์žฅ๋‹จ์  ๋„์ž… ํšŒ์‚ฌ ์‹œ์Šคํ…œ์ด ์ „ํ†ต์ ์ธ CRUD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Event ๊ธฐ๋ฐ˜์˜ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ”๋€Œ์–ด ๊ฐ€๋Š” ๊ณผ์ •์— ํŒ€์— ํ•ฉ๋ฅ˜๋ฅผ ํ•˜๊ฒŒ ๋˜์–ด ๋‚˜์˜ ์ตœ๊ทผ ๊ฐ€์žฅ ํฐ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๋ฐ”๋กœ ์ด CQRS ์ด๋‹ค. ํ•™๋ถ€ ์‹œ์ ˆ์—๋„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž ๊น ์ž ๊น ๋ดค๋˜ CQRS ๋Š” ์ด๋ฆ„ ๋ถ€ํ„ฐ ์ƒ์†Œํ•˜๊ธฐ์— ๊ฒ์„ ๋จน์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค. ํ•˜์ง€๋งŒ CQRS ์˜ ์›๋ฆฌ ์ž์ฒด๋Š” ์‚ฌ์‹ค ๋˜๊ฒŒ ๊ฐ„๋‹จํ•˜๋‹ค Command ์™€ Query ๋ฅผ ๋ถ„๋ฆฌํ•˜์ž! Command ์™€ Query ๋ฅผ ๋จผ์ € ์ •์˜ํ•˜๊ณ  ์ด์•ผ๊ธฐ๋ฅผ ๊ณ„์† ํ•ด๋ณด์ž Query ์™€ Command ๋ž€? Query ์™€ Command ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CQS ์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. CQS ๋Š” Design By Contr.. 2022. 6. 11.
[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.
[Distributed Tracing] Zipkin ๊ณผ Spring Cloud Sleuth ์— ๋Œ€ํ•ด์„œ ๋ณธ ๊ธ€์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹œ๋ฆฌ์ฆˆ๋กœ ์ด๋ก ๊ณผ ์‹ค์Šต์ด ํ•จ๊ป˜ ํฌํ•จ๋œ ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ชฉ์ฐจ์— ํ‘œ์‹œ๋œ ๊ธ€์„ ๋ชจ๋‘ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Distributed Tracing, ๋ถ„์‚ฐ ์ถ”์ ์ด๋ž€? Spring Cloud Sleuth ์™€ Zipkin Sleuth ๋กœ Http ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต Sleuth ๋กœ Messaging ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต ์‹ค์Šต์— ๋Œ€ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๊ณ  ์‹ถ๋‹ค๋ฉด ์‹ค์Šต github์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zipkin ์— ๋Œ€ํ•ด์„œ Zipkin ์€ ํŠธ์œ„ํ„ฐ์—์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์‚ฌ์šฉํ•œ Distributed Tracing Tool ์ด๋‹ค Zipkin ์—์„œ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ ์—์„œ๋„ ์ด์•ผ๊ธฐํ•˜์˜€๋˜ Dapper ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”์ ํ•œ๋‹ค. Zipkin ์—์„œ๋Š” Tracer ์™€ ํ•จ๊ป˜ํ•ด์•ผ ํ•œ๋‹ค.. 2022. 5. 1.