API 라우팅 패턴은 클라이언트 요청이 어떤 서비스로 전달될지 명확하게 정의하는 규칙입니다.
서로 다른 팀이 개발한 서비스가 뒤섞이면
/users, /user, /api/v1/user, /v1/users
같은 비일관적 경로들이 발생합니다.
API 라우팅 패턴을 적용하면 다음처럼 모든 서비스가 같은 규칙을 따르게 된다.
/api/v1/users
/api/v1/orders
/api/v1/auth
MSA 구조는
프론트엔드 → API Gateway → Microservices
Gateway는 요청이 들어왔을 때 이렇게 해야 합니다.
/api/v1/users → user-service
/api/v1/auth → auth-service
/api/v1/routine → routine-service
API는 시간이 지나면 변경되기 마련이다.
하지만 기존 앱은 옛버전을 여전히 호출할 수 있기 때문에,
버전 관리(v1, v2, v3 …) 해야 서비스 업그레이드가 용이합니다
/api/v1/users ← 기존 앱 유지
/api/v2/users ← 새로운 Response 제공
/api/v1/auth/* → 인증 제외 (login 필요 없음)
/api/v1/users/* → JWT 인증 필요
/api/v1/admin/* → 관리자 Role 필요
일관된 라우팅 구조가 있어야
Gateway, Spring Security, Role 기반 접근 제어를 쉽게 설정할 수 있다.
https://api.myservice.com/users
https://admin.myservice.com/dashboard
https://m.myservice.com/home
이런식으로 요청이 들어오면 각각의 도메인이 다르기에 Gateway가 Service를 다르게 보낸다.
1) 기능별로 도메인을 분리할 수 있음 (서비스 경계 명확)
• api.example.com → API 서버
• admin.example.com → 관리자 웹
• cdn.example.com → 정적 파일
• openapi.example.com → 외부 개발자용 API
2) URL 구조를 깔끔하게 유지할 수 있음
Path-based Routing (경로 기반)
example.com/api/users
example.com/admin/dashboard
Host-based Routing (도메인 기반)
api.example.com/users
admin.example.com/dashboard
3) MSA + API Gateway와 궁합이 최고임
Nginx, AWS ALB, Spring Cloud Gateway, Envoy 모두 지원하는 패턴.
예: Spring Cloud Gateway에서 Host 라우팅
routes:
- id: user-service
uri: http://user-service:8080
predicates:
- Host=api.example.com
- id: admin-service
uri: http://admin-service:8080
predicates:
- Host=admin.example.com

호스트 이름 라우팅 패턴은 도메인을 기준으로 요청을 서로 다른 백엔드 서비스로 라우팅하는 패턴이다.
MSA 환경에서 서비스 경계를 명확하게 하고, 인증/보안/트래픽 정책을 도메인 단위로 분리하여 적용할 수 있다는 장점이 있다.
또한 API Gateway(Nginx, ALB, SCG 등)에서 광범위하게 지원되며,
규모가 커질수록 Host 기반 분리가 API 설계와 운영 효율을 크게 향상할수있다.
AWS API 라우팅 패턴
https://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/cloud-design-patterns/api-routing.html