API 배포에서 불확실성을 다루는 방법

Zhihuang Lin

Zhihuang Lin

July 22, 2024

Technology

API 배포 과정에서 다양한 불확실성이 발생할 수 있습니다. 엄격한 테스트와 여러 예방 조치에도 불구하고, 프로덕션 환경에서는 네트워크 지연, 서버 하드웨어 또는 소프트웨어 장애, 구성 오류, 코드 버전 충돌 등 예기치 못한 문제가 발생할 수 있습니다.

이러한 잠재적 위험을 효과적으로 대처하고, 최소한의 부정적 영향을 미치며 원활한 배포를 보장하기 위해, 우리는 일련의 예방 및 대응 조치를 구현해야 합니다. 이 글에서는 API7 Enterprise가 API 배포 과정에서 중요한 역할을 할 수 있는 방법에 대해 논의합니다.

배포 환경을 어떻게 관리하고 구분할까요?

  1. 게이트웨이 그룹: API 배포에서 불확실성을 제거하는 일반적인 접근 방식은 불변성 원칙입니다. 이는 서비스 환경의 구성 및 환경 변수가 임의로 변경될 수 없음을 의미합니다. API7 Enterprise에서는 사용자가 여러 게이트웨이 그룹을 생성할 수 있으며, 각 그룹은 실제 서비스 배포 환경을 나타냅니다. 이 환경에는 여러 게이트웨이 인스턴스가 트래픽을 처리할 수 있습니다.

사용자는 먼저 서비스 템플릿을 생성해야 합니다. 서비스 템플릿은 여러 경로로 구성됩니다. 서비스는 실제 비즈니스 요구에 기반한 추상적인 컬렉션입니다. 예를 들어 주문 관련 서비스가 있습니다. 서비스 내의 경로는 API입니다. 주문 추가, 주문 조회, 주문 삭제 등이 있습니다. 이러한 경로에는 API의 매칭 경로와 게이트웨이에서의 추가 처리 로직이 포함됩니다.

  1. 버전 관리: 서비스 템플릿을 게이트웨이 그룹에 배포하는 것은 기본적으로 API 배포를 수행하는 것입니다. 서비스 템플릿을 게이트웨이 그룹에 배포할 때, 현재 게이트웨이 그룹에 고유한 버전 번호를 지정해야 합니다. 엄격한 버전 관리는 각 배포된 서비스 버전이 고유하고 불변임을 보장합니다. 서비스 버전이 배포되면 수정되어서는 안 됩니다. 따라서 API7 Enterprise는 게시된 서비스에 대한 운영 제한을 적용하여, 게시된 서비스 내에서 경로를 추가하거나 수정하는 것을 방지합니다. 이는 읽기 전용 구성입니다. 변경이 필요한 경우 템플릿에서 변경하고 새 버전을 게시해야 합니다.

  2. 테스트 환경: 서비스를 게이트웨이 그룹에 배포하기 전에 테스트 환경에서 테스트를 수행할 수 있습니다. 사용자는 먼저 생성된 서비스 템플릿을 테스트 게이트웨이 그룹에 배포할 수 있습니다. 여기서 경로 구성, 접근 제어, 속도 제한 등의 기능을 테스트하고 비즈니스 로직이 올바르게 실행되는지 확인할 수 있습니다.

또한, 사용자는 의도적으로 지연 및 오류를 도입하여 fault-injection 플러그인을 사용하여 비정상 조건에서의 API 동작을 테스트할 수 있습니다. 테스트 후, 테스트 환경의 서비스를 프로덕션 환경에 동기화할 수 있으며, 환경을 제외한 모든 구성이 일관되도록 보장합니다.

시스템 운영 오류를 어떻게 처리할까요?

API 배포의 경우, 결정은 전체 팀의 합의가 필요할 수 있지만, 최종적으로는 일부 배포자가 배포를 실행하게 됩니다. 배포를 담당하는 엔지니어는 프로세스의 중요한 부분이 될 수 있습니다. 일반적으로 API 배포는 시스템 아키텍처와 배포 환경에 익숙한 신뢰할 수 있고 경험이 풍부한 엔지니어가 수행해야 하며, 배포 중 문제를 차분하게 처리할 수 있어야 합니다.

  1. IAM 정책: 실제 시스템 운영에서 프로덕션 안정성에 영향을 미치는 작업은 배포에만 국한되지 않습니다. 서비스 활성화/비활성화, 경로 매칭 규칙 조정, 업스트림 서비스 레지스트리 설정 수정 등 각 단계가 잠재적 위험이 될 수 있습니다. API 배포 및 후속 작업의 보안과 제어를 보장하기 위해 세분화된 권한 구성을 구현하는 것이 중요합니다. API7 Enterprise는 IAM 정책을 제공하여 조직이 누가 어떤 리소스에 접근할 수 있는지 정확히 제어할 수 있도록 도와줍니다. 이를 통해 각 사용자의 권한을 최소화하고, 권한이 없는 사용자가 민감한 리소스를 실수로 조작하는 것을 방지합니다.

  2. 감사 로깅: 모든 시스템 작업은 감사 로그에서 확인할 수 있습니다. 이는 작업이 언제, 어디서, 어떻게 수행되었는지를 포함합니다. 시스템에서 오류가 발생하면 특정 실행자, 실행 시간 및 방법을 빠르게 식별할 수 있으며, 문제 추적 및 책임 할당을 위한 강력한 증거를 제공합니다. 이는 오류를 신속히 수정하고 추가 확산을 방지하는 데 도움이 될 뿐만 아니라, 조직 내 효과적인 감독 메커니즘을 구축하여 각 구성원이 자신의 운영 권한과 책임을 더욱 신중하게 다루도록 장려합니다.

  3. 버전 롤백: 버전 롤백은 API 배포에서 필수적인 부분입니다. 새로 배포된 버전에 문제가 발생할 경우, 이전의 안정적인 버전으로 빠르고 안전하게 되돌릴 수 있도록 보장합니다. API7 Enterprise는 버전 롤백 기능을 제공합니다. 사용자는 되돌리고자 하는 이전 버전을 선택하고 롤백 작업을 실행하기만 하면 됩니다. 시스템은 자동으로 게이트웨이 그룹의 서비스 버전을 지정된 이전 버전으로 교체합니다. 이 과정에서 모든 구성 및 환경 변수는 이전 버전의 상태로 복원되며, 서비스 환경의 안정성과 일관성을 보장합니다.

