[F-Lab 멘토링 학습]

API 게이트웨이

everydeveloper 2023. 9. 19. 20:34

API 게이트웨이

API 게이트웨이

API 게이트웨이

API 게이트웨이는 애플리케이션과 서비스간의 인터페이스입니다. API 게이트웨이를 사용하면 여러 백엔드 서비스, 데이터 및 기능을 하나의 통합된 API로 제공할 수 있습니다. 다음은 API 게이트웨이에 대한 기본 개념 및 AWS에서 제공하는 API 게이트웨이에 대한 정보입니다:

  1. 기본 개념:
    • 라우팅: 클라이언트 요청을 적절한 백엔드 서비스로 전달합니다.
    • 요청 및 응답 변환: 데이터를 요청이나 응답 형식에 맞게 변환합니다.
    • 보안: 인증 및 권한 부여 기능을 통해 API를 보호합니다.
    • 캐싱: 반복적인 요청에 빠르게 응답하기 위해 데이터를 캐싱합니다.
    • 모니터링 및 로깅: API 사용에 대한 로그 및 모니터링 기능을 제공합니다.
  2. AWS API 게이트웨이:
    • RESTful API: AWS API 게이트웨이를 사용하면 RESTful API를 쉽게 생성, 게시, 유지 보수 및 모니터링할 수 있습니다.
    • 통합: 다양한 AWS 서비스, 예를 들면 Lambda, EC2, DynamoDB 등과 통합됩니다.
    • 보안: AWS IAM(Identity and Access Management) 및 Cognito와 통합하여 사용자에게 안전한 접근을 제공합니다.
    • 요금: 호출 횟수와 데이터 전송량에 따라 요금이 부과됩니다.
    • SDK 생성: 자동으로 클라이언트 SDK를 생성할 수 있습니다.
  3. AWS에서 API 게이트웨이 사용 시 고려사항:
    • 배포: API 게이트웨이는 여러 스테이지(예: 개발, 테스트, 프로덕션)로 나누어 관리할 수 있습니다.
    • 버전 관리: 다양한 API 버전을 쉽게 관리할 수 있습니다.
    • 쓰로틀링: 초당 요청 수를 제한하여 서비스 과부하를 방지합니다.
    • CORS 설정: 다른 도메인에서의 요청을 허용하려면 CORS 설정이 필요합니다.

API 게이트웨이는 백엔드 서비스를 안전하게, 효율적으로, 확장 가능하게 제공하는 데 중요한 역할을 합니다. AWS 인증을 보유하신 만큼, AWS API 게이트웨이를 효과적으로 활용하는 능력은 여러분의 전문성을 더욱 강화할 것입니다.

API 게이트웨이 오픈 소스

AWS API 게이트웨이 외에도 여러 오픈 소스 API 게이트웨이가 있습니다. 다음은 몇몇 인기 있는 오픈 소스 API 게이트웨이를 나열한 것입니다:

  1. Kong:
    • Lua로 작성된 확장 가능한 API 게이트웨이입니다.
    • 플러그인 아키텍처를 사용하여 기능을 확장할 수 있습니다.
    • RESTful JSON 인터페이스를 제공하며, 여러 데이터 저장소와 통합됩니다.
  2. Tyk:
    • Go로 작성된 성능이 뛰어난 API 게이트웨이 및 관리 플랫폼입니다.
    • API 분석, 쿼터 및 속도 제한, 인증 및 권한 부여와 같은 기능을 제공합니다.
  3. Apiman:
    • Java로 개발되었으며, API 관리 및 게이트웨이 솔루션을 제공합니다.
    • 정책 기반의 플러그인 아키텍처를 갖추고 있습니다.
  4. Express Gateway:
    • Node.js 기반의 마이크로서비스 API 게이트웨이입니다.
    • Express.js와 통합이 잘 되며, 빠르게 확장할 수 있습니다.
  5. Traefik:
    • Go로 작성된 현대적인 HTTP 리버스 프록시 및 로드 밸런서입니다.
    • Docker, Swarm, Kubernetes, Marathon 및 기타 여러 백엔드와의 통합이 특징입니다.

이 외에도 많은 오픈 소스 API 게이트웨이와 관리 플랫폼이 있습니다. 요구 사항과 환경에 따라 가장 적합한 솔루션을 선택하는 것이 중요합니다. 오픈 소스를 사용하면 커스터마이징의 자유도가 높아지지만, 실제 사용 환경에 따라 적절한 리소스 및 지원을 준비해야 할 수도 있습니다.

MSA 아키텍쳐 구현을 위한 API 게이트웨이

MSA(Microservices Architecture)를 구현하기 위해 API 게이트웨이를 사용하는 것은 중요한 전략입니다. API 게이트웨이는 마이크로서비스 아키텍처의 여러 서비스에 대한 단일 진입점 역할을 합니다. 이를 통해 클라이언트가 여러 마이크로서비스에 직접 연결되는 것을 방지하고, 서비스 간의 통신을 중앙에서 관리하며, 보안 및 성능 최적화를 제공합니다.

