[MSA] Spring Cloud Gateway

SuJeong.K·2024년 10월 25일
0
post-thumbnail

API Gateway란?

API Gateway란 클라이언트와 여러 백엔드 서비스 간의 요청 및 응답을 관리하며 단일 진입점 역할을 하는 서버를 말한다.

장점

  • 단일 진입점 제공
    : 클라이언트가 여러 서비스에 대한 요청을 단일 URL을 통해 전달할 수 있어 편리하다.
  • 서비스 간 통신관리
    : 다양한 마이크로서비스 간의 통신을 중앙에서 관리하여 복잡성을 줄이고, 개발자들이 시스템을 쉽게 이해하고 유지보수할 수 있게한다.
  • 응답 통합
    : 여러 서비스의 응답을 하나로 통합하여 클라이언트에게 간편한 응답을 제공함을써 클라이언트의 요청 수를 줄일 수 있다.
  • 보안 강화
    : 인증 및 권한 부여 기능을 중앙에서 관리하여 보안을 강화하고, 서비스 별로 구현할 필요를 줄일 수 있다.
  • 로깅 및 모니터링
    : API 호출 로그 및 메트릭 수집 기능을 통해 서비스 성능 및 문제 발생 시 신속한 대응을 가능하게 한다.
  • 응답 캐싱
    : 자주 요청되는 데이터를 임시저장하여 서버 부하를 줄이고 응답시간을 단축시킨다.
  • API 문서화 지원
    : Swagger, OpenAPI와 같은 도구를 활용하여 API 구조와 사용법을 문서화함으로써 개발자들이 쉽게 이해하고 사용할 수 있도록 지원한다.

단점

  • 단일 장애점
    : API Gateway에 문제가 발생하면 모든 서비스에 접근할 수 없게되어 시스템 가용성이 저하될 수 있다.
  • 성능 병목
    : 모든 요청이 Gateway를 통과해야하므로, Gateway의 성능이 전체 시스템에 영향을 미칠 수 있다.
  • 추가 복잡성
    : 시스템 아키텍처에 추가적인 복잡성을 초래하며, Gateway 관리 및 설정이 필요하다.
  • 비용
    : 추가적인 인프라 및 관리 비용이 발생할 수 있다.


API Gateway 시스템 구성

1. 요청 처리

  • 클라이언트가 API Gateway에 요청을 보낸다.
  • Gateway는 요청을 적절한 마이크로서비스로 라우팅한다.

2. 서비스 디스커버리

  • 클라이언트가 요청한 서비스의 인스턴스를 찾기 위해 Eureka Server와 같은 서비스 디스커버리 시스템을 사용한다.
  • Gateway는 해당 서비스의 위치를 확인하고 요청을 전달한다.

3. Fallback 처리

  • 특정 서비스가 실패하거나 응답이 지연될 경우 FallBack Server를 통해 기본 응답을 제공하여 더 나은 UX를 유지할 수 있다.

4. 모니터링 및 로깅

  • API Gateway가 모든 요청 및 응답에 대한 로그를 기록하고 메트릭을 수집하여 성능을 모니터링한다.
  • Admin 인터페이스를 통해 운영자가 데이터를 확인하고 시스템 상태를 점검할 수 있다.

5. 설정 관리

  • Config Server를 통해 애플리케이션의 설정정보를 중앙집중식으로 관리하고, 필요할 때 동적으로 변경한다.
  • Git 저장소에 설정파일의 버전을 관리하여 필요한 설정을 쉽게 로드한다.



API Gateway vs Load Balancer 비교

API Gateway와 Load Blancer는 일반적으로 소프트웨어 아키텍쳐에서 사용하는 역할과 기능을 말하며 여러 구현체들이 있다. 이는 서로 다른 역할을 수행하지만, MSA에서 함께 사용될 때 시스템의 성능과 가용성을 크게 향상시킬 수 있다.

API Gateway

특징

  • 클라이언트와 여러 백엔드 서비스 간의 단일 진입점 제공하며, 요청 라우팅, API 버전관리, 인증 및 권한부여, 응답 캐싱, API 문서화, 로깅 및 모니터링과 같은 고급 기능을 제공한다.
  • 이를 통해 여러 마이크로서비스의 응답을 통합하여 클라이언트에게 제공하는 중재자 역할을 한다.

사용 위치

  • 클라이언트와 서버 간의 요청을 처리하는 최전선에 위치하며, 다양한 API 관련 기능을 제공한다.

구현

  • API Gateway는 Kong, AWS API Gateway, NGINX, Spring Cloud Gateway 등의 소프트웨어 또는 서비스로 구현된다.

Load Balancer

특징

  • 들어오는 요청을 여러 서버 인스턴스에 분산시켜 특정 서버에 부하가 몰리는 것을 방지한다.
  • 이를 통해 시스템의 고가용성을 제공하며 한 서버가 실패하더라도 다른 서버가 요청을 처리할 수 있도록 하고, 특정 클라이언트 요청을 동일한 서버로 라우팅하여 세션 정보를 유지하는 기능도 제공한다.

사용 위치

  • 백엔드 서버 앞에 위치하여 여러 서버로 요청을 분산하는데 집중한다.

구현

  • Load Balancer는 HAProxy, NGINX 등의 소프트웨어 기반의 솔루션으로 구현될 수 있으며, F5 Big-IP와 같은 하드웨어 장비로도 제공될 수 있다.

0개의 댓글