๐งโโ๏ธ MSA ์ฌ์ด๋ ํ๋ก์ ํธ(SIDE PROJECT)
๐ฏ ํ๋ก์ ํธ ๊ฐ์
๋จ์ผ ์๋ฒ ๊ตฌ์กฐ๋ฅผ ์๋น์ค๋ณ๋ก ๋ถ๋ฆฌํ๊ณ ํต์ ํ๋ MSA ๊ตฌ์กฐ๋ก ์ ํํ๋ ๊ฐ์ธ ์ฌ์ด๋ ํ๋ก์ ํธ์ ๋๋ค. Spring Cloud ํต์ฌ ์ปดํฌ๋ํธ(Eureka, Config, Gateway, Feign)๋ฅผ ์ฐ๋ํ๊ณ Docker๋ก ๋ฉํฐ ์๋น์ค๋ฅผ ํจ๊ป ๊ตฌ๋ํ๋๋ก ๊ตฌ์ฑํ์ต๋๋ค.
๐ ๊ธฐ์ ์คํ
- Spring Boot, Spring Cloud (Eureka, Config, Gateway, OpenFeign)
- Kafka, Docker, WSL, Actuator
๐งฉ ๊ตฌํ ๋ด์ฉ ๋ฐ ํ์ต ํฌ์ธํธ
1. ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ (Eureka)
- ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ Eureka ์๋ฒ์ ์๋ ๋ฑ๋ก๋๋๋ก ์ค์ .
- ์๋น์ค ๊ฐ IP๋ฅผ ๊ณ ์ ํ์ง ์์๋ ์๋ ํ์ ๊ฐ๋ฅํจ์ ํ์ธ.
EUREKA_CLIENT๊ฐ ์๋ฒ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ๋ฉฐ ์ฅ์ ๊ฐ์ง ๋์์ ์ค์ตํจ.
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka/
ํ์ต ํฌ์ธํธ:
์๋ IP ์ฐ๊ฒฐ์ด ํ์ ์๋ ์๋น์ค ์๋ ํ์ ๊ตฌ์กฐ์ ์๋ฆฌ๋ฅผ ์ดํด.
2. ์ค์ ์ค์ ๊ด๋ฆฌ (Config Server)
- Config Server๋ฅผ ํตํด ๊ฐ ์๋น์ค์ yml ํ์ผ์ ์ค์ Git ์ ์ฅ์์์ ๋ถ๋ฌ์ด.
- ์๋น์ค๋ณ ์ค์ ์ด ๋ณ๊ฒฝ๋์ด๋, Config ์๋ฒ์ ์ ์ฅ์๋ง ์์ ํ๋ฉด ๋จ.
- ํ๊ฒฝ ๋ณ์(GIT_USERNAME, CONFIG_ENCRYPTION_KEY)๋ฅผ ์ฌ์ฉํด ๋ณด์๊ฐ ๊ด๋ฆฌ ์ค์ต.
set GIT_USERNAME=your_github_username # ๋ณด์์ ์ํด ์์ ์์ฑํด๋์ ์ ์ ๋ค์
set CONFIG_ENCRYPTION_KEY=my-super-secret-keyํ์ต ํฌ์ธํธ:
์ค์ ์ด์ ํ๊ฒฝ์ฒ๋ผ ์ค์ ์ค์ ๊ด๋ฆฌ์ ๋ณด์ ๋ถ๋ฆฌ์ ๊ฐ๋ ์ ์ฒด๋.
3. API Gateway ๋ผ์ฐํ
-
์ธ๋ถ ์์ฒญ์ด
http://localhost:8080/user-service/**๋ก ๋ค์ด์ค๋ฉด๋ด๋ถ์ ์ผ๋ก User-Service๋ก ๋ผ์ฐํ ๋๋๋ก ์ค์ .
-
๋ผ์ฐํ , ํํฐ, ๊ฒฝ๋ก ๋ฆฌ๋ผ์ดํธ ๋ฑ ๊ธฐ๋ณธ์ ์ธ Gateway ์ค์ ์ ์ค์ต.
spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081/
predicates:
- Path=/user-service/**
ํ์ต ํฌ์ธํธ:
API ๊ฒ์ดํธ์จ์ด์ ์ญํ (๋ณด์, ํธ๋ํฝ ์ ์ด, ๋ผ์ฐํ )๊ณผ ๋ผ์ฐํ ์ค์ ์ ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ์ดํด.
4. ์๋น์ค ๊ฐ ํต์ (Feign Client)
auth-service์user-service๊ฐ ํต์ ์ Feign Client๋ก ๊ตฌํ.- RESTTemplate์ ๋์ฒดํ์ฌ, ์ธํฐํ์ด์ค ๊ธฐ๋ฐ ํต์ ๊ตฌ์กฐ๋ฅผ ๊ฒฝํ.
@FeignClient(name = "auth-service")
public interface AuthClient {
@GetMapping("/auth/validate")
String validate(@RequestParam String token);
}
ํ์ต ํฌ์ธํธ:
Feign์ด ๋ด๋ถ์ ์ผ๋ก HttpClient๋ฅผ ๋ํํ์ฌ ๊ฐ๊ฒฐํ ์๋น์ค ๊ฐ ํธ์ถ ๊ตฌ์กฐ๋ฅผ ๋ง๋ ๋ค๋ ์ ์ ์ดํด.
๐ ์ฃผ์ ๊ธฐ๋ฅ
- ์คํ๋ง cloud๋ฅผ ์ฌ์ฉํ msa ์๋น์ค
- ์ ์ , ๊ธฐ๋ฅ, api ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๊ณ FeignClient๋ฅผ ์ด์ฉํจ์ผ๋ก์จ ๊ฐ msa๊ฐ์ ํต์ ์ ๊ตฌํ
๐ ๋ฐฐ์ด ์
- msa ์ํคํ ์ณ์ ์ค๊ณ๋ฐฉ๋ฒ
- FeignClient๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ Config Server์ ์ด์๋ฐฉ๋ฒ
๐ https://github.com/cvcvcx9/my-spring-microservice-repoย