APIOps는 GitOps 및 DevOps 의 개념을 API 배포에 적용하는 방법론입니다. DevOps와 마찬가지로 APIOps 를 사용하면 팀 구성원이 반복적이고 자동화된 방식으로 쉽게 변경하고 배포할 수 있습니다. 이 아키텍처는 APIOps를 사용하여 전체 API 수명 주기 및 API 품질을 개선하는 방법을 보여 줍니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
API 연산자는 추출기 파이프라인을 실행하여 Git 리포지토리를 API Management 인스턴스와 동기화하고 필요한 형식의 API Management 개체로 Git 리포지토리를 채웁다.
API Management 인스턴스에서 API 변경이 감지되면 운영자가 검토할 PR(끌어오기 요청)이 만들어집니다. 운영자는 변경 내용을 Git 리포지토리에 병합합니다.
API 개발자는 선택한 OpenAPI 사양 또는 도구를 사용하여 Git 리포지토리를 복제하고, 분기를 만들고, API 정의를 만듭니다.
개발자가 리포지토리에 변경 내용을 푸시하면 검토를 위해 PR이 만들어집니다.
PR은 필요한 제어 수준에 따라 자동으로 승인되거나 검토될 수 있습니다.
변경 내용이 승인되고 병합되면 게시 파이프라인은 API Management 인스턴스에 최신 변경 내용을 배포합니다.
API 운영자는 API Management 정책, 진단, 제품 및 기타 관련 개체를 만들고 수정한 다음 변경 사항을 커밋합니다.
변경 사항을 검토하고 승인하면 병합됩니다.
변경 사항을 병합하면 게시 파이프라인은 API 정의 프로세스를 사용하여 변경 사항을 배포합니다.
구성 요소
Azure API Management는 백 엔드 서비스를 위한 일관된 최신 API 게이트웨이를 만듭니다. 이 플랫폼은 API 호출을 백 엔드로 라우팅하는 것 외에도 자격 증명을 확인하고, 사용 할당량을 적용하고, 메타데이터를 기록합니다.
Azure DevOps는 계획 및 프로젝트 관리, 코드 관리, 연속 빌드 및 릴리스를 포함하여 개발 수명 주기를 엔드투엔드 방식으로 관리하는 서비스입니다.
Azure Pipelines는 CI(연속 통합) 및 CD(지속적인 업데이트)를 사용하여 코드를 테스트 및 빌드하고 모든 대상에 전달할 수 있습니다.
Azure Repos는 표준 Git을 포함하여 코드를 관리할 수 있는 버전 제어 도구 세트입니다.
대안
이 솔루션은 Azure Repos를 사용하여 Git 기능을 제공하고 Azure Pipelines는 파이프라인을 제공합니다. 유사한 모든 기술을 사용할 수 있습니다.
시나리오 정보
APIOps는 버전 제어를 사용하여 API를 관리하고 API, 정책 및 작업에 대한 변경 내용에 대한 감사 내역을 만듭니다.
APIOps 방법론을 사용하는 API 개발자는 API를 더 일찍 그리고 더 자주 검토하고, API 표준의 편차를 더 빠르게 포착하고 해결하여 사양 및 API 품질을 개선합니다. APIOps 접근 방식을 사용하여 빌드하고 배포하는 API가 많을수록 API 간의 일관성이 향상됩니다.
이 APIOps 아키텍처는 Azure API Management를 API 관리 플랫폼으로 사용합니다. Azure DevOps는 API 관리를 구성합니다. Azure Repos 는 Git 기능을 제공하고 Azure Pipelines는 CI/CD 파이프라인을 만듭니다.
잠재적인 사용 사례
- API를 개발하고 관리하는 모든 조직
- 고도로 규제되는 산업: 보험, 은행, 금융, 정부
고려 사항
이러한 고려 사항은 워크로드의 품질 개선에 사용할 수 있는 일련의 기본 지침인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.
보안
우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.
이 솔루션은 몇 가지 보안 관련 이점을 제공합니다. 개별 개발자와 운영자는 변경 사항 또는 업데이트를 적용하기 위해 API Management 인스턴스에 직접 액세스하지 않습니다. 대신 사용자가 Git 리포지토리에 변경 사항을 밀어넣으면 추출기 및 게시 파이프라인이 이를 읽고 API Management 인스턴스에 적용합니다. 이 접근 방식은 팀에 API Management 서비스 인스턴스에 대한 쓰기 권한을 부여하지 않으면서 최소 권한의 보안 모범 사례를 따릅니다. 진단 또는 문제 해결 시나리오에서는 사례별로 제한된 시간 동안 상승된 권한을 부여할 수 있습니다.
API Management 인스턴스가 보안을 위한 모범 사례를 사용하는지 확인하기 위해 타사 도구 및 장치 테스트로 이 솔루션을 확장하여 API 모범 사례를 적용할 수 있습니다. API 또는 정책의 제안된 변경 사항이 표준을 위반하는 경우 팀은 PR 검토를 통해 조기 피드백을 제공할 수 있습니다.
리포지토리 권한을 설정하는 작업과 별도로 API Management 인스턴스와 동기화되는 Git 리포지토리에서 다음 보안 조치를 구현하는 것이 좋습니다.
- PR(끌어오기 요청) 검토: 분기를 사용하고 API Management 인스턴스의 상태를 나타내는 분기가 변경 내용을 직접 밀어넣지 않도록 보호합니다. 네 개의 눈 원칙을 적용하기 위해 PR 검토자가 한 명 이상 있어야 합니다.
- 변경할 수 없는 기록: 기존 변경 사항 위에 새 커밋만 허용합니다. 변경할 수 없는 기록은 감사 용도에 특히 중요합니다.
- 다단계 인증: 사용자가 2단계 인증을 활성화하도록 요구합니다.
- 서명된 커밋: 사후에 변경할 수 없는 서명된 커밋만 허용합니다.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.
Azure 가격 계산기를 사용하여 비용을 예측합니다.
API Management는 소비, 개발자, 기본, 표준 및 프리미엄 계층을 제공합니다.
GitHub는 무료 서비스를 제공합니다. 그러나 코드 소유자 또는 필수 검토자와 같은 고급 보안 관련 기능을 사용하려면 Team 플랜이 필요합니다. 자세한 내용은 GitHub 가격 책정을 참조하세요.
운영 우수성
운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 운영 우수성 핵심 요소 개요를 참조하세요.
APIOps는 API를 개발하고 배포하기 위해 DevOps 생산성을 높일 수 있습니다. 가장 유용한 기능 중 하나는 Git 작업을 사용하여 예기치 않게 동작하는 변경 사항을 빠르게 롤백하는 기능입니다. 커밋 그래프에는 계속 모든 커밋이 있으므로 사후 분석에 참조할 수 있습니다.
API 운영자는 동일한 API 집합에 대해 여러 환경을 관리하는 경우가 많습니다. 일반적으로 여러 API 단계를 각기 다른 API Management 인스턴스 또는 공유 API Management 인스턴스에 배포합니다. 단일 진실 공급원인 Git 리포지토리는 현재 클러스터에 배포된 애플리케이션 버전을 보여 줍니다.
누군가 Git 리포지토리에서 PR을 만들면 API 운영자는 검토할 새 코드가 있다는 것을 알게 됩니다. 예를 들어 개발자가 OpenAPI 사양으로 API 구현을 빌드할 때 이 새 코드를 리포지토리에 추가합니다. 운영자는 PR을 검토하고 검토용으로 제출된 API가 모범 사례 및 표준을 충족하는지 확인할 수 있습니다.
성능 효율성
성능 효율성은 사용자가 배치된 요구 사항을 효율적인 방식으로 충족하기 위해 워크로드의 크기를 조정할 수 있는 기능입니다. 자세한 내용은 성능 효율성 핵심 요소 개요를 참조하세요.
APIOps에는 많은 이점이 있지만 API Management 환경이 커지면서 관리가 더욱 복잡해집니다. 이 솔루션은 다음과 같은 과제를 해결하는 데 도움이 됩니다.
- 모든 환경 및 API Management 인스턴스에 대한 개요를 계속 확인.
- API 및 정책의 주요 변경 사항 추적.
- 배포된 모든 변경 사항의 감사 내역 만들기.
시나리오 배포
이 솔루션을 배포하려면 다음 단계를 수행합니다.
포털에서 API를 개발하거나 선택한 도구를 사용하여 OpenAPI 사양을 변경합니다.
포털에서 변경한 경우 추출기를 실행하여 API Management의 모든 API 및 기타 관련 정책, 작업 및 구성을 자동으로 추출할 수 있습니다. 이 정보를 Git 리포지토리에 동기화할 수도 있습니다.
필요에 따라 Azure DevOps CLI를 사용하여 새 끌어오기 요청을 만듭니다.
추출기 워크플로에서는 다음 단계를 수행해야 합니다.
포털의 변경 사항을 API Management 인스턴스로 다운로드하는 파이프라인을 실행합니다.
분기의 이름, APIM 아티팩트 리포지토리, API Management 인스턴스 및 리소스 그룹을 입력합니다.
이 시나리오에서 포털의 변경 사항을 API Management 인스턴스로 다운로드하는 파이프라인에는 추출기 빌드, 포털에서 아티팩트 만들기 및 템플릿 분기 만들기 단계가 있습니다.
추출기 빌드
이 단계에서는 추출기 코드를 빌드합니다.
포털에서 아티팩트 만들기
이 단계에서는 추출기를 실행하고 다음 스크린샷과 같이 Git 리포지토리 구조와 유사한 아티팩트를 만듭니다.
검토자는 끌어오기 요청으로 이동하여 업데이트된 끌어오기 요청을 확인할 수 있습니다. 자동 승인을 구성하여 이 단계를 자동화할 수도 있습니다.
PR을 승인하면 API Management에서 포털로 게시하는 다른 파이프라인을 트리거합니다. 이 예제에서는 빌드 작성자, 빌드 종결자 및 APIM 인스턴스 게시 단계가 있습니다.
- 빌드 작성자 단계에서는 새 API를 만듭니다.
- 빌드 종결자 단계에서는 모든 삭제를 처리합니다.
- APIM 인스턴스 게시 단계에서는 변경 사항을 API Management 인스턴스에 게시합니다.
이 파이프라인이 실행되면 API Management 인스턴스에 변경 사항을 게시합니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- Rishabh Saha | 주요 솔루션 설계자
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
- Azure Pipelines
- Azure API Management용 APIOps
- Azure Resource Manager 템플릿을 사용하는 API Management에 대한 CI/CD
- GitOps 개요
- GitOps 직조
- 자습서: Azure Arc 지원 Kubernetes 클러스터에서 GitOps를 사용하여 구성 배포