์ฃผ๋ฌธ ๊ฑด์ ๋ํ ์ํ ์ฌ๊ณ ํ์ ๋์์ฑ ๊ด๋ จ ์ด์์ ๋ํด ๊ณ ๋ฏผํ ํ๋ฃจ๋ค.
ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง์ ์์ํ๋ฉฐ ์ง๋ ๋๋ฉ์ธ๋ค์ ๊ธฐ๋ณธ crud API๋ง์ ๋ค๋ฃจ์๋ค.
5์ผ๋์ JPA ๊ฐ์๋ค์ ์๊ฐํ๋ฉฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ API ๋ฆฌํฉํ ๋ง์ ๋ค์ ์ฐฉ์ํ๋ค.
์๋ฌด๋๋ ํ๋ก์ ํธ์ ํ ํฝ์ด ์ผํ๋ชฐ์ด๋ ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ ํํธ์์ ๋จ์ CRUD๊ฐ ์๋ ํต์ฌ ๋น์ฆ๋์ค๋ฅผ ๊ณ ๋ คํ๊ณ ์ถ์ด, ์ธ๋ถ ๊ฒฐ์ API ๋ฐ ๋์์ธ ํจํด์ ์ ์ฉํ ๊น๋ํ ์ฝ๋๋ค์ ๊ณ ๋ คํ๋ฉฐ ์์ฑํ๋ ์ค์ด๋ค.
๋๋ต์ ์ธ ํ์ ๋ง๋ ๋ค, ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฃผ๋ฌธ์ ๊ตฌํํ๋ ์ค, ๋์์ฑ ์ด์ ๋ฌธ์ ์ ์ง๋ฉดํ๋ค.
๊ธฐ์กด ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
MSA๋ฅผ ๊ณ ๋ คํ๊ธฐ์, ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Outbox pattern์ ์ด์ฉ์ค์ด์๋ค.
์ด ๋ฐฉ์์ ํตํด ์ํ ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
ํ์ง๋ง ์์ธ ์ฒ๋ฆฌ ๋ฐ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ๋ฏธํกํ์๋ค.
๋์์ฑ ์ด์์ ๋ํ ๊ณ ๋ฏผ ๋ฐฉ์
- ํด๋น DB ๋ ์ฝ๋์ Lock์ ๊ฑฐ๋ ๋ฐฉ๋ฒ
- ๋ฉ์์ง ํ์ ํ์์ ๊ฐ์ง Queue๋ฅผ ์ง์ ๊ตฌํํ์ฌ ๋๊ธฐ์ด์ ๋ง๋ค์ด ํด๊ฒฐ
- Outbox pattern๊ณผ ๋์ผํ๊ฒ DB์ ์ฃผ๋ฌธ ๊ด๋ จ ์ ๋ณด๋ค์ ์ ์ฅํ์ฌ ์กฐํํ์ฌ ์์ฐจ์ ์ผ๋ก ํด๊ฒฐ
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ :
- ์ฌ๋งํด์ ์ถ์ฒํ์ง ์๋ ๋ฐฉ๋ฒ์ด๋ค. DB ์์ฒด์ ๋ฝ์ ์ ์ ํ๋ ๊ฒ์ ์ค ์๋น์ค ํ๊ฒฝ์์ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ฏ๋ก, ๊ฐ๋ฟํ ๋๊ฒผ๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ :
- ํ๋ฅผ ์ด์ฉํด ๋๊ธฐ์ด์ ๋ง๋๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฑฐ๋ ์๊ฐ์ ํ๋ค. ํ์ง๋ง ๋ชจ๋ ์ฃผ๋ฌธ ์์ฒญ๊ฑด์ ํ๋์ ํ๋ฅผ ์ด์ฉํ๊ฒ ๋๋ฉด, ์ฃผ๋ฌธ๊ฑด์ด ๋ง์ ์๋ก ์ฌ๊ฐํ๊ฒ ๋๋ ค์ง๋ค. (์ ์ฌ ์๊ฐ์ ์ฒญ..)
์ธ ๋ฒ์งธ ๋ฐฉ๋ฒ :
- ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ํ์ง๋ง DB ์กฐํ๋ฅผ ๊ณ์์ ์ผ๋ก ์ด๋ฃจ์ด์ผ ํ๊ณ ์ฃผ๋ฌธ ๊ฑด์ด ๋ง์ ๋ ํ๋ฒ์ ๋ค ์กฐํํ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ์ข์ง ๋ชปํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ฌด์๋ณด๋ค MSA๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ํ ์ด๋ธ์ ์ค๊ณํ ์ด์ ๋ ์๋ค.
Redisson์ ์ด์ฉํ๋ ๋ฐฉ์
๋ด๊ฐ ๊ตฌ์ํ ํ๊ฒฝ ๋ด์์ ๋์์ฑ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์ฑ๋ฅ์ ์ถฉ์กฑ ์ํค๋ ๋ฐฉ์์ ๊ณ์ ์ฐพ์๋ณด๋ค๋ณด๋ Redis๋ฅผ ์ด์ฉํ ๋ถ์ฐ๋ฝ์ ๋ํ ๋ด์ฉ์ด ๋ง์ด ๋ณด์๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ DB์ด๊ธฐ ๋๋ฌธ์ ์กฐํ ์ ์ฑ๋ฅ์ ์ ๋ฆฌํ ์ ์ด ์์ ๊ฑฐ๋ผ ์๊ฐํ์์ง๋ง, Redisson์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด Redis๋ฅผ ์ด์ฉํ์ฌ ๋ถ์ฐ๋ฝ์ ๊ฑธ ์ ์๋ค๋ ์ฅ์ ์ด ์์๋ค.
์ํ ๋จ๊ฑด ์ฃผ๋ฌธ, ์ฅ๋ฐ๊ตฌ๋ ์ฃผ๋ฌธ์ด ์์๊ธฐ์ ์ํ์ ๋ํ ์ฌ๊ณ ์๋ ํ์ ์ด ๋์์ฑ ๋ฌธ์ ์ ๋ฐ๋จ์ด์์ง๋ง, Redisson์ ์ด์ฉํ๋ฉด ์ํ๊ณผ ๊ทธ ์ฌ๊ณ ๋์ redis์ ์ ์ฅํ๊ณ ํค๋ฅผ ํตํด ๋ถ์ฐ Lock์ ๊ฑธ๊ฒ ๋๋ฉด ์ฑ๊ธ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ์ ๋์์ฑ ๋ฌธ์ ๋ ํด๊ฒฐ๋๊ณ ์ฑ๋ฅ๋ ์ด๋์ ๋ ๊ฐ์ ธ๊ฐ๊ฒ ๋ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
'๐ Spring Framework > Spring Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฒฐ์ API ๋ฆฌํฉํ ๋ง - [2] (feat. WebClient) (7) | 2022.09.22 |
---|---|
๊ฒฐ์ API ๋ฆฌํฉํ ๋ง - [1] (feat. ์ ๋ต ํจํด) (2) | 2022.09.20 |
๊ฐ์ฒด ๊ฐ ๋งคํ์ ์ํ MapStruct ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2022.08.29 |
DB ์์ & jpa ์ธํ (0) | 2022.08.08 |
์ฝ๋ ๋ฆฌํฉํ ๋ง [1] (0) | 2022.08.03 |