배포 후 API 요청이 갑자기 급증하면 어떻게 할까요?

  1. 플러그인 메커니즘: API7 Enterprise는 다양한 플러그인을 제공하며, 이를 통해 API 요청의 갑자기 급증을 효과적으로 예방하고 대응할 수 있습니다. 예를 들어, 속도 제한 플러그인(limit-reqlimit-count)은 요청 속도와 수를 제어하여 서비스 과부하를 방지하고, 서킷 브레이커 플러그인(api-breaker)은 백엔드 서비스가 실패할 경우 요청을 자동으로 차단하여 시스템 안정성을 보호하며, 캐싱 플러그인(proxy-cache)은 자주 접근하는 데이터를 캐시하여 백엔드 서비스의 부담을 줄입니다. 특정 비즈니스 요구에 따라 게이트웨이 그룹 또는 서비스 경로 수준에서 플러그인을 구성할 수 있으며, 플러그인은 요청 트래픽이 통과할 때 적용됩니다.

  2. 로드 밸런싱: API7 Enterprise는 게이트웨이 인스턴스 및 업스트림 노드에 대한 로드 밸런싱을 지원합니다. 로드 밸런싱은 대량의 네트워크 요청을 여러 서버 또는 서버 클러스터에 분산시켜 부하를 균형 있게 분배하고, 전체 시스템 처리 능력을 향상시키며, 내결함성을 강화합니다. API7 Enterprise Edition은 다양한 로드 밸런싱 전략을 지원하여, 높은 동시성 시나리오에서도 시스템이 안정적으로 운영되도록 보장합니다.

  3. 상태 점검: 상태 점검은 업스트림 서비스 노드의 정상 상태를 보장하는 데 필수적입니다. 업스트림 노드의 건강 상태를 정기적으로 감지함으로써, 게이트웨이는 프로브가 이상을 감지할 경우 해당 노드를 비정상으로 표시하고 요청 전송을 중단합니다. 동시에 시스템은 구성된 로드 밸런싱 전략에 따라 트래픽을 다른 건강한 노드로 리디렉션하여 서비스 중단을 방지합니다.

  4. 모니터링알림: API7 Enterprise는 포괄적인 모니터링 및 알림 기능을 제공합니다. API 성능 지표 및 주요 데이터를 실시간으로 모니터링함으로써, 요청 속도, 응답 시간, 오류율 등을 빠르게 파악하고 잠재적 문제를 신속히 식별할 수 있습니다. API 성능 이상 또는 사전 설정된 임계값에 도달하면, 시스템은 이메일 또는 Webhook을 통해 알림을 트리거하여 관련 담당자가 신속히 대응하고 처리할 수 있도록 합니다. 이 실시간 모니터링 및 알림 메커니즘은 응답 시간을 단축하고 시스템 안정성과 가용성을 향상시키는 데 도움이 됩니다.

수동 배포에서 불확실성과 오류를 최소화하려면 어떻게 해야 할까요?

  1. 오픈 API: API7 Enterprise는 완전한 오픈 API 및 관련 API 문서를 제공합니다. 각 API 요청 매개변수에 대한 설명, 요청 예제, API와 관련된 IAM 권한, 다양한 응답 상태 코드에 해당하는 오류 정보 등을 포함하여, API를 빠르게 이해하고 자동화된 워크플로우에 통합할 수 있도록 도와줍니다.

  2. 선언적 구성 도구: GitOps를 사용하는 경우, 코드 기반의 선언적 API 구성 접근 방식을 사용할 수 있습니다. API7.ai에서 제공하는 선언적 구성 도구 ADC (APISIX Declarative CLI)를 사용하여 CI/CD 파이프라인에 원활하게 통합된 GitOps 기능을 구현할 수 있습니다.

요약

API7 Enterprise는 강력한 다중 게이트웨이 그룹 관리, 버전 관리, 테스트 환경 검증, 완전한 권한 관리 및 버전 롤백 메커니즘을 통해 API 배포 과정에서의 불확실성에 대한 포괄적이고 효과적인 솔루션을 제공합니다. 이를 통해 기업이 효율적이고 안정적이며 안전한 API 서비스 배포 및 관리를 달성할 수 있도록 지원합니다.

Tags: