DevOps 및 CI/CD를 사용하여 API 게시

적용 대상: 모든 API Management 계층

DevOps CI(연속 통합) 및 CD(연속 배포) 기술 채택은 엔터프라이즈에서 API의 전략적 가치와 API 개발의 중요한 측면이 되었습니다. 이 문서에서는 API 관리를 위해 DevOps 원칙을 채택하는 데 필요한 의사 결정 사항에 대해 설명합니다.

API DevOps는 세 부분으로 구성됩니다.

API DevOps 흐름을 보여 주는 다이어그램

API DevOps 파이프라인의 각 부분은 아래에서 설명합니다.

API 정의

API 개발자는 API에 적용할 사양, 설정(로깅, 진단, 백 엔드 설정 등) 및 정책을 제공하여 API 정의를 작성합니다. API 정의는 Azure API 관리 서비스에서 API를 프로비전하는 데 필요한 정보를 제공합니다. 사양은 표준 기반 API 사양(WSDL, OpenAPI 또는 GraphQL)을 기반으로 하거나, ARM(Azure Resource Manager) API(예: API 및 작업을 기술하는 ARM 템플릿)를 사용하여 정의할 수 있습니다. API 정의는 시간 경과에 따라 변경되며 “원본 코드”로 간주되어야 합니다. API 정의가 원본 코드 제어 하에 저장되고 채택 전 적절하게 검토되었는지 확인합니다.

API 정의를 생성하는 데 도움이 되는 몇 가지 도구가 있습니다.

  • Azure APIOps 도구 키트git 원본 코드 제어 시스템(예: GitHub 또는 Azure Repos)를 기반으로 빌드된 워크플로를 제공합니다. extractor를 사용하여 게시자로 대상 API Management 서비스에 적용된 API 정의를 생성합니다. APIOps는 현재 REST 및 GraphQL API를 지원합니다.
  • dotnet-apim 도구는 올바른 형식의 YAML 정의를 이후 배포를 위해 ARM 템플릿으로 변환합니다. 이 도구는 REST API에 집중되어 있습니다
  • Terraform은 Azure에서 리소스를 구성하는 Azure Resource Manager 대안입니다. ARM 템플릿이 생성되는 것과 동일한 방식으로 API를 구현하도록 Terraform 구성(정책과 함께)을 만들 수 있습니다.

또한 Visual Studio Code와 같은 편집기를 위한 IDE 기반 도구를 사용하여 API를 정의하는 데 필요한 아티팩트를 생성할 수 있습니다. 예를 들어 Visual Studio Code Marketplace에는 OpenAPI 사양 파일 편집을 위해 30개 이상의 플러그 인이 있습니다. 또한 코드 생성기를 사용하여 아티팩트를 만들 수도 있습니다. CADL 언어를 사용하면 상위 수준의 구성 요소를 쉽게 만든 다음, OpenAPI와 같은 표준 API 정의 형식으로 컴파일할 수 있습니다.

API 승인

API 정의가 승인된 다음 개발자가 검토 및 승인을 위해 API 정의를 제출합니다. git 기반 원본 코드 제어 시스템(예: GitHub 또는 Azure Repos)을 사용하는 경우 끌어오기 요청을 통해 제출을 수행할 수 있습니다. 끌어오기 요청은 API 정의에 제안된 변경 내용의 순서를 다른 사람에게 알려줍니다. 승인 게이트가 확인된 다음, 승인자가 끌어오기 요청을 기본 리포지토리로 병합하여 API 정의가 프로덕션에 배포될 수 있음을 나타냅니다. 끌어오기 요청 프로세스를 통해 개발자는 승인 프로세스 중 확인되는 문제를 해결할 수 있습니다.

GitHub 및 Azure Repos 모두 끌어오기 요청이 제출될 때 실행되는 승인 파이프라인을 구성할 수 있습니다. 다음과 같이 도구를 실행하도록 승인 파이프라인을 구성할 수 있습니다.

  • 정의가 조직에 필요한 API 표준을 충족하는지 확인하기 위한 Spectral과 같은 API 사양 Linter
  • openapi-diff와 같은 도구를 사용하는 호환성이 손상되는 변경 감지
  • 보안 감사 및 평가 도구. 보안 검사를 위해 OWASP는 도구 목록을 유지 관리합니다.
  • 자동화된 API 테스트 프레임워크.

