ABOUT ME

개발 지식을 기록, 정리하는 블로그

Today
Yesterday
Total
  • [실시간 채팅 서비스#4] API-Gateway
    개발 일지 2024. 10. 17. 13:27

    API-Gateway

     

    API-Gateway는 MSA가 떠오르며 그와 함께 필요성에 의해 탄생한 솔루션이다.
    API서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고, API에 대한 인증/인가 기능에서 부터 메세지에 따라서 여러 서버로 라우팅 하는 고급기능 까지 많은 기능을 담당할 수 있다.

     

    API-Gateway는 다양한 활용 방법이 존재한다.
    이 글에서 모두 설명하지는 않고, 실제로 Potatalk 프로젝트에서 적용한 방식과 그 외의 기능을 간략히 소개한다.


    API 서버들의 엔드포인트를 단일화

     

    MSA 아키텍처는 각각의 마이크로서비스 마다 별도의 엔드포인트에서 실행된다.
    API-Gateway를 적용하지 않을 경우, 클라이언트는 그러한 마이크로서비스의 정보를 확인해야 하는 번거로움이 있다.
    API-Gateway를 사용하면 하나의 엔드포인트에서 요청을 수신하고, 요청 경로를 읽어 매치되는 마이크로서비스에 라우팅한다.

     

     

    예를들어 Client가 8000/MS1 경로로 요청을 보냈다면, API-Gateway는 그 요청을 수신하고 경로를 확인하여 매칭되는 MS1 서버로 라우팅한다.

    추가적으로 외부로 노출시킬 마이크로서버의 API를 선택하여, 노출 시킬 필요가 없는 API를 감출수도 있다.


    인증/인가 및 공통 로직 처리

     

    모든 마이크로서비스가 API-Gateway를 거치기 때문에, 공통 로직을 처리하는 것에 매우 유리하다.
    그 대표적인 예시가 바로 인증/인가이다.

    간단한 예시를 보자.

     

     

    Client가 인증 요청을 보내면 API-Gateway는 OAuth 서버에 라우팅한다.
    OAuth 서버는 인증 정보를 확인하고, 올바를 경우 token을 발급한다.

    Client는 발급 받은 토큰을 헤더에 담아 다음 요청에 전송한다.

     

     

    API-Gateway는 인가 프로세스를 거쳐 전송 받은 토큰을 검증하고, 문제가 없을 경우 요청한 API에 대한 권한을 승인하여 라우팅이 이루어진다.
    이 과정에서 token에 설정된 권한에 따라 API 사용 권한을 제한하는 사용법도 존재한다.


    그 외에도 API-Gateway는 다양한 방식으로 활용될 수 있다.

    • API 서버로의 로드 밸런싱
    • 메세지 또는 헤더 기반 라우팅
    • 메디에이션(Mediation)
      • 클라이언트가 제공한 데이터와 API 서버가 원하는 형태가 다를 때, 이를 API 서버가 원하는 형태로 변환하는 기능이다.
    • 어그레게이션(aggregation)
      • 하나의 워크플로우를 위해 복수의 API가 동작할 때, 이 복수의 동작을 하나의 API로 묶는 작업을 말한다.
    • 로깅 및 미터링
Designed by Tistory.