[MSA] chapter 1.8_MSA Component
Categories: MSA
Tags: MSA, SpringCloud
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
์ธํ๋ฐ Dowon Lee๋์ Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
(MSA) ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ํ๊ธฐ์
๋๋ค.๐
Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
(MSA) ๊ฐ์ ๋ค์ผ๋ฌ ๊ฐ๊ธฐ๐ฉโ๐ซ
MSA ํ์ค ๊ตฌ์ฑ์์์ ์ฃผ์ ๊ธฐ์
- ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋๊ณ ํ์ฅ๋ ์ ์๋ ์์ ์๋น์ค๋ค์ด ๋ชจ์ฌ ํ๋์ ํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ์ํคํ ์ฒ์ด๊ณ ,
- ์ด ์ํคํ ์ฒ๋ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๋ฅผ ์ต์ํํ๊ณ ์ ์ฐ์ฑ์ ๋์ด๊ธฐ ์ํด ๋ค์ํ ๋๊ตฌ์ ์์คํ ์ ๊ฒฐํฉํ์ฌ ํจ์จ์ ์ธ ๊ตฌ์ฑ์ ์ง์ํ๋ค.
1. MSA ๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ๊ตฌ์ฑ ์์
- API ๊ฒ์ดํธ์จ์ด
- ํด๋ผ์ด์ธํธ(๊ทธ๋ฆผ์ Mobile App, Browser App) ์์ฒญ์ ์์งํ์ฌ ์ ์ ํ ์๋น์ค๋ก ๋ผ์ฐํ ํ๋ ์ง์ ์ ์ญํ
- API Gateway๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ์ฝ๊ฒ ์ ๊ทผํ๋๋ก ํ๋ฉฐ, ์๋น์ค ์์น๋ฅผ ๊ด๋ฆฌํ๋ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์ ํต์ ํ๋ค.
- ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
- ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ์์น๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ผ๋ก,
- API ๊ฒ์ดํธ์จ์ด ๋ฐ ๋ผ์ฐํฐ๊ฐ ํ์ํ ๋ ์๋น์ค๋ฅผ ์ฐพ์ ์ ์๋๋ก ์ง์ํ๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์
- ์ฌ๋ฌ ์ธ์คํด์ค์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์์ ๊ฒฝ์ฐ, ํธ๋ํฝ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ์ฌ ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๋ค.
- ํ๊ฒฝ ์ค์ ๊ด๋ฆฌ
- ๊ฐ ์๋น์ค๊ฐ ์ธ๋ถ ์์คํ ์ ํ๊ฒฝ ์ค์ ์ ์ ์ฅํ๊ณ ํ์ํ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์ฝ์ด์ค๋๋ก ํ๋ค.
- ์ปจํ
์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ
- Docker์ ๊ฐ์ ์ปจํ ์ด๋ ๊ฐ์ํ ๊ธฐ์ ์ ํตํด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋ค.
- ๋ฉ์์ง ์์คํ
- ์๋น์ค ๊ฐ ๋น๋๊ธฐ ํต์ ์ ์ง์ํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํ๋ค.
- ๋ฐฑํน ์๋น์ค
- ๊ฐ ์๋น์ค์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๋ชจ์ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ ๊ตฌ์ฑ์ผ๋ก, NoSQL, RDBMS ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฌ์ฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง๊ณผ ์ง๋จ
- Telemetry ๊ธฐ๋ฅ์ ํตํด ๊ฐ ์๋น์ค์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ฑ๋ฅ์ ์ง๋จํ๋ค.
2. ์๋น์ค ๋ฉ์ฌ (Service Mesh)
- MSA ์ธํ๋ผ์์ ๋ฏธ๋ค์จ์ด ์ญํ ์ ํจ
- ์๋น์ค ๋ฉ์ฌ๋ ์๋น์ค ๊ฐ์ ํต์ ์ ๊ด๋ฆฌํ๋ ์ถ์ํ๋ ๋คํธ์ํฌ ๋ ์ด์ด์ด๋ค.
- ๋ด๋ถ ์๋น์ค ๊ฐ ์์ ํ๊ณ ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ๋ณด์ฅํ๊ณ , ๋ผ์ฐํ , ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ธ์ฆ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์์ ์ฑ๊ณผ ๊ฐ์์ฑ์ ๋์ฌ์ค๋ค.
- Istio์ Envoy ๊ฐ์ ๊ธฐ์ ์ด ๋ํ์
- ์๋น์ค ๋ฉ์ฌ์ ์ฃผ์ ๊ธฐ๋ฅ:
- ํต์ ์ ์ด ๋ฐ ๋ณด์: URI, API ๋ฒ์ , ์ธ์ฆ ๋ฑ์ ํตํด ์๋น์ค ๊ฐ ํต์ ์ ์ ์ดํ๋ค.
- ๋ถํ ๋ถ์ฐ ๋ฐ ์ฅ์ ๊ฒฉ๋ฆฌ: ์๋น์ค ๊ฐ ํธ๋ํฝ์ ๋ถ์ฐํ๊ณ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ต์ํ์ ์ํฅ์ผ๋ก ์๋น์ค ์ฐํ๋ฅผ ์ง์ํ๋ค.
- ์ถ์ ๋ฐ ๋ชจ๋ํฐ๋ง: ํต์ ๊ฒฝ๋ก์ ํธ๋ํฝ ํ๋ฆ์ ์๊ฐํํ์ฌ ๋ถ์ํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
3. MSA๋ฅผ ์ง์ํ๋ ์ฃผ์ ๊ธฐ์ ์คํ
- ๊ฒ์ดํธ์จ์ด
- Nginx, Kong: ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ผ์ฐํ ํ๊ณ API ๊ฒ์ดํธ์จ์ด ์ญํ ์ ํ๋ค.
- Netflix OSS Zuul: ์คํ๋ง ํด๋ผ์ฐ๋์ ํตํฉ๋์ด API ๊ฒ์ดํธ์จ์ด ๊ธฐ๋ฅ์ ์ํํ๋ค.
- ์๋น์ค ๋ฉ์ฌ
- Istio, Envoy: ํ๋ ฅ์ ์ธ ์๋น์ค ๋ฉ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ด๋ถ ์๋น์ค ํต์ ์ ๊ด๋ฆฌํ๋ค.
- ๋ฐํ์ ํ๊ฒฝ
- Docker: ์๋น์ค ์ปจํ ์ด๋ํ๋ก ๊ฐ์ ํ๊ฒฝ์์ ๊ฒฉ๋ฆฌ๋ ์๋น์ค ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- Kubernetes: ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ํตํด ์๋น์ค ๋ฐฐํฌ์ ํ์ฅ์ ๊ด๋ฆฌํ๋ค.
- ํ๋ ์์ํฌ
- Spring Boot์ Spring Cloud: ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ, ์ฌ๋ฌ ๊ธฐ๋ฅ์ ํ๋ ์์ํฌ ๋ด์์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ์ง์ํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฉ์์ง
- Kafka, Redis, MongoDB: ๋ฉ์์ง ์์คํ ๊ณผ ๋ฐฑํน ์๋น์ค์์ ๊ฐ๊ฐ ํ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ NoSQL ๋ฑ ๋ค์ํ ๊ธฐ์ ์ ํตํด ์ต์ ํ๋๋ค.
- ์๋ํ ๋๊ตฌ
- Gradle๊ณผ Maven: ์ฝ๋ ๋น๋์ ํจํค์ง์ ๊ด๋ฆฌํ๋ค.
- Jenkins: CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ํตํด ์ง์์ ํตํฉ๊ณผ ๋ฐฐํฌ๋ฅผ ์ง์ํ๋ค.
- ๋ชจ๋ํฐ๋ง ๋๊ตฌ
- ELK Stack: Elasticsearch, Logstash, Kibana๋ก ๊ตฌ์ฑ๋ ์คํ์ผ๋ก, ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ถ์ํ์ฌ ์๋น์ค ์ํ๋ฅผ ์๊ฐํํ๋ค.
- DataDog: ์๋น์ค ๋ชจ๋ํฐ๋ง ๋ฐ ์ฑ๋ฅ ๊ด๋ฆฌ๋ฅผ ์ํ ์ ๋ฃ ์๋ฃจ์ ์ผ๋ก ๋ค์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
์์ฝ ๐
MSA๋ ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๊ฐ ๊ฒฐํฉ๋์ด ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด๋ฉฐ
API Gateway, ์๋น์ค ๋ฉ์ฌ, Docker์ Kubernetes ๋ฑ์ ๋ค์ํ ๋๊ตฌ๋ฅผ ํตํด ์๋น์ค์ ๊ฒฐํฉ๋๋ฅผ ์ต์ํํ๊ณ , ๋ชจ๋ํฐ๋ง๊ณผ CI/CD ์๋ํ ๋๊ตฌ๋ฅผ ํตํด ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ด์์ ์ง์ํ๋ค.
Leave a comment