API 게이트웨이를 사용하여 MSA를 구현할 때 고려해야 할 주요 사항은 다음과 같습니다:

  1. 라우팅:
    • 클라이언트의 요청을 적절한 마이크로서비스로 라우팅합니다.
    • 동적 라우팅, 버전 관리, 서비스 발견과 같은 기능이 필요할 수 있습니다.
  2. 로드 밸런싱:
    • 부하 분산을 통해 서비스의 성능 및 가용성을 높입니다.
  3. 보안:
    • 인증, 권한 부여 및 API 키 관리를 통해 마이크로서비스를 보호합니다.
    • SSL/TLS를 통한 트래픽 암호화를 제공합니다.
  4. 쓰로틀링 및 제한:
    • 서비스 오버로드를 방지하기 위해 요청의 비율을 제한하거나 쓰로틀링합니다.
  5. 모니터링 및 로깅:
    • 중앙에서 모든 트래픽을 모니터링하고 로그를 기록하여 디버깅 및 성능 모니터링을 용이하게 합니다.
  6. 요청 및 응답 변환:
    • 클라이언트와 서비스 간의 통신 형식을 변환합니다. 예를 들면, XML을 JSON으로 변환하는 것과 같은 작업입니다.
  7. 캐싱:
    • 반복적인 요청에 빠르게 응답하기 위해 중요한 정보를 캐시합니다.
  8. 회로 차단기 패턴:
    • 서비스 장애 시 빠르게 회복하고, 장애 확산을 방지하기 위해 회로 차단기 패턴을 사용합니다.

다양한 오픈 소스 API 게이트웨이 (예: Kong, Tyk, Traefik 등)를 사용하여 위와 같은 기능을 구현할 수 있습니다. 선택된 API 게이트웨이가 MSA를 지원하기 위한 필수 기능들을 충족시키는지 확인하고, 구현 및 운영 중에 위에 언급된 사항들을 반영하는 것이 중요합니다.

API 게이트웨이와 보안

API 게이트웨이는 마이크로서비스 아키텍처의 중앙 진입점으로, 보안 관점에서 핵심적인 역할을 합니다. 올바른 방식으로 구성되고 관리되면 API 게이트웨이는 여러 보안 위협으로부터 시스템을 보호할 수 있습니다. 다음은 API 게이트웨이와 관련된 주요 보안 고려사항입니다:

  1. 인증 (Authentication):
    • 클라이언트나 사용자가 누구인지 확인합니다.
    • 일반적인 방법으로는 API 키, JWT (JSON Web Tokens), OAuth 등이 있습니다.
  2. 권한 부여 (Authorization):
    • 인증된 사용자나 클라이언트가 특정 리소스나 기능에 접근할 권한이 있는지 확인합니다.
    • 예: 특정 역할을 가진 사용자만 특정 API 엔드포인트에 액세스할 수 있도록 제한
  3. 요청 및 응답 필터링:
    • 악성 코드, SQL 인젝션, 크로스 사이트 스크립팅 (XSS)과 같은 악의적인 페이로드를 필터링하여 내부 서비스를 보호합니다.
  4. 속도 제한 (Rate Limiting):
    • DDoS 공격이나 서비스 악용을 방지하기 위해 특정 IP나 클라이언트의 요청 속도를 제한합니다.
  5. SSL/TLS 터미네이션:
    • API 게이트웨이에서 SSL/TLS 연결을 종료하고, 내부 네트워크에서는 암호화되지 않은 연결을 사용할 수 있습니다. 이를 통해 리소스를 효율적으로 사용하며, 공개 인터넷에 노출되는 통신은 암호화됩니다.
  6. 회로 차단기 (Circuit Breaker):
    • 시스템 내 일부 서비스의 장애가 전체 시스템에 영향을 주는 것을 방지하기 위해 회로 차단기 패턴을 사용할 수 있습니다.
  7. 로깅 및 모니터링:
    • 모든 API 요청과 응답을 로깅하여 보안 사건 발생 시 추적 및 분석이 가능하도록 합니다.
  8. CORS 정책:
    • 특정 도메인에서의 요청만 허용하도록 Cross-Origin Resource Sharing (CORS) 정책을 설정하여 웹 브라우저에서의 악의적인 요청을 차단합니다.

API 게이트웨이의 보안 설정은 API 및 연결된 백엔드 서비스의 특성, 예상되는 트래픽 패턴, 보안 요구 사항에 따라 달라질 수 있습니다. 따라서, API 게이트웨이를 구축 및 운영할 때는 위의 보안 사항들을 철저히 고려하고 적절한 보안 메커니즘을 적용하는 것이 중요합니다.