참고 항목

Azure API는 자체 API 가이드라인의 시작점으로 사용할 수 있는 엄격한 가이드라인 집합을 준수해야 합니다. 여기에는 가이드라인 적용을 위한 Spectral 구성이 있습니다.

자동화된 도구가 실행된 다음, 사람의 눈으로 API 정의를 검토합니다. 이러한 도구로 모든 문제가 해결되지는 않습니다. 보안, 개인 정보 보호 및 일관성 가이드라인에 대한 준수를 포함하여 API 정의가 API에 대한 조직 기준을 충족하는지 실제 사람이 검토해야 합니다.

API 게시

API 정의는 릴리스 파이프라인을 통해 API Management 서비스에 게시됩니다. API 정의 게시에 사용되는 도구는 API 정의를 생성하는 데 사용되는 도구에 따라 달라집니다.

  • Azure APIOps 도구 키트를 사용할 경우 이 도구 키트에는 API 정의를 대상 서비스에 작성하는 게시자가 포함됩니다.
  • dotnet-apim을 사용하는 경우 API 정의가 ARM 템플릿으로 표시됩니다. Azure PipelinesGitHub Actions에서 ARM 템플릿을 배포하는 데 사용할 수 있는 작업이 있습니다.
  • Terraform을 사용하는 경우 CLI 도구가 서비스에 API 정의를 배포합니다. Azure PipelinesGitHub Actions에 사용할 수 있는 작업이 있습니다.

다른 원본 코드 제어 및 CI/CD 시스템을 사용할 수 있나요?

예. 설명된 프로세스는 모든 원본 코드 제어 시스템에서 작동합니다. APIOps의 경우에는 원본 코드 제어가 git을 기반으로 해야 합니다. 마찬가지로 체크 인으로 트리거할 수 있고 Azure와 통신하는 명령줄 도구를 실행할 수 있는 한 모든 CI/CD 플랫폼을 사용할 수 있습니다.

모범 사례

API를 게시하기 위한 DevOps 파이프라인 설정에는 업계 표준이 없으며, 언급한 어떤 도구도 모든 상황에서 작동하지 않습니다. 그러나 대부분의 상황은 다음 도구 및 서비스 조합을 사용하여 해결할 수 있습니다.

Azure는 고객 배포에서 가장 큰 성공을 거두었으며 다음과 같은 권장 사항을 제공합니다.

  • 원본 코드 제어 시스템을 위해 GitHub 또는 Azure Repos를 설정합니다. 이 선택에 따라 파이프라인 실행기 선택도 결정됩니다. GitHub는 Azure Pipelines 또는 GitHub Actions를 사용할 수 있고 Azure Repos는 Azure Pipelines를 사용해야 합니다.
  • 개발자가 API 서비스와 함께 API 정의를 개발할 수 있도록 각 API 개발자에 대해 Azure API Management 서비스를 설정합니다. 서비스를 만들 때 소비 또는 개발자 SKU를 사용합니다.
  • 정책 조각을 사용하여 개발자가 각 API에 대해 작성해야 하는 새 정책을 줄입니다.
  • 명명된 값백 엔드를 사용하여 정책이 일반적이고 모든 API Management 인스턴스를 적용할 수 있는지 확인합니다.
  • Azure APIOps 도구 키트를 사용하여 개발자 서비스에서 작동하는 API 정의를 추출합니다.
  • 각 끌어오기 요청에서 실행되는 API 승인 프로세스를 설정합니다. API 승인 프로세스는 호환성이 손상되는 변경 감지, 린팅 및 자동화된 API 테스트를 포함합니다.
  • Azure APIOps 도구 키트 게시자를 사용하여 프로덕션 API Management 서비스에 API를 게시합니다.

APIOps와 함께 CI/CD 배포 파이프라인을 구성하고 실행하는 방법에 대한 자세한 내용은 Azure 아키텍처 센터에서 APIOps를 사용한 자동화된 API 배포를 검토하세요.

참조