11์ฅ : CQRS
๋จ์ผ ๋ชจ๋ธ์ ๋จ์
์๋ณ์๋ฅผ ์ด์ฉํด์ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๋ฅผ ์ฐธ์กฐํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ฆ์ ๋ก๋ฉ ๋ฐฉ์๊ณผ ๊ฐ์ JPA ์ฟผ๋ฆฌ ๊ด๋ จ ์ต์ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.์ด๋ ํ ๋ฒ์ SELECT ์ฟผ๋ฆฌ๋ก ์กฐํ ํ๋ฉด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ์ ์์ด ์กฐํ ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
์ ๊ทธ๋ฆฌ๊ฑฐํธ ๊ฐ ์ฐ๊ด์ ์ง์ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํด๋, ์กฐํ ํ๋ฉด ํน์ฑ์ ๋ฐ๋ผ ๊ฐ์ ์ฐ๊ด๋ ์ฆ์ ๋ก๋ฉ์ด๋ ์ง์ฐ ๋ก๋ฉ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ๊ฐ ์๊ธด๋ค. ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ DBMS๊ฐ ์ ๊ณตํ๋ ์ ์ฉ ๊ธฐ๋ฅ์ด ํ์ํ๋ฉด JPA์ ๋ค์ดํฐ๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ ์๋ ์๋ค.
ORM ๊ธฐ๋ฒ์ ๋๋ฉ์ธ ์ํ ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ๋ ์ ํฉํ์ง๋ง ์ฃผ๋ฌธ ์์ธ ์กฐํ ํ๋ฉด์ฒ๋ผ ์ฌ๋ฌ ์ ๊ทธ๋ฆฌ๊ฑฐํธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ์๋ ๊ตฌํ์ ๋๋ ค ๋ณต์กํ๊ฒ ๋ง๋ ๋ค.
์ํ ๋ณ๊ฒฝ์ ์ํ ๋ชจ๋ธ๊ณผ ์กฐํ๋ฅผ ์ํ ๋ชจ๋ธ์ ๋ถ๋ฆฌํ ๊ฒ์ ๊ตฌํ ๋ณต์ก๋๋ฅผ ๋ฎ์ถฐ์ค๋ค.
CQRS
์์คํ ์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํฌ๊ฒ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ๊ณผ ์ํ ์ ๋ณด๋ฅผ ์กฐํํ๋ ๊ธฐ๋ฅ์ด๋ค.
๋๋ฉ์ธ ๋ชจ๋ธ ๊ด์ ์์ ์ํ ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ ์ฃผ๋ก ํ ์ ๊ทธ๋ฆฌ๊ฑฐํธ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค. ๋ฐ๋ฉด์ ์กฐํ ๊ธฐ๋ฅ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ค๋ฉด ๋ ๊ฐ ์ด์์ ์ ๊ทธ๋ฆฌ๊ฑฐํธ๊ฐ ํ์ํ ๋๊ฐ ๋ง๋ค.
์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฒ์์ ์ํ๋ฅผ ์กฐํํ๋ ๋ฒ์๊ฐ ์ ํํ๊ฒ ์ผ์นํ์ง ์์ ๋จ์ผ ๋ชจ๋ธ๋ก ๋ ์ข ๋ฅ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด ๋ชจ๋ธ์ด ๋ถํ์ํ๊ฒ ๋ณต์กํด์ง๋ค.
CQRS๋ Command Query Responsibility Segregation์ ์ฝ์๋ก ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช ๋ น(Command)์ ์ํ ๋ชจ๋ธ๊ณผ ์ํ๋ฅผ ์ ๊ณตํ๋ ์กฐํ(Query)๋ฅผ ์ํ ๋ชจ๋ธ์ ๋ถ๋ฆฌํ๋ ํจํด์ด๋ค.
CQRS๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ๋ชจ๋ธ์ ๋ง๋ ๊ตฌํ ๊ธฐ์ ์ ์ ํํ ์ ์๋ค. ๋ช ๋ น ๋ชจ๋ธ์ ๊ฐ์ฒด ์งํฅ์ ๊ธฐ๋ฐํด์ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊ตฌํํ๊ธฐ์ ์ ๋นํ JPA๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ๊ณ , ์กฐํ ๋ชจ๋ธ์ DB ํ ์ด๋ธ์์ SQL๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ข์ ๋ง์ด๋ฐํฐ์ค๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ๋ฉด ๋๋ค.
์น๊ณผ CQRS
์กฐํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋ณ๋ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์๋ค๋ฉด ๋ช ์์ ์ผ๋ก ๋ช ๋ น ๋ชจ๋ธ๊ณผ ์กฐํ ๋ชจ๋ธ์ ๊ตฌ๋ถํ์. ์ด๋ฅผ ํตํด ์กฐํ ๊ธฐ๋ฅ ๋๋ฌธ์ ๋ช ๋ น ๋ชจ๋ธ์ด ๋ณต์กํด์ง๋ ๊ฒ์ ๋ง์ ์ ์๊ณ , ๋ช ๋ น ๋ชจ๋ธ์ ๊ด๊ณ์์ด ์กฐํ ๊ธฐ๋ฅ์ ํนํ๋ ๊ตฌํ ๊ธฐ๋ฒ์ ๋ณด๋ค ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ค.
CQRS ์ฅ๋จ์
์ฅ์
๋ช ๋ น ๋ชจ๋ธ์ ๊ตฌํํ ๋ ๋๋ฉ์ธ ์์ฒด์ ์ง์คํ ์ ์๋ค.
์กฐํ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ์ ๋ฆฌํ๋ค.
๋จ์
๊ตฌํํด์ผ ํ ์ฝ๋๊ฐ ๋ ๋ง๋ค.
๋ ๋ง์ ๊ตฌํ ๊ธฐ์ ์ด ํ์ํ๋ค.
Last updated