Spring Cloud๋ฅผ ์ง์ ์ฒ์์ผ๋ก ๊ณต๋ถํด๋ณด๊ณ , ํ๊ธฐ๋ฅผ ํตํด ๊ณต๋ถ ์์์ ๊ณ ๋ฏผํ๋ ์ฌ๋๋ค์ ์ํด ๊ธ์ ์ด๋ค.
0. ์์ ๊ณ๊ธฐ
๋ง์ ๋๊ธฐ์ ๋ค์ด MSA๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์ ์ต๊ทผ์ ๊ด์ฌ์ ๊ฐ์ง๊ฒ ๋๋ค.
์ฌ๋ฌ MSA์ ์ฅ์ ๋ค์ ์๊ฒ๋๊ณ ํ๋ก์ ํธ์ ์ ์ฉํ๊ณ ์ถ์๋ค.
๋ฌด์์ ์ธํ๋ฐ์ Spring Cloud ๊ฐ์๋ฅผ ์ฌ์ ๊ณต๋ถํ๊ธฐ ์์ํ๋ค.
1. ๊ฐ์ ์๊ฐ
(๊ด๊ณ ์๋)
Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ (MSA) | Dowon Lee - ์ธํ๋ฐ
Dowon Lee | Spring framework์ Spring Cloud ์ ํ๊ตฐ์ ์ด์ฉํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด ๋ณด๋ ๊ณผ์ ์ ๋๋ค. Cloud Native Application์ผ๋ก์จ์ Spring Cloud๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง, ๊ตฌ์ฑ์ ์ด๋ป๊ฒ ํ๋
www.inflearn.com
๊ฐ์ ์์ฒด๋ ์ต์ ๊ฐ์๋ ์๋์๋ค.
๊ฐ์๋ Spring Boot 2 ๋ฒ์ ์์ ์ธ๋ฐ, ์ต๊ทผ์ Spring Boot 3 ๋ฒ์ ์ผ๋ก ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ์ จ๋ค.
์ด์ ๋ง์ถฐ์ Security ๋ฒ์ ๋ ๋ง์ด๊ทธ๋ ์ด์ ํ์ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฐ๋ฐ ์์ ์์ฒด๋ Spring Boot 2 ๋ฒ์ ์ด๋ผ์ ๊ณ ๋ฏผ ํ์์ง๋ง, ๋ง๋ ํ Spring Cloud ๊ฐ์๊ฐ ์๋ ๊ฒ ๊ฐ์์ ์๊ฐํ๋ค.
๊ฐ์๋ฅผ ๋ชจ๋ ๋ฃ์ง ์์๊ณ , ์ด๋ฏธ ์๊ณ ์๊ฑฐ๋ ํ์ํ ๋ถ๋ถ์ด ์๋๋ฉด ๊ฑด๋๋ฐ๊ณ ๋ค์๋ค.
๊ทธ๋ ๋ค ๋ณด๋ 70%์ ๋ ๋ค์๋ค.
๊ฐ์ ์์ฒด๋ ๋์์ด ๋์๋ค.
์กฐ๊ธ ์์ฌ์ ๋๊ฒ ์๋ค๋ฉด (๋ฌผ๋ก ํ์ฐ์ ์ธ ๋ด์ฉ์ด์ง๋ง,) Spring Cloud์ธ์ ๋ด์ฉ ์ธ ๋ค๋ฅธ ๋ด์ฉ์ ์ง์ค๋๋ ๋ด์ฉ์ด ์์๋ ๊ฑฐ..?
2. ์ MSA?
MSA ์ํคํ ์ณ๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ค๊ณํ๊ณ ๊ฐ๋ฐํ๋ค ๋ณด๋ ๋ง์ด ๋ฌด๊ฒ๋ค๋ ๋๋์ ๋ง์ด ๋ฐ์๋ค.
๋ชจ๋๋ฆฌ์์ด์๋ค๋ฉด ํ์ํ์ง ์์์ ์ถ๊ฐ์ ์ธ ํต์ , ๋ฉ์ธ์ง ํ ๊ด๋ฆฌ, ์ถ๊ฐ์ ์ธ ์๋ฒ ๋ฑ๋ฑ..
ํ ์คํธ์ฉ ์๋ฒ ๋น๋ ์กฐ์ฐจ ๋ฌด๊ฑฐ์์ง๋ค. ํนํ Spring MSA๋ ๋์ฑ ๊ทธ๋ฐ๊ฑฐ ๊ฐ๋ค.
๊ทธ ๊ณผ์ ์์, "์ MSA๋ฅผ ์ ํ"ํ๋์ง๊ฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ ๊ฐ๋ค.
MSA ์ ๋ฌธ์ฉ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ ์ฉํ๋ ค๊ณ ํ๋ค๋ฉด,
MSA ์ํคํ ์ณ์ ์์ฉํ ๋งํผ ์ ๋ง ํ์ํ๊ฐ?
์ ๋ต์ ์ฐพ๋๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ฒ ๊ฐ๋ค.
Spring Cloud๋ ๊ฒฐ์ฝ ๊ฐ๋ณ๊ฒ ๊ณต๋ถํ ์ ์๋ ๋ฒ์๊ฐ ์๋๋ค.
์ด๋ณด์ ์ ์ฅ์์ ์ ์ด๋ ์ ๊ฐ์์ด ๊ฑธ๋ฆฐ๋ค๊ณ ์๊ฐํ๋ค.
๋๊ธฐ์ ์ด MSA๋ฅผ ์ ํํ๋ ์ด์ ๋ ๋๊ธฐ์ ์ ๊ท๋ชจ ์์ฒด๊ฐ ๋ฐฉ๋ํ๊ธฐ ๋๋ฌธ์ MSA๋ฅผ ์ ํํ๋ค.
๋ฌผ๋ก ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
๋ฉํ์ '์ค๋ ๋'๋ ๋ชจ๋๋ฆฌ์ ๊ตฌ์กฐ๋ก 1์ต๋ช ์ ์ ์ ๋ฅผ ์์ฉํ๋ค.
๋ฌด์กฐ๊ฑด MSA๊ฐ ์ ๋ต์ ์๋์๋ ๊ฒ์ด๋ค.
3. ์ ์ ์ MSA ๊ณต๋ถ?
MSA๊ด๋ จ ์ง์์ด๋ ๊ณต๋ถ๋ ์ฐ๋์ฌํญ์ด ๋์๋ค.
์ง์ ๊ณต๋ถํด์ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๊ฒ๋ ํด๋ณด๋ ๊ฒ ๊น์ง ์ข๋ค๊ณ ์๊ฐํ๋ค.
์ฌ์ค MSA๋ฅผ ์ ํ๋ฉด์, "์ ์ ์ MSA๋ฅผ ์ฐจ๋ผ๋ฆฌ ๊ฑด๋ค์ง ์๋๊ฒ ์ข๋ค"๋ ๋ง์ ๊ต์ฅํ ๋ง์ด ๋ค์๋ค.
๋ด๊ฐ ์๊ฐํ๋ ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. MSA์ ๋ฐฉ๋ํ ์์ ์ถฉ๋ถํ ๊ณต๋ถํ ์ญ๋์ด ๋๊ธฐ ์ด๋ ต๋ค.
2. ๋ณดํต ์ ์ ์ MSA ์ํคํ ์ณ๋ฅผ ์ ํํ ๋งํผ ํฐ ๊ท๋ชจ์ ํ๋ก์ ํธ๋ฅผ ํ๊ธฐ ํ๋ค๋ค.
3. ์ ๋๋ก ๊ณต๋ถํ์ง ์์ผ๋ฉด ์ฐจ๋ผ๋ฆฌ ์ํ๋๊ฒ ๋ซ๋ค.
๋ฌผ๋ก ์์ ์ด ์ ๋ง ์ธ์ธํ๊ณ ๊น์ด์๊ฒ ๊ณต๋ถํ ์์ ์ด ์๋ค๋ฉด ํด๋ ์ข์ ๊ฒ ๊ฐ๋ค. (๋๋ ๊ทธ ์๊ฐ์ผ๋ก ์์ํ๋ค)
ํ์ง๋ง ๊ทธ๊ฒ๋ณด๋ค ๊ธฐ๋ณธ์ ๋ ์ถฉ์คํ๊ฒ ํ๋๊ฒ ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
4. ๋ฐฉํฅ์ฑ
๋๋ ์ด๋ฏธ ํ๋ก์ ํธ์ Spring Cloud๋ฅผ ์ ์ฉ์ํค๊ณ ๋์ดํฌ ์ ์์ ๋งํผ ๋ง์ด ์งํํ๋ค.
๋๋ MSA์ ๋ํ ์ ๊ทผ์ ๋ค์๊ณผ ๊ฐ์ด ํด๋ณด๋ ค๊ณ ํ๋ค.
4-1. MSA vs Monolithic ์ฑ๋ฅ ๋น๊ต๋ถ์
MSA์ํคํ ์ณ์ ๋ชจ๋๋ฆฌ์์ํคํ ์ณ ๋ชจ๋ ๋์ผ ์กฐ๊ฑด ํ์ ์๋ฒ๋ฅผ ๊ตฌ๋ํ๊ณ , ๊ฐ ์๋ฒ์ ์ฑ๋ฅ ์ฐจ์ด๋ฅผ ๋น๊ตํ๋ ค๊ณ ํ๋ค.
๊ฐ ์๋ฒ๊ฐ ์ผ๋ง๋ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋๊ณ , ์ด๋ ๋ถ๋ถ์์ ์ด๋ค ๋ถ๋ถ์ด ์ข์์ง ์ง์ ๋น๊ตํด๋ณด๋ ค๊ณ ํ๋ค.
์ด๋ฅผ ํตํด MSA๋ฅผ ์ ํํ๋๊ฒ ์ด๋ค ์ด์ ์ด ์๋์ง, ์ด๋ค ๊ด์ ์์ ์ฅ์ ์ธ์ง ๋ชธ์ ๋๊ปด๋ณด๋ ค๊ณ ํ๋ค.
4-2. MSA๋ฅผ ๊ฒฝํํ ๊ฒ๊ณผ ์ํ ๊ฒ์ ์ฐจ์ด
MSA ์ํคํ ์ณ์ ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ณธ ๊ฒ ์์ฒด์ ํฐ ์๋ฏธ๊ฐ ์์๋ค.
์ค๊ณ, ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ชจ๋๋ฆฌ์์ด๋ผ๋ฉด ๊ฒฝํํด๋ณด์ง ๋ชปํ ์ฌ๋ฌ ๊ณ ๋ฏผ๋ค์ ๋๋ถ์ ํ ์ ์์๋ค.
- DB์ ๋ถ๋ฆฌ
๊ฐ ์๋ฒ๋ง๋ค ๊ฐ๊ณ ์๋ DB๋ฅผ ์ด๋ป๊ฒ ๋๋์ด์ผ ํ ์ง, ์ด๋ค ๋๋ฉ์ธ์ ๊ธฐ์ค์ผ๋ก ๋๋์ด์ผ ํ ์ง ๊ณ ๋ฏผํ๋ค.
๋ค๋ฅธ ์๋ฒ ํ ์ด๋ธ์ ์ฐธ์กฐ๊ฐ์ ์ป์ ์ ์๋ค๋ณด๋, ๊ตฌํ ๋ฐฉ๋ฒ์์ ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค.
ID๋ก ๋ค๋ฅธ ์ ๊ทธ๋ฆฌ๊ฒ์์ ์ฐธ์กฐํ๋ผ | Popit
ํ์๋ ์ง๋ ๊ธ ์ ๋ฐ๋ถ์์ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ Domain-Driven Design ์์ ๋งํ๋ ๊ตฌ์กฐ๋ฌผ ์ค ํ๋ ์ธ ์กฐ๋ฆฝ๋ฌผ AGGREGATE[1] ์ ๋ํด ์ด์ผ๊ธฐํ๋ค. ์กฐ๋ฆฝ๋ฌผ์ ๊ตฌํํ๋ค ๋ณด๋ฉด ๋ค๋ฅธ ์กฐ๋ฆฝ๋ฌผ์ ์ฐธ์กฐํด์ผ ํ ๋๊ฐ ์
www.popit.kr
์ด๋ฌํ ๊ณ ๋ฏผ๋ค์ ๋ถ๋ช ํ ๋์ ๋ ๊ฒ์ด๋ค.
- ๊ฐ ์๋ฒ๊ฐ์ ์์กด์ฑ
๊ฐ ์๋ฒ๋ค์ ๋ถ๋ฆฌํ ๋งํผ, ์๋ฒ๋ค๊ฐ์ ์์กด์ฑ์ด ๋ฎ์์ผ ํ๋ค.
๊ฐ ์๋น์ค๋ค์ ๋จ๋ ์ผ๋ก ์คํ๋ ์ ์์ด์ผ ํ๋ค.
์ด๋ฅผ ๊ณ ๋ฏผํ๋ฉด์ ์ฌ๋ฌ ๊ตฌํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๋ค.
์กฐ์ฌ๋ฅผ ๋ง์ด ์งํํด ๋ณด์์ง๋ง ์ด๋์๋ ๋ช ์พํ ๋ต์ ์์๋ค.
์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์ด๋ ํ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ด๋๊น์ง๋ง, ๋๊ฐ ๊ฐ๊ณ ์์ ๊ฒ์ด๋ ์ฌ์ด์ ์คํ๊ธฐ๋ผ๋ ๊ฒ์ ๋๊ผ๋ค.
๊ทธ ํ๋จ์ ๊ธฐ์ค์ ๋ ผ๋ฆฌ์ ์ธ ์ด์ ์ด๊ฑฐ๋ ๊ฒฝํ์ ์ํ ๊ฒ์ด๋ค. ์ด๋ ค์ด ๊ณผ์ ์ค ํ๋์๋ค.
๋์ค์๋ ์ต์ง๋ก MSA์ ๋ผ์๋ง์ถฐ์ ์ค๊ณํ๋ ์์ผ๋ก๋ ํ๋ฌ๊ฐ๋ ์ญํจ๊ณผ๊ฐ ์ผ์ด๋๊ธฐ๋ ํ๋ค.
- ์ค์ (Configuration) ์ฃผ์ ๋ถ๋ฆฌ
๊ฐ ์๋ฒ๋ค์ ์ค์ ํ์ผ(yml ๋ฑ)์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง, ์ค๋ณต ๋ด์ฉ์ด๋ refresh์ ๋ํ ๋ด์ฉ๋ค์ ๊ณต๋ถํ๋ค.
์ธ๋ถ ์ ์ฅ์์์ ์ค์ ํ์ผ์ ์ฃผ์ ํ๋ ๋ฐฉ๋ฒ๊น์ง ์๊ฒ ๋์๋ค.
- ๊ฐ ์๋ฒ๊ฐ์ ํต์
๊ฐ ์๋ฒ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํ๊ธฐ ์ํด์ ์๋ฒ๋ค๊ฐ์ ํต์ ์ด ๋ถ๊ฐํผํ๋ค.
ํต์ ํ๋ ๊ณผ์ ์์ฒด์ ์ค๋ฒํค๋๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ํจ์จ์ ๋ํ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ค.
๋ํ ์๋ฌ ๋ฐ์์ ๋ํ ๋์์ ์ด๋ป๊ฒ ํด์ผํ ์ง ์ถ๊ฐ์ ์ผ๋ก ๊ณ ๋ฏผํ๊ฒ ๋์๋ค.
- ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐฉ๋ฒ
ํ ์๋ฒ์์ ๊ฐ์ง๊ณ ์๋ ์์์ฑ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅธ ์๋ฒ์ ๋๊ธฐํ(Synchronize)๋์ด์ผ ํ๋ค.
๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํด Kafka ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๊ณ ์ด์ฉ๋ ๊ฒฝํํด ๋ณด์๋ค.
์ธ ๋ฑ๋ฑ ์๋ฒ ๋น๋, ํ ์คํธ, bus-refresh, ์ธ๊ฐ ๊ณผ์ , Response๊ฐ์ฒด ์ ๊ทํ ๋ฑ ์ฌ๋ฌ ๊ณ ๋ฏผ์ ์๋ ์์ด ํ๋ค.
๋น์ฐํ ๊ณต๋ถ์ ์ ๋ต์ ์๋ค. ๋์ ๊ฒฝํ์ด 100% ๋๊ตฌ์๊ฒ ์ ์ฉ๋๋ ๊ฒ๋ ์๋๋ค.
๋ค๋ง ๋ฌด์์ ์ง์คํ ์ง ์ ์ ํํ๋ ๊ฒ์ด ๋์ฒด์ ์ผ๋ก ์ข์ ๋ฐ์ ์ด ๋ ํ๋ฅ ์ด ๋๋ค.
'์ค๋์ ๊ฐ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Supabase์ PostgreSQL Index Advisor (0) | 2024.04.14 |
---|---|
๋ฐ๋๋ผ ์์ด์คํฌ๋ฆผ๋ง ์ฌ๋ฉด ์๋์ฐจ ์๋์ด ์๊ฑธ๋ฆฐ ์ด์ (2) | 2024.03.28 |
HTTPS ๋งํ (2) | 2023.11.20 |