์ฐ์ํ ๊ฐ์ฒด์งํฅ [์ฐ์ํํ ํฌ์ธ๋ฏธ๋] ์ ๋ฆฌ 5
- -
๐๊ฐ์
ํ์ฐฝ ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ์คํ๋ง๊ณผ ๊ฐ์ฒด์งํฅ์ ์ ํ๊ณ ํ์ฉ ํ์ ๋, ์์กด์ฑ์ ๊ดํ ๊ณ ๋ฏผ์ ๋งค์ฐ ๋ง์ด ํ์๋ค. ๊ทธ๋ฌ๋ ๋์ค ์ ํ๋ธ์์ ์ฐ์ํ ๊ฐ์ฒด์งํฅ by ์กฐ์ํธ๋์ ์ธ๋ฏธ๋๋ฅผ ๋ฃ๊ณ , ๊ทธ๋์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ด๊ฒ๋ง๋? ๋ผ๊ณ ์๊ฐํ๋ ์คํ๋๋ค์ด ํ๋ํ๋ ํ๋ฆฌ๊ฒ ๋๋ฉด์ ์ ์ ๋ฒ๋ฆฐ ์ํ๋ก ๋ณด๋ฉฐ ์ ๋ฆฌํ์๋ ์ ์ด ์๋ค. ๊ทธ๋์ ๋ด์ฉ์ ๊ณฑ์น์ผ๋ฉด์ ๋ค์ ์ ๋ฆฌ ํด๋ณด์๊ณ ์๊ฐํ๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ๊ฒ๋๋ฉด ๊ธฐ์กด์ ์ ์๋ ๋ฉ์๋๋ค์ด ๋ชจ๋ ์ปดํ์ผ์๋ฌ๋ฅผ ๋์ธ๊ฒ์ด๋ค.
์ฐ๊ด๊ด๊ณ๋ก ์ฐธ์กฐํ๋ ๊ฒ๋ค์ด ๊ฐ์ฒด๋ฅผ ๋์ด๋ฒ๋ฆฌ๊ฒ ๋๋๊น Entity๋ด๋ถ์์ ๊ตฌํํ๋ ์ฐ๊ด๊ด๊ณ ๊ฐ์ฒด๋ค์์ error๋ฅผ ๋ฐํํ๋ค.
Id๋ก ์ฐธ์กฐํ๋ ๊ณตํต ๋ก์ง์ ๊ฐ์ฒด๋ฅผ ์๋ก ์์ฑํด ํ๋์ ๋ชฐ์ ๋ฃ๋๋ค.
๐๊ณผ์ฐ ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด ์ข์ ๋ณ๊ฒฝ์ผ๊น?
๊ฐ์ฒด ์งํฅ์ ์ฌ๋ฌ๊ฐ์ฒด๋ฅผ ํ์ธํ๋ฉด์ ๋ก์ง์ ํ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ๋ก์ง์ ํ๋์ ํ์ ํ๊ธฐ ์ด๋ ต๋ค ํ์ง๋ง ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๋ก์ง์ ํ๋ฒ์ ๋ชจ์๋๋ค๋ฉด ํด๋น ๋ก์ง์ด ํ ๋์ ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ ํธํ๋ค.
์์ง๋๋ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ์ ๋ค์ด ๊ฐ์ด ๋ชฐ๋ ค์๋๊ฒ์ด ์์ง๋๊ฐ ๋๋ค๊ณ ํ ์ ์๋๋ฐ ๊ฐ์ฒด๋ด์ ๋ณ๊ฒฝ๋๋ ๋ก์ง์ด ๋ถ์ฐ๋์ด ์๋ค๋ฉด ์์ง๋๊ฐ ๋ฎ์ ์ข์ ์ฝ๋๋ผ๊ณ ๋งํ ์ ์๋ค.
๊ทธ๋์ ๋๋ก๋ ์ ์ฐจ์งํฅ์ด ๊ฐ์ฒด์งํฅ๋ณด๋ค ์ข์ ์ ์๋ค. ๊ทธ๋์ ์ด๊ฒ์ ๋ํ ํธ๋ ์ด๋ ์คํ๋ ์ ๊ฒฐ์ ํด์ผํ๋ค.
์ด๊ฒ๋ ๋๊ฐ์ด id์ฐธ์กฐ๋ก ๋ฐ๋๋ฉด์ ์์๋ฃ๋ถ๊ณผํ๋ ๋ก์ง์์ ์๋ฌ๊ฐ ํฐ์ง๋ค.
ํด๋น ์ค๋ฅ์ ๋ณธ์ง์ ๋๋ฉ์ธ ๋ก์ง์ด ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฏ๋ก ์ผ์ด๋๋ ๋ฌธ์ ์ด๋ค.
๐ํด๊ฒฐ๋ฐฉ๋ฒ
์๊น์ฒ๋ผ ๋ก์ง์ ํ๋๋ก ๋ชจ์์ ์ ์ฐจ์งํฅ์ ์ผ๋ก ๊ตฌ์ฑ์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅธ ํ๋์ ๋ฐฉ๋ฒ์ ๋๋ฉ์ธ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ๋ฐฉ๋ฒ์ด ์๋ค.
๊ฐ์ฅ ์ฌํํ ๋ฐฉ๋ฒ์ ์ ์ฐจ์งํฅ์ด๊ณ ๋๋ฉ์ธ์ด๋ฒคํธ๋ ์ฝ๊ฐ ์ ๊ฒฝ์จ์ผํ ๋ถ๋ถ์ด ์๋ค.
๐ํด๊ฒฐ 1. ์ ์ฐจ์งํฅ ๋ก์ง
ํ์ง๋ง,
๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐ๋๋ฉด์ ๊ฒฐ๊ตญ ์ฌ์ดํด์ด ์๊ธฐ๊ฒ๋๋ค.
์ธํฐํ์ด์ค๋ฅผ ํตํด ์์กด์ฑ์ ์ญ์ ์ํค๊ณ Order์ ์๋ ์๋น์ค๋ฅผ deliver๋ก ๋ฐ์ด ๋ฃ์ผ๋ฉด์ ์ฌ์ดํด์ ์์จ ์ ์๋ค.
๐ํจํค์ง ์์กด์ฑ
์ง๊ธ๊น์ง ํ๋๊ฑฐ๋ฅผ ํ ๋๋ก ํจํค์ง์ ์์กด์ฑ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ฒซ์งธ, ์ค๊ฐ ๊ฐ์ฒด๋ฅผ ๋์ด ์์กด์ฑ์ ํด์ํ๋๋ฐฉ๋ฒ, ๋๋ฒ์งธ, ์ธํฐํ์ด๋ฅผ ์ถ์ํ์์ผ ์์กด์ฑ์ ์ญ์ ์ํค๋ ๋ฐฉ๋ฒ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
๐ํด๊ฒฐ 2. ๋๋ฉ์ธ ์ด๋ฒคํธ
์ง๊ธ๊น์ง์ ๋ฌธ์ ์ ์ Order๊ฐ ๋ฐ์๋์์๋, ๋ฐ๋์ Delivery์ Shop์ ๊ฑฐ์ณ๊ฐ์ผ ํ๋ ๊ฒ์ ๋ฌธ์ ์ ์ด ์๋ค. ์ฆ ๊ฒฐํฉ๋๊ฐ ๋๋ฌด ๋๋ค๋ผ๋ ๋ฌธ์ ์ธ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ถ์ ๋ ๋๋ฉ์ธ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ค.
๊ธฐ์กด ๋ฐฉ๋ฒ์ ๊ทธ๋ฅ ๋ฉ์์ง๋ฅผ ์ง์ ๋ฟ๋ ธ์ง๋ง ์ง๊ธ์ ์ด๋ฒคํธ ๋ฐํ๋ง ์ํจ๋ค
๊ทธํ ๊ฐ๊ฐ์ ๋๋ฉ์ธ์ด ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ฒ๋ฆฌํ๋๋ฐ ์ด๊ฒ์ด ๋ฐ๋ก ์ด๋ฒคํธ๋ก ๊ฒฐํฉ๋๋ฅผ ๋์จํ๊ฒํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์๋๋ ์ง์ ๊ตฌํํ๋ ๊ฒ์ด ์ ์ผ ์ข์ผ๋ ์์ ์ฝ๋๋ SpringData์ ์ด๋ฏธ ๊ตฌํ๋์ด์๋ ๋ก์ง์ ์ฌ์ฉํ ๋ฐฉ๋ฒ
Order๋ AbsractAggregateRoot๋ฅผ ์์๋ฐ๊ณ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋ก์ํจ๋ค. ์ด๋ DB์ ์ปค๋ฐ์ด ๋ ์๊ฐ๋ ์๊ฐ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐํ๋๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์ดํ์๋ ์ด๋ฒคํธํธ๋ค๋ฌ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ด๋ Spring์ EventListener ๋ฅผ ์ฌ์ฉํด์ ๊ตฌ์ฑํ๋ค.
ํ์ง๋ง,
์์ ๊ฐ์ด ์ถ๊ฐ๋ฅผ ํํ ๋๋ฉ์ธ ๊ด๊ณ๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด ์ฌ์ดํด์ด ๋๋ค.
์๊น ์ฌ์ดํด์ ํด๊ฒฐํ๋ 2๊ฐ์ง์ ์ต์ ์ด์์๋๋ฐ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ค. ์ง๊ธ์ ๋ฌธ์ ๋
์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ Shopํจํค์ง์ ์๊ธฐ๋๋ฌธ์ ๋ฐ์ํ๋ ์ฌ์ดํด์ด๋ค.
๐์ฌ์ดํด์ ์ ๊ฑฐํ๋ 3๋ฒ์งธ ๋ฐฉ๋ฒ
์ด๋ ๊ฒ ๋ณด๋ฉด ์ฌ์ดํด์๋ง ์ง์ค๋๊ฒ ์ฒ๋ผ ๋ณด์ผ ์ ์๋๋ฐ ์ฌ์ค ์ฌ์ดํด์ ์ ๊ฑฐํ๋ฉฐ ์์๊ฐ์ด ๋๋ฉ์ธ์ ๋ถ๋ฆฌํด๋ธ๋ค๋ฉด ์ ์ฒด์ ์ผ๋ก ๋๋ฉ์ธ์ด ๋ช ํํด์ง๋ ํจ๊ณผ๋ฅผ ๋ฐ๋๋ค. ์ง๋ถ์ด๋ผ๋ ํ์๋ ์ฌ์ค์ shop๋๋ฉ์ธ๊ณผ ๊ทธ๋ ๊ฒ ๊ด๋ จ์ด ๋์ด์๋ค๊ณ ์ค๋ช ํ๊ธฐ ํ๋ค๊ธฐ๋๋ฌธ์ ๋๋๋๊ฒ์ด ๋๋ฉ์ธ ๊ด์ ์์ ๋ณด๊ธฐ์ ์ณ๋ค๊ณ ํ ์ ์๋ ๊ฒ์ด๋ค.
๐์ ๋ฆฌ
๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง์ ๋ฐฉ๋ฒ์ค ์ด๋๊ฒ์ ์ ํํ๋ผ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ, ํธ๋ ์ด๋ ์คํ์ ๋ฐ๋ผ์ ์ ํ์ ์ํด์ผํ๋ค
๋๋ฉ์ธ ๋จ์๋ก ์์กด์ฑ์ ๋์ด๋ด๋ ๋๋ฉ์ธ๋จ์๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์์ํด์ก๋ค. ๋ํ ์ด๋ ๊ฒ ๋ถ๋ฆฌ๋ฅผ ํจ์ผ๋ก์จ ์์คํ ์ ์ฐข๊ธฐ๊ฐ ์ฌ์์ก๋ค.
์ด๋ ๊ฒ ๋๋ฉ์ธ ๋จ์๋ก ์ฐข์ด๋ด๋ฉด์ ๊ฐ๊ฐ์ ์์คํ ์ด๋ฒคํธ๋ฅผํตํ ์์คํ ํตํฉ๋ ๊ฐ๋ฅํด์ง๋ค.
์ธํฐ๋ ์ด๋ฒคํธ๋ฅผ → external ์ด๋ฒคํธ๋ก ๋ณ๊ฒฝํ์ฌ ์ธ๋ถ์์คํ ์ผ๋ก ๋ณ๊ฒฝ์ ํ๊ธฐ๋ํ๋ค.
๋ณดํต์ ์์คํ ๋จ์๋ก ์๋น์ค๋ฅผ ์ชผ๊ฐ๊ณ ์์คํ ์ด๋ฒคํธ๋ฅผ ํตํด ํตํฉ์ ์ํจ๋ค.
๊ผญ ์ ๋ ๊ฒ ํด์ผํ๋์?
→ ์๋๋ค. ํ์ง๋ง ํํต์ผ๋ก ํ๋๋ผ๋ ์ ์ฒด์ ์ธ ์์กด์ฑ์ฌ์ดํด๊ด๋ฆฌ๋ ํด์ฃผ์ด์ผํ๋ค.
์ฐธ๊ณ ์์
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
-
์คํ๋ง ์ํ๋ฆฌํฐ + Github Oauth + RESTAPI + JWT ํ์ฉ(With Gradle) 2024.01.29
-
[Spring] ๋กฌ๋ณต์ ์ฌ์ฉํ Builder ํจํด Null์ฒดํฌ ํ๋ฉฐ ์ฌ์ฉํ๊ธฐ 2023.11.10
-
์ฐ์ํ ๊ฐ์ฒด์งํฅ [์ฐ์ํํ ํฌ์ธ๋ฏธ๋] ์ ๋ฆฌ 4 2023.11.08
-
์ฐ์ํ ๊ฐ์ฒด์งํฅ [์ฐ์ํํ ํฌ์ธ๋ฏธ๋] ์ ๋ฆฌ 3 2023.11.07
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค