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

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

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] 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.
[Distributed Tracing] ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐ ์ถ”์ ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ [Distributed Tracing] ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐ ์ถ”์ ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ๋ณธ ๊ธ€์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹œ๋ฆฌ์ฆˆ๋กœ ์ด๋ก ๊ณผ ์‹ค์Šต์ด ํ•จ๊ป˜ ํฌํ•จ๋œ ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ชฉ์ฐจ์— ํ‘œ์‹œ๋œ ๊ธ€์„ ๋ชจ๋‘ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Distributed Tracing, ๋ถ„์‚ฐ ์ถ”์ ์ด๋ž€? Spring Cloud Sleuth ์™€ Zipkin Sleuth ๋กœ Http ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต Sleuth ๋กœ Messaging ํ™˜๊ฒฝ์˜ ๋ถ„์‚ฐ ์ถ”์  ์‹ค์Šต ์‹ค์Šต์— ๋Œ€ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๊ณ  ์‹ถ๋‹ค๋ฉด ์‹ค์Šต github์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ์ถ”์ ์ด ์™œ ํ•„์š”ํ•œ๊ฐ€? ์ด์ „์˜ ์›น ์„œ๋น„์Šค๋Š” 3-tier ์•„ํ‚คํ…์ฒ˜์™€ 2-tier ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ฃผ๋ฅผ ์ด๋ฃจ์—ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์„ธ์ƒ์— ๋‚˜์˜ค๊ณ  ์ด๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋Š” ๊ธฐ์—…์˜ ์‚ฌ๋ก€๊ฐ€ .. 2022. 5. 1.
[Event-Driven-Architecture] Message Oriented Middleware๊ณผ Message Broker์˜ ์ฐจ์ด ๋ฐ ์›๋ฆฌ ๋ชฉ์ฐจ ๋ฏธ๋“ค์›จ์–ด๋ž€? MOM ์ด๋ž€? MOM ๊ตฌ์„ฑ์š”์†Œ MOM vs without MOM Messaging ์˜ 2๊ฐ€์ง€ ๋ฐฉ์‹ PTP Messaging Pub/Sub Messaging Message Broker ๋Œ€ํ‘œ์ ์ธ MOM ์†”๋ฃจ์…˜ ์˜ค๋Š˜์€ ์š”์ฆ˜ ๋งŽ์€ ๋ถ„์•ผ์—์„œ ์ฑ„ํƒ๋˜์–ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” Message Oriented Middleware ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. Message Oriented Middleware, MOM ์ด๋ž€ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋‚˜ ์†”๋ฃจ์…˜ ๋ณด๋‹ค๋Š” ๋” ์ƒ์œ„ ๊ฐœ๋…์œผ๋กœ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ด๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ฌผ๋ก  MOM์„ ์œ„ํ‚คํ”ผ๋””์•„์—์„œ๋Š” ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์กฐ๊ธˆ ๋” ํฐ ๊ฐœ๋…์—์„œ ์ดํ•ดํ•ด๋ณด์ž. ์ด๋Ÿฐ MOM ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  Middlew.. 2021. 5. 19.
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋น„๊ต (2) [OpenFeign vs Rest Template] - ๊ฐ๊ฐ์˜ ๋น„๊ต ์ด ๊ธ€์€ 2๊ฐœ์˜ ๊ธ€๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋น„๊ต [OpenFeign vs Rest Template] - ์„œ๋น„์Šค ๊ตฌํ˜„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋น„๊ต [OpenFeign vs Rest Template] - ๊ฐ๊ฐ์˜ ๋น„๊ต ํ•ด๋‹น ๊ธ€์—์„œ ๋‚˜์˜ค๋Š” ์‹ค์Šต ๋‚ด์šฉ์€ Spring Cloud๋ฅผ ์ด์šฉํ•œ MSA ๊ตฌ์„ฑ์˜ ์ „๋ฐ˜์ ์ธ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์‹ค์Šต์€ Eureka + Gateway + Microservices (2)๋ฅผ ์ด์šฉํ•œ ํ™˜๊ฒฝ์œผ๋กœ ํ•ด๋‹น ๊ธ€์—์„œ๋Š” Eureka์™€ Gateway ์„ค์ •์— ๋Œ€ํ•ด์„œ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์ง€๋งŒ ๋งŒ์•ฝ Eureka๋‚˜ Gateway์˜ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด๋‚˜ ๋” ์•Œ์•„๋ณด๊ณ  ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผ ํ•ด๋ณด๊ณ ์‹ถ์€ ์‚ฌ๋žŒ์€ ์•„๋ž˜์˜ ์‹ค์Šต ๊ณผ์ •์— ์กด์žฌํ•˜๋Š” UR.. 2021. 4. 29.
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋น„๊ต (1) [OpenFeign vs Rest Template] - ์„œ๋น„์Šค ๊ตฌํ˜„ ์ด ๊ธ€์€ 2๊ฐœ์˜ ๊ธ€๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋น„๊ต [OpenFeign vs Rest Template] - ์„œ๋น„์Šค ๊ตฌํ˜„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ๋น„๊ต [OpenFeign vs Rest Template] - ๊ฐ๊ฐ์˜ ๋น„๊ต ํ•ด๋‹น ๊ธ€์—์„œ ๋‚˜์˜ค๋Š” ์‹ค์Šต ๋‚ด์šฉ์€ Spring Cloud๋ฅผ ์ด์šฉํ•œ MSA ๊ตฌ์„ฑ์˜ ์ „๋ฐ˜์ ์ธ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์‹ค์Šต์€ Eureka + Gateway + Microservices (2)๋ฅผ ์ด์šฉํ•œ ํ™˜๊ฒฝ์œผ๋กœ ํ•ด๋‹น ๊ธ€์—์„œ๋Š” Eureka์™€ Gateway ์„ค์ •์— ๋Œ€ํ•ด์„œ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์ง€๋งŒ ๋งŒ์•ฝ Eureka๋‚˜ Gateway์˜ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด๋‚˜ ๋” ์•Œ์•„๋ณด๊ณ  ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผ ํ•ด๋ณด๊ณ ์‹ถ์€ ์‚ฌ๋žŒ์€ ์•„๋ž˜์˜ ์‹ค์Šต ๊ณผ์ •์— ์กด์žฌํ•˜๋Š” UR.. 2021. 4. 29.