본문으로 건너뛰기

Cache

1 API Gateway 응답 캐싱

  • API Gateway는 AWS의 강력한 서버리스 API 관리 서비스입니다.
  • 이 서비스의 중요한 기능 중 하나는 응답 캐싱입니다.
  • 응답 캐싱을 통해 API의 성능을 크게 향상시키고 백엔드 시스템의 부하를 줄일 수 있습니다.
  • 이 글에서는 API Gateway의 캐싱 기능과 캐시 무효화에 대해 자세히 알아보겠습니다.

1.1 캐싱의 이점

  • 백엔드 호출 수 감소: 캐싱을 통해 동일한 요청에 대해 백엔드 시스템을 반복적으로 호출하는 것을 방지합니다.
  • 응답 시간 개선: 캐시된 응답을 제공함으로써 클라이언트에게 더 빠른 응답을 제공할 수 있습니다.
  • 백엔드 부하 감소: 백엔드 시스템의 부하를 줄여 전체 시스템의 안정성을 향상시킵니다.

1.2 캐싱 설정

  • TTL (Time to Live):
    • 기본값: 300초
    • 최소값: 0초
    • 최대값: 3600초 (1시간)
  • 스테이지별 캐시: 각 API 스테이지마다 독립적인 캐시를 설정할 수 있습니다.
  • 메소드별 오버라이드: 특정 API 메소드에 대해 캐시 설정을 개별적으로 조정할 수 있습니다.
  • 캐시 암호화: 민감한 데이터를 위해 캐시 암호화 옵션을 제공합니다.
  • 캐시 용량: 0.5GB에서 237GB 사이에서 선택 가능합니다.

1.3 캐싱 사용 시 고려사항

  • 비용: 캐싱은 추가 비용이 발생하므로, 프로덕션 환경에서는 유용할 수 있지만 개발/테스트 환경에서는 불필요할 수 있습니다.
  • 데이터 신선도: 캐시된 데이터가 최신 상태를 유지하도록 적절한 TTL을 설정해야 합니다.
  • 트래픽 패턴: 반복적인 요청이 많은 API에 캐싱을 적용하면 효과적입니다.

1.4 POST 메소드 캐싱

  • API Gateway는 GET 메소드뿐만 아니라 POST 메소드에 대해서도 응답을 캐싱할 수 있습니다.
  • POST 메소드 캐싱은 다음과 같은 특징을 가집니다:
    • 요청 본문 기반 캐싱: API Gateway는 POST 요청의 본문을 기반으로 캐시 키를 생성합니다.
    • 설정 방법: API 스테이지 설정에서 POST 메소드에 대한 캐싱을 명시적으로 활성화해야 합니다.
    • 유용한 시나리오: 동일한 입력에 대해 반복적으로 같은 결과를 반환하는 POST 요청에 유용합니다.
    • 주의사항: POST 요청의 본문이 매우 큰 경우 캐시 키 생성에 영향을 줄 수 있으므로 주의가 필요합니다.

2 API Gateway 캐시 무효화

  • 캐시된 데이터가 최신 상태를 유지하지 못하는 상황이 발생할 수 있습니다.
  • 이를 위해 API Gateway는 캐시 무효화 기능을 제공합니다.

2.1 캐시 무효화 방법

  • 전체 캐시 플러시
    • API Gateway 콘솔, AWS CLI, 또는 SDK를 사용하여 전체 캐시를 즉시 무효화할 수 있습니다.
    • 이 방법은 모든 캐시된 항목을 한 번에 제거하므로 주의해서 사용해야 합니다.
  • 클라이언트 요청을 통한 무효화
    • 클라이언트는 Cache-Control: max-age=0 헤더를 사용하여 특정 요청에 대한 캐시를 무효화할 수 있습니다.
    • 이 기능을 사용하려면 적절한 IAM 권한이 필요합니다.
  • 개별 캐시 항목 무효화
    • API Gateway는 개별 캐시 항목을 무효화하는 직접적인 방법을 제공하지 않습니다.
    • 하지만 캐시 키를 조작하거나 요청 파라미터를 변경하여 간접적으로 특정 캐시 항목을 무효화할 수 있습니다.

2.2 캐시 무효화 정책

  • InvalidateCache 정책
    • 이 정책을 설정하거나 콘솔에서 '권한 부여 확인 필요' 옵션을 선택하지 않으면, 모든 클라이언트가 API 캐시를 무효화할 수 있습니다.
    • 보안을 위해 이 정책을 신중하게 관리해야 합니다.
  • 보안 고려사항
    • 무분별한 캐시 무효화를 방지하기 위해 적절한 권한 설정이 중요합니다.
    • 캐시 무효화 권한을 특정 IAM 사용자나 역할로 제한하는 것이 좋습니다.

3 결론

  • API Gateway의 캐싱 기능은 API 성능을 최적화하고 백엔드 시스템을 보호하는 강력한 도구입니다.
  • 하지만 캐싱을 효과적으로 사용하기 위해서는 신중한 설계와 관리가 필요합니다.
  • 캐시 무효화 메커니즘을 적절히 활용하면 데이터의 일관성을 유지하면서도 캐싱의 이점을 최대한 활용할 수 있습니다.
  • API 개발자는 이러한 기능을 잘 이해하고 활용하여 더 효율적이고 안정적인 API를 구축할 수 있을 것입니다.