CQRSCQRS๋ Command Query Responsibility Segregation ์ ์ฝ์์ด๋ฉฐ,Command(๋ช
๋ น)๊ณผ Query(์ฟผ๋ฆฌ)์ ์ฑ
์ ๋ถ๋ฆฌ๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Query๋ SQL Query๋ฅผ ์๋ฏธํ๋ ๊ฒ ์๋๋ค. ๊ทธ๋ผ, Command์ Query๋ ๊ฐ๊ฐ ๋ฌด์์ ์๋ฏธํ ๊น?Command (๋ช
๋ น)์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ ( ์์ฝ, ์์ฝ์ทจ์)Query (์ฟผ๋ฆฌ)์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๋ฅผ ์กฐํ (์์ฝ๋ด์ญ ์กฐํ) ๋ฐ๋ผ์, CQRS๋ฅผ ๋ค์ ์ค๋ช
ํ์๋ฉด์ ํ๋ฆฌ์ผ์ด์
๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช
๋ น ์ญํ ์ ์ํํ๋ ๊ตฌ์ฑ ์์์ ํ๋ฆฌ์ผ์ด์
๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์ฟผ๋ฆฌ ์ญํ ์ ์ํํ๋ ๊ตฌ์ฑ ์์์ด ๋ ๊ฐ์ง๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋ค๋ฃจ๋ ์ฝ๋ ์์ญ์ ์ฐจ์ดCommand์ Query๋ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ์ ์์ญ์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค...
๐ท๐ป Architecture
๋จ๊ณ๋ณ๋ก ์ฑ์ฅํ์!์ด์ ์ ์งํํ์๋ ๋ฐ๋ธํก์ด๋ผ๋ ์๋ด ์ ํ๋ฆฌ์ผ์ด์
์์ ์ ํจ๊ป Micro Service ๋ด๋ถ ๊ตฌ์ฑ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ ๊ธฐํด๋ณด๊ฒ ๋ค. 1. ์๋ด Aggregate ์์๋ก ๊ฐ์ ธ์จ ์๋ด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ๊ฒ ๋ค. ์กํฐ๋ ์๋ด์ฌ, ๋ด๋ด์๋ก ๊ตฌ์ฑ๋๋ฉฐ ํ์ฌ ๊ฐ์ ธ์จ ์์๋ ์๋ด ๋งค์นญ Micro Service๋ฅผ ๋์์ผ๋ก ํ๋ค. Consultation์ด๋ผ๋ ๋๋ฉ์ธ Entity๋ ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค. ์๋ด์ด๋ผ๋ Aggregate๋ ์๋ด ๋ฑ๋ก, ์์ , ์ทจ์, ๋ฆฌ๋ทฐ ์์ฑ์ ๋ํ ์ฑ
์์ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ฌ๋ฌ Entity์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ๋ฅผ ์๊ฒฉํ๊ฒ ๋ฐ๋ฅด์๋ฉด JPA Entity์ POJO Entity๋ฅผ ๊ตฌ๋ถํ๋๊ฒ ๋ง์ง๋ง, JPA๋ ์ด๋
ธํ
์ด์
๊ธฐ๋ฐ์ผ๋ก ๊ทธ๋ ๊ฒ ๋๋ฉ์ธ์ ๋ํ ์ดํด๋ฅผ ๋ฐฉํดํ๋ค๊ณ ์..
Micro Service ์ธ๋ถ, ๋ด๋ถ Architecture๋ฅผ ํธํ๊ฒ ๊ตฌ์ฑํ ์ ์๊ฒ ๋์์ฃผ๋ ์คํ์์ค ํ๋ซํผ Jhipster์ ๋ํด์ ์๊ธฐํ๊ณ ์ ํ๋ค. JHipster(Java Hipster)๋? JHipster๋ ์๋ฐ ์ง์์์ modern ํ ๋ชจ๋๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์
๋๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฉ, ๊ฐ๋ฐ, ๋ฐฐํฌํ ์ ์๊ฒ ๋์์ฃผ๋ ์คํ์์ค ํ๋ซํผ์ด๋ค. https://www.jhipster.tech/ JHipster - Full Stack Platform for the Modern Developer! JHipster is a development platform to quickly generate, develop, and deploy modern web applications and microserv..
Bounded Context ๊ธฐ๋ฐ ๋์ถ ๋ฐ์ด๋๋ ์ปจํ
์คํธ๋ DDD๋ฅผ ์ ์ฉํ ์ค๊ณ์์ ๋น์ฆ๋์ค ์์ง์ฑ์ด ์๋ ๋๋ฉ์ธ์ ์ ์ํ๊ณ ๋๋ฉ์ธ ๊ฐ์ ๊ฒฝ๊ณ๋ฅผ ์๋ณํ๋ ๋จ์๋ฅผ ์๋ฏธํ๋ค. ์ด ๋ฐ์ด๋๋ ์ปจํ
์คํธ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์๋ณํ๋๋ฐ ์ข์ ๋จ์๋ก ์ฌ์ฉ๋๋ค. ์ฐ์ , ํ๋์ ํฐ ๋๋ฉ์ธ์ ์ ๋ต์ ์ผ๋ก ์ค์๋์ ๋ฐ๋ผ ๋๋์ด์ผ ํ๋ค. ๋ํ, ํ๋์ ํฐ ๋๋ฉ์ธ์ ์ฌ๋ฌ ๊ฐ์ ํ์ ์๋ธ ๋๋ฉ์ธ์ผ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค. ์ด๋, ๋๊ฐ์ ํ์์ด๋๋ผ๋ ์์ฝ ๋๋ฉ์ธ์์์ ํ์๊ณผ ๊ฒฐ์ ๋๋ฉ์ธ์์์ ํ์์ ์๋ฏธ๊ฐ ๋ค๋ฅด๋ค. ์์ฝ ๋๋ฉ์ธ์์๋ ์์ฝ์์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์์ฝ์์ ์ญํ , ๊ฒฐ์ ๋๋ฉ์ธ์์๋ ๊ฒฐ์ ์์ ์ญํ ๋ก ์นด๋ ์ ๋ณด ๋ฑ์ ๊ฐ์ง๊ณ ์๋ ํ์์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์, ๊ฐ ๋ฐ์ด๋๋ ์ปจํ
์คํธ๋ง๋ค ๊ฐ์ ํ์์ด๋๋ผ๋ ๊ฐ ์ปจํ
์คํธ์์ ์ฌ์ฉ๋๋ ์ธ์ด๋ก ..
Layerd, Clean, Hexagonal๊ณผ ๊ฐ์ด Micro Service ๋ด๋ถ์์ ์ฌ์ฉ๋๋ ์ํคํ
์ฒ์ ๋ํด ์๊ธฐํด๋ณด๊ณ , ๋ง์ง๋ง ๋ถ๋ถ์์๋ Hexagonal Architecture์ ๋ํ ์๊ฐ๊ณผ ์ปค์คํ
ํ๊ฒ ์ฌ์ฉํ๋ ํจํค์ง ๊ตฌ์กฐ์ ๋ํด์๋ ์๊ธฐํด๋ณด๊ฒ ๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ์ ๋ถ๋ฆฌํด์ผ ํ ๊น? ์ฐ์ , ๋น์ฆ๋์ค ๋ก์ง์ Process Rule, Flow, Concept ์ธ ๊ฐ์ง๋ฅผ ํํํ๋ ์ฉ์ด์ด๋ค. ์ด๋ฌํ, ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ๋ฐ์๋ ์ฝ๋๋ก ํ์ด๋ด์ผ ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด๋ด์ผ ํ๋ค. (์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ณ ๋ ค) ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉํ๋ ์ถํ์ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ธฐ์ ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ถ๋ฆฌ๋์ด์ผ ๋ณต์ก์ฑ์ด ๋ฎ๊ณ ์ค๋ซ๋์ ์์ ์ฑ ์๊ฒ ์ ์ง๋ณด์ํ ์ ์๊ฒ ๋๋ค. ํ์ง๋ง, ๋ด๊ฐ ์ง๊ธ ์ฐธ์ฌํ๊ณ ์๋ ํ๋ก์ ํธ๋ง ํ๋๋ผ๋ P..
CI/CD ํจํดCI(Continuos Integration) / CD(Continuous Delivery/Deloyment)MSA ํ๊ฒฝ์์ ๋น์ง๋์ค ๋ฏผ์ฒฉ์ฑ์ ํค์ฐ๊ธฐ ์ํด์๋ ๋ฐฐํฌ ์๋ํ๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์๋ค. ์ด๋, ์๋ํ๋ ๋น๋๋ ๋ฐฐํฌ ์์
์ ๋ณดํต CI/CD๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ผ๋ฐ์ ์ธ ํ๋ก์ฐ๋ ์๋์ ๊ฐ๋ค.์๋ก์ด ๋ฒ์ ์ ์ฝ๋์ ํ
์คํธ ์ฝ๋๋ฅผ ํจ๊ป Github์ ๊ฐ์ ํ์ ๊ด๋ฆฌ ์์คํ
์ Push ํ๋ค.๋น๋ ๋๊ตฌ์์ ํน์ ์๊ฐ์ ํ์ ๊ด๋ฆฌ ์์คํ
์ผ๋ก๋ถํฐ ์ฝ๋๋ฅผ Pullํด์ ํตํฉํ ํ์, ์๋์ผ๋ก ๋น๋ํ๊ณ ํ
์คํธ ์ฝ๋๋ฅผ ์คํํ์ฌ ํ
์คํธ๋ฅผ ์ํํ๋ค.ํ
์คํธ ์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ก๊ทธ ํ์ผ์ ๋ฆฌํฌํ
ํ๊ณ , ๋น๋๋ ์์ค์ฝ๋๋ฅผ ์คํ
์ด์ง ํ๊ฒฝ์ ์๋์ผ๋ก ๋ฐฐํฌํ๋ค.QA ํ
์คํฐ๊ฐ ์คํ
์ด์ง ํ๊ฒฝ์์ ํ
์คํธ๋ฅผ ์ํํ๊ณ , ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ..