[Project] Spring cloud
Categories: Project
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
Spring Cloud๋?
์ด๋ฒ์ ๋ด๊ฐ ์คํ๋ง ํด๋ผ์ฐ๋๋ฅผ ๊ณต๋ถํ๋ฉด์ ๋๋ ์ ๋ค์ ์ ๋ฆฌํด๋ดค๋ค. ์ฌ์ค ์ฒ์์ ๋ณต์กํด ๋ณด์๋๋ฐ, ์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํ๋๊น ์๊ฐ๋ณด๋ค ๊ฐ๋ ์ด ๋ช ํํด์ ธ์ ์ ๋ฆฌํ๋ฉด์ ํ ๋ฒ ๋ ๋์๊ธธ ์ ์์๋ค.๐๐
์คํ๋ง ํด๋ผ์ฐ๋๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)๋ฅผ ๊ตฌ์ถํ ๋ ์ ์ฉํ ํด๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ๊ณตํด์ฃผ๋ ํ๋ ์์ํฌ๋ค. ์ฌ๊ธฐ์ ๊ฐ ์๋น์ค๋ค์ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋๊ณ ๋ฐฐํฌ๋์ง๋ง, ๊ทธ๋ค ๊ฐ์ ํต์ , ํ์ฅ์ฑ, ์ฅ์ ์ฒ๋ฆฌ ๋ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋๋ฐ, ๋ํ์ ์ผ๋ก ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ, API Gateway, ๋ถ์ฐ ์ถ์ ๋ฑ์ด ์๋ค.
1. Eureka: ์ ํ๋ฒํธ๋ถ ์ญํ ์ ํ๋ ์ปดํฌ๋ํธ
Eureka๋ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์ ์ค์ฌ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ์ฝ๊ฒ ๋งํ๋ฉด, ๊ฐ ์๋น์ค๊ฐ ์ด๋์ ์๋์ง ์๋ ค์ฃผ๋ โ์ ํ๋ฒํธ๋ถโ ์ญํ ์ ํ๋ ์ปดํฌ๋ํธ๋ค. ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ Eureka ์๋ฒ์ ์์ ์ ๋ฑ๋กํ๊ณ , ๋ค๋ฅธ ์๋น์ค๋ค์ ํ์ํ ๋์ ์ด Eureka ์๋ฒ์์ ๊ทธ ์์น ์ ๋ณด๋ฅผ ์ป๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์๋น์ค ๊ฐ ํต์ ์ด ํจ์ฌ ์์ํด์ง๋ค.
์ฌ๊ธฐ์ ๊ธฐ์ตํด์ผ ํ ๊ฑด, ๊ฐ ์๋น์ค๊ฐ Eureka ํด๋ผ์ด์ธํธ๋ก ์ค์ ๋ผ ์์ผ๋ฉด, ์ฃผ๊ธฐ์ ์ผ๋ก ์์ ์ ์ํ์ ์์น(IP, ํฌํธ)๋ฅผ Eureka ์๋ฒ์ ๋ฑ๋กํ๊ณ ๊ฐฑ์ ํ๋ค๋ ์ ์ด๋ค.
2. API Gateway: ์ธ๋ถ ํธ๋ํฝ์ ๊ด๋ฌธ
API Gateway๋ ์ธ๋ถ์์ ๋ค์ด์ค๋ ๋ชจ๋ ํธ๋ํฝ์ ์ ๊ตฌ๋ค. ํํ North-South ํธ๋ํฝ์ ์ ์ดํ๋ค๊ณ ํํํ๋๋ฐ, ์ด๋ ์ธ๋ถ์์ ๋ด๋ถ๋ก, ํน์ ๋ด๋ถ์์ ์ธ๋ถ๋ก ๊ฐ๋ ํธ๋ํฝ์ ๋งํ๋ค. ์ด์ ๋ฐ๋๋ก ์๋น์ค ๊ฐ์ ํต์ , ์ฆ East-West ํธ๋ํฝ์ ์ฃผ๋ก ์๋น์ค ๋ฉ์ฌ๊ฐ ๋ด๋นํ๋ค. ์ด ์ฐจ์ด๋ฅผ ์๊ณ ์์ผ๋ฉด ํท๊ฐ๋ฆฌ์ง ์์ ์ ์๋ค.
3. API Gateway์ Service Mesh์ ๊ณตํต ๊ธฐ๋ฅ
API Gateway์ ์๋น์ค ๋ฉ์ฌ๋ ๋ช ๊ฐ์ง ๊ณตํต๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค
- Distributed Tracing
- Service Discovery
- Load Balancing
- TLS Termination
- JWT Validation
- Request Routing
- Traffic Splitting
- Canary Deployment
- Traffic Mirroring
- Rate Limiting
์ด์ฒ๋ผ ์ฌ๋ฌ ๊ธฐ๋ฅ์์ ๊ฒน์น์ง๋ง, ๊ฐ๊ฐ์ ์ฉ๋๋ ๋ค๋ฅด๋๊น ์ํฉ์ ๋ง๊ฒ ์ ํํด์ผ ํ๋ค.
4. API Gateway๋ง์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ
-
Edge Decoupling
Edge Decoupling์ ์ธ๋ถ ์์ฒญ๊ณผ ๋ด๋ถ API ์ฌ์ด์ ์์ถฉ ์ญํ ์ ํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์ฌ๊ธฐ์ API Gateway๊ฐ ํ ์ ์๋ ์ผ์ ๋ค์๊ณผ ๊ฐ๋ค:
- ์์ฒญ/์๋ต ๋ณํ
- ์ธ๋ถ๋ก๋ถํฐ ์ค๋ ์์ฒญ์ ์์ ํด์ ๋ฐฑ์๋์ ์ธ๋ถ ์ฌํญ์ ๊ฐ์ถ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ํค๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๊ณ , ํ์ด๋ก๋ ๋ณํ ๋ฑ์ ํ ์ ์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
ํ๋กํ ์ฝ ๋ณํ
- XML, JSON ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ๋กํ ์ฝ์ API Gateway๊ฐ ์์์ ๋ณํํด์ค ์ ์๋ค.
- ์ค๋ฅ/์๋ ์ ํ์ ๋ฐ๋ฅธ ์๋ต ์ฌ์ฉ์ ์ง์
- ํน์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋๋ ํธ๋ํฝ์ด ๋๋ฌด ๋ง์ ์๋ ์ ํ์ด ๊ฑธ๋ ธ์ ๋, ๊ฒ์ดํธ์จ์ด๊ฐ ์์ฒด์ ์ผ๋ก ์๋ต์ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ค.
- ์ง์ ์๋ต
- ํด๋ผ์ด์ธํธ๊ฐ ๋น์ ์์ ์ธ ์์ฒญ์ ํ ๋, ๋ฐฑ์๋์ ๊ฐ์ง ์๊ณ API Gateway ์์ฒด์์ ๋ฐ๋ก ์๋ต์ ์ค ์ ์๋ค.
- ํ๋ก์ ํ์ดํ๋ผ์ธ ์ ์ด
- ์์ฒญ ์ฒ๋ฆฌ ์์๋ฅผ ๋ฐ๊พธ๊ฑฐ๋, ๋๋ฒ๊น ๋๊ตฌ๋ฅผ ์ ๊ณตํด์ ๋ณต์กํ ๋ก์ง์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์์ฒญ/์๋ต ๋ณํ
- Request Control (์์ฒญ ์ ์ด)
- API Gateway๋ ํด๋ฌ์คํฐ๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋จ์ํ ํ์ฉํ๋ ๊ฒ ์๋๋ผ, ์ด๋ค ๋ฐ์ดํฐ์ ์์ฒญ/์๋ต์ด ํ์ฉ๋๋์ง๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํ๋ค.
- ์๋ฅผ ๋ค์ด, SQL Injection๊ณผ ๊ฐ์ ๊ณต๊ฒฉ์ ๋ง์ ์ ์๋ค. ์ด๊ฑธ ์ํด API Gateway๋ ์ํคํ ์ฒ์ ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ํ ๊น์ ์ดํด๊ฐ ํ์ํ๋ค.
- Custom Security/Bridging Trust Domains
- API Gateway์ ๊ฝ์ด๋ผ ํ ์ ์๋ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ ๋ฐ๋ก ์ฃ์ง ๋ณด์, ์ฆ ์ธ์ฆ๊ณผ ์ธ๊ฐ ๊ด๋ฆฌ๋ค.
- ์ฌ๊ธฐ์ ์ค์ํ ๊ฑด ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ(Authorization)๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ.
Service discovery
โ๏ธ Service discovery๋ MicroService Architecture์์ ๊ฐ๋ณ ์๋น์ค๊ฐ ๋์ ์ผ๋ก ์์นํ ์ฃผ์๋ ํฌํธ ๋ฑ์ ์ฐพ์ ์ ์๋๋ก ํ๋ ๋งค์ปค๋์ฆ
โ๏ธ ๋ง์ดํฌ๋ก์๋น์ค์์๋ ๊ฐ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋๊ณ ํ์ฅ๋๊ธฐ ๋๋ฌธ์ ์๋น์ค ๊ฐ ํต์ ์ ์ํด์ ์๋ก์ ์์น๋ฅผ ์์์ผ ํ๊ณ , ์ด๋ฐ ๋์ ํ๊ฒฝ์์ ์๋น์ค๊ฐ ์ด๋์ ์์นํ๋์ง ์๊ธฐ ์ํด ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
โ๏ธ ์ฃผ์ ๊ธฐ๋ฅ
- Service Registry
- Service Registry๋ ๊ฐ ์๋น์ค์ ์์น ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ์ญํ ์ ํ๋ค.
- Eureka, Consul, Zookeeper ๊ฐ์ ํด์ด ๋ํ์ ์ธ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ ์ญํ ์ ์ํ
- ์๋น์ค๊ฐ ์์๋๋ฉด ์์ ์ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋กํ๊ณ , ์ข ๋ฃ๋๋ฉด ์ ๊ฑฐ ๋๋ค.
- ์๋น์ค ๋ฑ๋ก
- ์๋น์ค๊ฐ ์์๋ ๋, ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ์์ ์ IP์ ํฌํธ ์ ๋ณด๋ฅผ ๋ฑ๋กํ๋ ๊ณผ์
- ์๋น์ค ๋ฑ๋ก์ ์๋น์ค๊ฐ ์ง์ ํ ์๋ ์๊ณ , ์ด๋ฅผ ๋์ ํ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ ํ๋ก์๊ฐ ์ฒ๋ฆฌํ ์๋ ์๋ค.
- ์๋น์ค ์กฐํ
- ํด๋ผ์ด์ธํธ๊ฐ ๋ค๋ฅธ ์๋น์ค์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์, ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ํด๋น ์๋น์ค์ ์์น ์ ๋ณด๋ฅผ ์กฐํํ๋ ๊ณผ์
- ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ ์๋น์ค๊ฐ ๋์ ์ค์ธ์ง ์ฌ๋ถ์ ๊ด๋ จ๋ ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์๋น์ค๊ฐ ์ค๋จ๋๋ฉด ์๋น์ค ๋ชฉ๋ก์์ ์ ๊ฑฐํ๋ค.
โ๏ธ ์ฅ์
- ๋์ ํ์ฅ์ฑ
- ์๋น์ค๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๊ฑฐ๋ ์ข ๋ฃ๋ ๋, ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ๋ฐ์ํ๋ฏ๋ก, ํด๋ฌ์คํฐ ๋ด์์ ์ฝ๊ฒ ํ์ฅํ๊ฑฐ๋ ์ถ์ํ ์ ์๋ค.
- ์ฅ์ ๋ณต๊ตฌ
- ์๋น์ค๊ฐ ๋ค์ด๋๊ฑฐ๋ ์ค๋จ๋๋ฉด, ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๊ฐ ํด๋น ์๋น์ค๋ฅผ ๋ชฉ๋ก์์ ์ ๊ฑฐํ์ฌ ์์ฒญ์ด ์คํจํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค.
- ์ ์ฐํ ๋ก๋ ๋ฐธ๋ฐ์ฑ
- ํด๋ผ์ด์ธํธ ๋๋ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์ฌ๋ฌ ์ธ์คํด์ค ๊ฐ์ ๋ก๋๋ฅผ ๋ถ๋ฐฐํ์ฌ ํธ๋ํฝ์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ ์ ์๋ค.
- ์ค์ํ๋ ์๋น์ค ๊ด๋ฆฌ
- ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํด ์๋น์ค ์์น์ ์ํ๋ฅผ ์ค์์์ ๊ด๋ฆฌํ ์ ์์ด, ๋คํธ์ํฌ ํ๊ฒฝ์ด ๋์ ์ด๊ฑฐ๋ ๋ณต์กํ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ธ ํต์ ์ด ๊ฐ๋ฅ
โ๏ธ Service Discovery tool
- Netflix Eureka: Netflix๊ฐ ๊ฐ๋ฐํ ์คํ ์์ค ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ก, Spring Cloud์์ ๋๋ฆฌ ์ฌ์ฉ
- HashiCorp Consul: ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ํจ๊ป ์๋น์ค ๊ตฌ์ฑ ๊ด๋ฆฌ, ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํด.
- Apache Zookeeper: ๋ถ์ฐ ์์คํ ์ ์ํ ์ค์ํ๋ ์๋น์ค ๊ด๋ฆฌ ํด๋ก, ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์๋ ์ฌ์ฉ๋จ.
โ๏ธ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ ๋ ๊ฐ์ง ํจํด์ด ์๋๋ฐ Client-side discovery์ Server-side discovery๊ฐ ์๋ค. ์ด๊ฑด ์๋์ ๋ฐ๋ก ์ ๋ฆฌํ ์์
Client-side discovery vs Server-side discovery
Service discovery ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํฌ๊ฒ client discovery ๋ฐฉ์๊ณผ server side discovery ๋ฐฉ์์ด ์๋ค.
Client-Side Discovery
- Client-Side Discovery์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ์๋น์ค์ ์์น๋ฅผ ์กฐํํ ํ, ํด๋น ์๋น์ค๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ ๊ฐ ์๋น์ค์ ์ธ์คํด์ค์ ๊ทธ ์์น(IP ์ฃผ์์ ํฌํธ)๋ฅผ ์๊ณ ์๋ ์ญํ ์ ํ๋ค.
- ๋์ ๋ฐฉ์:
- ์๋น์ค ์ธ์คํด์ค๊ฐ ์์๋๋ฉด ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ์์ ์ ์์น(IP, ํฌํธ)๋ฅผ ๋ฑ๋ก.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ์์ฒญ์ ๋ณด๋ด๋ ค๊ณ ํ ๋, ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ํด๋น ์๋น์ค ์ธ์คํด์ค์ ์์น๋ฅผ ์กฐํ.
- ํด๋ผ์ด์ธํธ๊ฐ ์ ํํ ์๋น์ค ์ธ์คํด์ค์ ์ง์ ์์ฒญ์ ์ ์ก.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ์๋น์ค ์์น ์กฐํ๋ฅผ ์์ฒด์ ์ผ๋ก ์ฒ๋ฆฌ.
- ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ์ ๊ตฌ์ฑ ์์
- Service Registry : Eureka, Consul, Zookeeper์ ๊ฐ์ ์์คํ ์ด ์๋น์ค ๋ฑ๋ก ๋ฐ ์กฐํ๋ฅผ ๋ด๋น.
- ํด๋ผ์ด์ธํธ: ์ง์ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ํ์ํ ์๋น์ค๋ฅผ ์ฐพ๊ณ , ๊ทธ ์ ๋ณด๋ก ์์ฒญ์ ๋ณด๋.
- Load Balancer: ํด๋ผ์ด์ธํธ์์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํ (์: Ribbon ๋ผ์ด๋ธ๋ฌ๋ฆฌ).
- ์
- Spring Cloud์์ Netflix Eureka๋ฅผ ์ฌ์ฉํ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ๊ฐ ๋ํ์
-
ํด๋ผ์ด์ธํธ๊ฐ Eureka ์๋ฒ์์ ๋ค๋ฅธ ์๋น์ค์ ์์น๋ฅผ ์กฐํํ๊ณ , ์ง์ ์ ํํ ์ธ์คํด์ค์ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ์
1 2
# ํด๋ผ์ด์ธํธ๋ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ(Eureka)์์ ์๋น์ค ์์น๋ฅผ ์กฐํ ํ ์์ฒญ ์ ์ก Client --> Service Registry --> Selected Service
- ์ฅ์
- ๋จ์ํ ์ธํ๋ผ
- ์ถ๊ฐ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ง์ ์ฒ๋ฆฌ
- ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์๋น์ค ์ธ์คํด์ค์ ์์ฒญํ ์ง ๊ฒฐ์ ํ๋ฏ๋ก, ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ ๋ต์ ์ ์ฐํ๊ฒ ์ ์ฉ ๊ฐ๋ฅ.
- ๋จ์ํ ์ธํ๋ผ
- ๋จ์
- ํด๋ผ์ด์ธํธ ๋ณต์ก์ฑ ์ฆ๊ฐ
- ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค ์์น ์กฐํ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ง์ ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ๋ก์ง์ด ๋ณต์กํด์ง ์ ์๋ค.
- ํด๋ผ์ด์ธํธ ๋ณ๊ฒฝ ํ์
- ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ณํ๊ฐ ์๊ธฐ๋ฉด ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์ ๋ฐ์ดํธ๊ฐ ํ์
- ํด๋ผ์ด์ธํธ ๋ณต์ก์ฑ ์ฆ๊ฐ
Server-Side Discovery
- ์๋ฒ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ์์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ์์ฒญ์ ๋ณด๋ผ ๋ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์ค๊ฐ์์ ์์ฒญ์ ๋ฐ์ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์กฐํํ๊ณ , ์ ์ ํ ์๋น์ค ์ธ์คํด์ค์ ์์ฒญ์ ์ ๋ฌํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํตํด ๋ชจ๋ ํต์ ์ ํ๊ณ , ์ง์ ์๋น์ค ์์น๋ฅผ ์ฐพ์ง ์์๋ ๋๋ค.
- ๋์ ๋ฐฉ์
- ์๋น์ค ์ธ์คํด์ค๊ฐ ์์๋๋ฉด ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์ ์์ ์ ์์น๋ฅผ ๋ฑ๋ก.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์์ฒญ์ด ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ ๋ฌ.
- ๋ก๋ ๋ฐธ๋ฐ์๋ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ์๋น์ค ์์น๋ฅผ ์กฐํํ ํ, ์ ์ ํ ์๋น์ค ์ธ์คํด์ค์ ์์ฒญ์ ํฌ์๋ฉ.
- ํด๋ผ์ด์ธํธ๋ ์ค์ ์๋น์ค ์์น๋ฅผ ์์ง ๋ชปํ ์ฑ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํตํด ํต์ .
- ์๋ฒ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ์ ๊ตฌ์ฑ ์์
- Service Registry
- Eureka, Consul, Zookeeper ๋ฑ๊ณผ ๊ฐ์ ๋ ์ง์คํธ๋ฆฌ๊ฐ ๊ฐ ์๋น์ค์ ์์น ์ ๋ณด๋ฅผ ๊ด๋ฆฌ.
- Load Balancer
- HAProxy, AWS Elastic Load Balancer, NGINX ๋ฑ๊ณผ ๊ฐ์ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฐ์ ์ ์ ํ ์๋น์ค๋ก ์ ๋ฌ.
- Service Registry
- ์
- AWS์์ ์ ๊ณตํ๋ Elastic Load Balancer (ELB)๋ NGINX๋ ์๋ฒ ์ฌ์ด๋ ๋์ค์ปค๋ฒ๋ฆฌ์ ๋ํ์ ์ธ ์ฌ๋ก
-
ํด๋ผ์ด์ธํธ๊ฐ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด, ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ์๋น์ค๋ฅผ ์กฐํํ๊ณ ์ ์ ํ ์๋น์ค ์ธ์คํด์ค์ ์์ฒญ์ ์ ๋ฌํ๋ ๋ฐฉ์
1 2
# ํด๋ผ์ด์ธํธ๋ ๋ก๋ ๋ฐธ๋ฐ์์ ์์ฒญ์ ๋ณด๋ด๊ณ , ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ์์ ์กฐํ Client --> Load Balancer --> Service Registry --> Selected Service
- ์ฅ์
- ํด๋ผ์ด์ธํธ ๋จ์ํ
- ํด๋ผ์ด์ธํธ๋ ๋ก๋ ๋ฐธ๋ฐ์์๊ฒ ์์ฒญ๋ง ๋ณด๋ด๋ฉด ๋๋ฏ๋ก, ์๋น์ค ์์น ์กฐํ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ํด ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค
- ๋ก๋ ๋ฐธ๋ฐ์์์ ์ค์ํ๋ ๊ด๋ฆฌ
- ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ๋ชจ๋ ์๋น์ค ์์น ์กฐํ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๊ด๋ฆฌํ๋ฏ๋ก, ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ์ ์ฉ ๊ฐ๋ฅ.
- ํ์ฅ์ฑ: ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์์ ๋ ๋ก๋ ๋ฐธ๋ฐ์์์ ์ผ๊ด๋๊ฒ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ํด๋ผ์ด์ธํธ ๋จ์ํ
- ๋จ์
- ๋ก๋ ๋ฐธ๋ฐ์ ์ถ๊ฐ ํ์
- ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๋ณ๋๋ก ์ค์ ํ๊ณ ๊ด๋ฆฌํด์ผ ํ๋ฏ๋ก ์ธํ๋ผ๊ฐ ๋ณต์กํด์ง ์ ์์ด.
- ์ถ๊ฐ ๋คํธ์ํฌ ํ
- ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ฏ๋ก, ๋คํธ์ํฌ ์ง์ฐ์ด ์๊ธธ ์ ์์ด.
- ๋ก๋ ๋ฐธ๋ฐ์ ์ถ๊ฐ ํ์
์ฐธ๊ณ ์ฌ์ดํธ
https://themapisto.tistory.com/23
https://themapisto.tistory.com/186
Leave a comment