-
Notifications
You must be signed in to change notification settings - Fork 0
Description
AS-IS:
ํ์ฌ ์๋๋ทฐ๋ ๋ชจ๋๋ฆฌํฑ ๊ทธ ์์ฒด์ด๋ค.
ํ์ฌ์ ๋ฌธ์
-
์๋น์ค๊ฐ ์ ์ ์ปค์ ธ๊ฐ์๋ก ํ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋๋ฌด ๋ง์ ์ผ๋ค์ ๊ฐ๋นํ๊ฒ๋จ
-
์ ํ์ ํ์ฅ์ด ๋ถ๊ฐ๋ฅ
-
ํ๋์ ์๋น์ค๊ฐ ๋ชจ๋ ์๋น์ค์ ์ํฅ์ ์ค
- ์ค์ ๋ก Mysql DB, rabbitMQ, Redis ๋ฑ ์ธ๋ถ ์์์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๊ด๋ จ ์๋น์ค๋ง ์ํฅ๋ฐ๋ ๊ฒ์ด ์๋๋ผ ์ดํ๋ฆฌ์ผ์ด์ ์์ฒด๊ฐ ์คํ์ด ์๋จ
-
๋ฑ๋ฑ
์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊ฒ์ธ๊ฐ?
-
MSA๋ก ์๋ฒ๋ค์ ๋ค ๋ถ๋ฆฌํ์๋ ํ์ฌ ์ ์ ๋ฅผ ์ค์ฌ์ผ๋ก ๋ชจ๋ ๊ด๊ณ๊ฐ ์ฎ์ฌ์์
๋จ๋ ์๋ฒ๋ก ๋์ฐ๊ธฐ ์ํด์๋
-
ํ๋์ ์๋ฒ์์ ์ ์ ์ค์ฌ ๊ด๊ณ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ๊ฐ ํ, ํ์ํ ๋ถ๋ถ์ ๋ค๋ฅธ ์๋ฒ์์ api ์์ฒญ์ ํตํด ๋ค ๋ฐ์์จ๋ค. โ
๋นํจ์จ -
๊ฐ ์๋ฒ๋ง๋ค ๊ด๊ณ๋ก ์ฎ์ธ ๋ถ๋ถ์ ๋์ผํ๊ฒ ๊ตฌํํ์ฌ ์ฌ์ฉํ๋ค. โ
์ค๋ณต์ฝ๋ ๋๋ฌด ๋ง, ๋นํจ์จ
โ
์ฆ, ์ง๊ธ ์ํฉ์์ MSA ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์คํ๋ ค ๋นํจ์จ์ ์ -
-
๊ทธ๋ ๋ค๋ฉด MSA ์ฒ๋ผ ๋ชจ๋ ์๋ฒ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ฐ๋ ๊ฒ ๋ง๊ณ ๊ณตํต ๋ถ๋ถ์ ์ต์ํ์ผ๋ก ์ ์งํ๋ฉด์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ ๋ถ๋ถ์ ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น?
= ๋ฉํฐ ๋ชจ๋๋ก ํ๋ก์ ํธ ๊ตฌ์ฑํ๊ธฐ
TO-BE:
๋ฉํฐ ๋ชจ๋๋ก ์๋๋ทฐ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๋ค.
๋ฉํฐ ๋ชจ๋ ํ๋ก์ ํธ๋ ํ๋์ ์์คํ
์ ๋จ์๋ก ๋ง๋ ๋ค.
์ฌ๊ธฐ์ ๋งํ๋ ์์คํ ์ ์๋์ ๊ฐ์ ์ ์๋ฅผ ๋งํ๋ค.
- ๋ชจ๋์ด๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์๋ ์ ์๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ๊ตฌ์ฑ์์ ๋จ์์ด๋ค.
- ๋ฉํฐ ๋ชจ๋ ํ๋ก์ ํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๊ฐ๋ฅํ ์ดํ๋ฆฌ์ผ์ด์ ๋ชจ๋์ 1๊ฐ ์ด์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ฌ์ฉํ๋ ์ธํ๋ผ ์์ ์ญ์ 1๊ฐ ์ด์์ ๊ฐ์ง๊ณ ์๋ค.
- ๋ ๋ฆฝ์ ์ผ๋ก ์คํ ๊ฐ๋ฅ ํ ์ดํ๋ฆฌ์ผ์ด์ ๋ค์ ๋น์ฐํ ์๋ก ๋ค๋ฅธ ์ฑ ์๊ณผ ์ญํ ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ํ์์ ๋ชจ๋๋ค์ ๋ํ ์์กด์ฑ๊ณผ ์ฌ์ฉ์ฑ์ ๋ํ ๊ฐ๋ฐฉ, ํ์๋ฅผ ์ฒ ์ ํ ํด์ผํ๋ค.
์ถ์ฒ: ์ฐ์ํ ํ์ ๋ค - ๋ฉํฐ ๋ชจ๋ ์ค๊ณ ์ด์ผ๊ธฐ
์ฌ์ค ํ์ฌ ์๋๋ทฐ ๋ด๋ถ์์ ๋๋ฉ์ธ ๋ณ๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ณ ์๋๋ฐ ๊ตณ์ด ๋ฉํฐ ๋ชจ๋๋ก ๋ณ๊ฒฝํ ํ์๊ฐ ์์๊น? ๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์์ง๋ง
๋ณ๊ฒฝ์ ์ฅ์
-
๊ฐ ๋ชจ๋๋ณ๋ก ํ์ํ ์์กด์ฑ๋ค์ ๋ฐ๋ก ๊ด๋ฆฌ โ ์ต์ ์์กด์ฑ ๋ณด์
ex) chat - rabbitMQ, MongoDB, Redis, websocket ๋ฑ
account - keycloak, spring-security, jwt ๋ฑ
study - ffmpeg, webclient ๋ฑ
-
์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ชจ๋๋ง ์ ํ
-
โญ๏ธ ํ์ฌ ํผ์์ฐ์ต, ์คํฐ๋ ์์ ์ ์ฅ์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ ๊ฒ์ ๊ณํ ์ค์ธ๋ฐ ์ด ๋ webclient ๋ผ๋ ๋น๋๊ธฐ client ์ฌ์ฉํ๊ธฐ ์ํด์๋ WebFlux ์์กด์ฑ(
'spring-boot-starter-webflux') ํ์ํจโ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ Spring MVC (
'spring-boot-starter-web')์ WebFlux ์์กด์ฑ์ ํจ๊ป ์ฌ์ฉํ ์ ์์โ ๋ชจ๋๋ณ๋ก ๋ถ๋ฆฌํจ์ผ๋ก์จ ์คํฐ๋ ๊ด๋ จ ๋ชจ๋์๋ง WebFlux ์์กด์ฑ ์ฌ์ฉํ ์ ์์
-
-
๋ชจ๋ ๋ณ ์ฌ์ฌ์ฉ, ๊ณต์ ๊ฐ๋ฅ
-
๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ํฅ ์ต์ํ
๋ชจ๋ ๋ถ๋ฆฌ
์ฐธ๊ณ : ์ฐ์ํ ํ ํฌ ์ธ๋ฏธ๋, ์ฐ์ํ ํ์ ๋ค - ๋ฉํฐ ๋ชจ๋ ์ค๊ณ ์ด์ผ๊ธฐ
= ๊ณ์ธต ๋ถ๋ฆฌ (์ญํ ๊ณผ ์ฑ ์์ ๋ฐ๋ผ)
์ฐ์ํ ํ์ ๋ค์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ฐธ๊ณ ํ๋, ์ฐ๋ฆฌ์ ์๋น์ค์ ๋ง๊ฒ ๊ตฌ์ฑ
๊ณตํต ๋ชจ๋ ๊ณ์ธต :
= ํ๋์ ํ๋ก์ ํธ์ ๋ชจ๋ ๋ชจ๋์์ ์ฌ์ฉ๋ ์ ์๋ ๊ฒ
-
witherview-core
- ๊ณตํต business exception
- util
์ด ๋ ์ธ๋ถ ์์กด ๊ด๊ณ ์์ด java class๋ง ์ ์
๋๋ฉ์ธ ๋ชจ๋ ๊ณ์ธต :
= ํ๋์ ๋ชจ๋์ ํ๋์ ์ธํ๋ผ์คํธ๋ญ์ณ๋ง ์ฑ ์์ง๋๋ก ํ๋ค.
-
domain-mysql
-
entity
-
repository
dependency:
-
spring-boot-starter-data-jpa
-
mysql:mysql-connector-java
-
-
-
domain-mongo (์ฌ์ค ์ด๋ถ๋ถ์ chat์์๋ง ์ฌ์ฉํ๋๊ฑฐ๋๊น chat-api ๋ด๋ถ์ ์ ์ํด๋ ๋..๋? (์ผ๋จ ์ฐธ๊ณ ์ฉ ์์))
-
entity
-
repository
dependency:
- spring-boot-starter-data-mongodb
-
๋ด๋ถ ๋ชจ๋ ๊ณ์ธต :
= ์ ์ฅ์, ๋๋ฉ์ธ ์ธ ์์คํ ์์ ํ์ํ ๋ชจ๋
= ์ดํ๋ฆฌ์ผ์ด์ , ๋๋ฉ์ธ ๋น์ง๋์ค๋ฅผ ๋ชจ๋ฅธ๋ค.
- ์ด๋ฉ์ผ ๊ฒ์ฆ ๋ชจ๋
์ดํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ๊ณ์ธต :
= ๋ ๋ฆฝ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ ์ดํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ๊ณ์ธต
= ํ์ ์ค๊ณ ํ๋ ๋ชจ๋๋ค์ ์กฐ๋ฆฝํ์ฌ ์๋น์ค ๋น์ฆ๋์ค๋ฅผ ์์ฑ์ํจ๋ค.
-
account-api (๊ณ์ )
-
chat-api (์ฑํ )
-
study-api (๋ฉด์ ์ฐ์ต - ํผ์, ์คํฐ๋)
์ฃผ์ ๋ฆฌ์ฃผ์ ๋ฆฌ
-
์ด ๊ฒ์ด ์ต์ ์ผ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
-
๊ทธ์ ๋์ ์ปค๋ค๋ ์์ฌ์ผ์ง๋
-
ํ์ฌ ํ๋ก์ ํธ์์ ๋๋ฉ์ธ ๋ณ๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ๋๋ ์ ๊ด๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฆฌ์์ ์ ๋ํ ๊ณต์๊ฐ ์ด์ด์์ฒญ ํด ๊ฒ ๊ฐ์ง ์๋ค ?
(๋ง์ ํด๋ณด๋ฉด ๋ ๋ค๋ฅผ ์ ์๊ฒ ์ง๋ง = ๊ทธ์ ๋์ ์์ฌ)





