Microservices Architecture / / 2024. 12. 16. 10:36

서비스 게이트웨이(Service Gateway)

서비스 게이트웨이(Service Gateway)마이크로서비스 아키텍처(MSA) 환경에서 클라이언트백엔드 서비스 간의 중간 관문 역할을 하는 서버나 시스템입니다.

클라이언트의 요청을 여러 마이크로서비스로 라우팅하고, 부가적인 기능(인증, 로깅, 로드 밸런싱, 보안 등)을 제공합니다. 이를 통해 클라이언트가 여러 서비스와 직접 통신하는 복잡성을 줄여주고, 서비스 간의 효율적인 통신을 가능하게 합니다.


서비스 게이트웨이의 주요 역할

  1. 요청 라우팅 (Routing)

    • 클라이언트 요청을 적절한 백엔드 서비스로 전달합니다.
    • 예: /api/users → 사용자 서비스, /api/orders → 주문 서비스.
  2. 로드 밸런싱 (Load Balancing)

    • 여러 인스턴스 중 하나로 요청을 분산하여 시스템 부하를 줄입니다.
  3. 인증 및 권한 검사 (Authentication & Authorization)

    • 요청을 필터링하여 인증된 사용자만 접근할 수 있게 합니다.
    • 예: JWT(JSON Web Token)나 OAuth를 검증합니다.
  4. 보안 (Security)

    • SSL/TLS 암호화를 통해 데이터 전송을 보호합니다.
    • IP 필터링이나 방화벽과 같은 보안 로직도 포함될 수 있습니다.
  5. 캐싱 (Caching)

    • 자주 요청되는 데이터를 캐싱하여 성능을 개선합니다.
  6. 로깅 및 모니터링 (Logging & Monitoring)

    • 요청 및 응답의 로그를 기록하여 트래픽 분석이나 문제 진단에 활용합니다.
  7. API 변환 (API Translation)

    • 요청을 백엔드 서비스가 이해할 수 있는 포맷으로 변환하거나 통합합니다.
  8. 속도 제한 및 트래픽 제어 (Rate Limiting)

    • 특정 시간 동안 요청 수를 제한하여 시스템 오버로드를 방지합니다.

서비스 게이트웨이의 필요성

  1. 클라이언트와 서비스 간의 복잡성 감소

    • 클라이언트는 서비스 게이트웨이를 통해 단일 진입점으로 요청을 보내기 때문에, 서비스별로 따로 호출할 필요가 없습니다.
  2. 보안 강화

    • 인증 및 권한 부여를 게이트웨이에서 처리하여 백엔드 서비스의 부담을 줄입니다.
  3. 유연한 서비스 확장

    • 새로운 서비스를 추가하거나 수정할 때도 클라이언트는 게이트웨이를 통해 접근하므로 변경이 최소화됩니다.
  4. 트래픽 관리

    • 로드 밸런싱, 캐싱, 속도 제한 등을 통해 시스템의 성능과 안정성을 보장합니다.

대표적인 서비스 게이트웨이 도구

  1. Netflix Zuul

    • Netflix에서 개발한 오픈소스 API Gateway입니다.
    • 요청 라우팅, 필터링, 보안 등을 지원합니다.
  2. Spring Cloud Gateway

    • Spring Cloud에서 제공하는 API Gateway로, 리액티브 프로그래밍을 기반으로 합니다.
  3. Kong Gateway

    • 고성능 오픈소스 API Gateway로, 플러그인 기능을 통해 확장이 가능합니다.
  4. AWS API Gateway

    • 클라우드 환경에서 사용되는 AWS의 API Gateway 서비스입니다.
  5. NGINX

    • 웹 서버이자 리버스 프록시로도 활용되며 API Gateway 역할도 수행합니다.

서비스 게이트웨이 예시

  1. 클라이언트 요청

    • 사용자가 /api/users/123로 사용자 데이터를 요청합니다.
  2. 서비스 게이트웨이 라우팅

    • 서비스 게이트웨이는 요청을 받아서 "User Service"로 라우팅합니다.
  3. 필터링 및 처리

    • JWT 토큰을 검증 → 요청 로깅 → 속도 제한 검사 → 서비스 호출
  4. 응답 반환

    • 백엔드 서비스의 응답을 받아 클라이언트에 반환합니다.

정리

서비스 게이트웨이API Gateway의 역할을 하며 클라이언트와 백엔드 서비스 간의 단일 진입점입니다.

  • 요청 라우팅, 인증/보안 처리, 로드 밸런싱, 캐싱 등 다양한 기능을 제공하여 마이크로서비스 환경의 복잡성을 줄이고 효율성을 높입니다.

마이크로서비스 아키텍처에서는 필수적인 컴포넌트로, 안정적이고 확장 가능한 시스템을 만들기 위해 활용됩니다.

'Microservices Architecture' 카테고리의 다른 글

리액티브(Reactive)와 논리액티브(Non-Reactive)  (0) 2024.12.16
Spring Cloud Gateway  (4) 2024.12.16
Netflix Zuul  (0) 2024.12.16
링 버퍼(Ring Buffer)  (0) 2024.12.13
Circuit Breaker(서킷 브레이커)  (1) 2024.12.13
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유