다음을 통해 공유


클라우드 규모 분석 관리

오늘날 DevOps는 사람들이 생각하고 일하는 방식에 관한 문화를 전환하여 개인과 조직이 지속 가능한 업무 관행을 개발하고 유지하도록 지원함으로써 기업이 가치를 실현하는 속도를 가속화했습니다. DevOps는 개발 및 운영을 결합하며 CI(연속 통합) 및 CD(지속적인 업데이트) 사례를 지원하는 소프트웨어 엔지니어링 도구와 종종 관련되어 있습니다. 이러한 도구 및 사례에는 소스 코드 관리자(예: Git, Apache Subversion 또는 Team Foundation 버전 제어) 및 자동 빌드 및 배달 관리자(예: Azure Pipelines 또는 GitHub Actions)가 포함됩니다.

가시성과 결합된 DevOps는 민첩하고 확장 가능한 플랫폼을 제공하는 데 핵심입니다. DevOps는 팀에게 소스 제어, CI/CD 파이프라인, 코드로서의 인프라, 워크플로 및 자동화를 구현할 수 있는 기능을 제공합니다. 가시성을 통해 비즈니스 소유자, DevOps 엔지니어, 데이터 설계자, 데이터 엔지니어 및 사이트 안정성 엔지니어가 자동화된 방식으로 문제를 감지, 예측, 방지 및 해결하고 프로덕션 분석 및 AI를 중단하는 가동 중지 시간을 방지할 수 있습니다.

원본 제어

원본 제어를 통해 코드와 구성이 유지되고 변경 내용이 추적 및 버전 관리됩니다. 대부분의 원본 제어 시스템에는 코드 리포지토리의 여러 분기에서 검토하고 작업하기 위한 기본 제공 프로세스도 있습니다. 현재 가장 인기 있는 원본 제어 유형은 Git으로, 개인이 오프라인으로 작업하고 중앙 리포지토리와 동기화하도록 허용하는 분산 버전 제어 시스템입니다. Git 공급업체는 일반적으로 분기를 사용하고 끌어오기 요청 지침을 따라 변경 및 검토 흐름을 지원합니다.

분기는 동시에 발생하는 다른 작업에 영향을 주지 않고 변경 내용 또는 기능 개발을 격리합니다. 분기 사용은 기능을 개발하고, 버그를 수정하고, 새 아이디어를 안전하게 실험하기 위해 촉진되어야 합니다. 끌어오기 요청은 한 분기의 변경 내용을 기본 분기로 병합하며 제어된 검토 프로세스를 지원합니다. 보안을 위해 주 분기는 끌어오기 요청을 사용하여 코드 검토를 확인해야 합니다.

중요

클라우드 규모 분석 리포지토리를 위한 다음 지침을 따릅니다.

  • 제어된 검토 프로세스를 보장하기 위해 분기 및 끌어오기 요청을 적용하여 리포지토리의 주 분기를 보호합니다.
  • 원본 제어에 Azure DevOps 또는 GitHub 리포지토리를 사용하여 소스 코드의 변경 내용을 추적하고 여러 팀 구성원이 동시에 코드를 개발할 수 있도록 해야 합니다.
  • 애플리케이션 코드 및 인프라 구성을 리포지토리에 체크 인해야 합니다.

CI/CD 파이프라인

CI를 통해 팀은 소스 코드를 자동으로 테스트하고 빌드할 수 있으며, CD에서 높은 코드 품질을 보장하기 위해 빠른 반복 및 피드백 루프를 사용할 수 있습니다. 파이프라인은 변경 내용의 CI(소프트웨어 코드 또는 인프라 코드) 및 패키지/컴파일된 변경 내용의 CD를 구성하는 방법입니다. 이를 빌드 및 릴리스라고도 합니다. CD는 하나 이상의 환경에 애플리케이션을 자동으로 배포하는 방법을 설명합니다. CD는 일반적으로 CI 프로세스를 따르고 통합 테스트를 사용하여 전체 애플리케이션의 유효성을 검사합니다.

파이프라인은 다양한 작업이 포함된 여러 단계를 포함할 수 있으며, 규정 준수 및 유효성 검사를 보장하기 위해 간단하거나 복잡한 승인 흐름을 가질 수 있습니다. 기본 설정에 따라 다양한 자동 트리거를 사용하여 파이프라인을 구성할 수도 있습니다. 엔터프라이즈 규모 및 AI 배포의 경우 프로덕션 단계에는 항상 사람의 사전 승인이 있어야 하며, 이는 운영 모델에 기본 제공됩니다. CI/CD 파이프라인은 GitHub Actions 또는 Azure Pipelines를 사용하여 빌드해야 하며 자동화된 트리거여야 합니다.

코드 제공 인프라(Infrastructure as code)

IaC의 코드라는 용어는 개발자 배경이 없는 IT 직원에게 문제를 제기하는 경우가 많지만, IaC는 일반적인 소프트웨어 개발자가 수행하는 방식으로 코드를 작성하지 않습니다. 그러나 예측 가능한 형식의 인프라를 제공하기 위해 소프트웨어 개발 프로세스와 동일한 도구와 원칙을 많이 채택합니다.

IaC는 전체 변경 제어, 감사 기록, 테스트, 유효성 검사 및 승인 프로세스를 사용하여 DevOps 파이프라인의 일부로 인프라를 프로비전, 구성 및 관리할 수 있도록 지원하여 보안 및 규정 준수를 손상시키지 않으면서 태스크가 프로젝트에 대한 적절한 역할에 위임되도록 합니다.

IaC에 대한 두 가지 접근 방식은 선언적이고 명령적입니다.

  • 선언적은 인프라의 원하는 상태를 지정하고 오케스트레이션 엔진이 원하는 상태를 달성하는 데 필요한 작업을 실행하도록 하는 것을 의미합니다. Azure에서 이 작업은 Azure Resource Manager 템플릿을 사용하여 수행됩니다. Terraform과 같은 타사 추상화 계층도 이 접근 방식에 사용할 수 있습니다.

  • 명령적 접근 방식은 정의된 순서대로 특정 명령을 실행하는 것을 의미합니다. Azure의 경우 명령줄 인터페이스 또는 PowerShell을 사용하여 수행할 수 있지만 통합 솔루션이 필요한 경우 네이티브 프로그래밍 언어 소프트웨어 개발자 키트(예: .NET, Python 및 Java)도 사용할 수 있습니다.

Azure Resource Manager 템플릿에서 핵심 프로비저닝은 리소스 섹션에 있으며 개별 리소스의 구성은 속성 섹션에 정의됩니다. Azure Data Lake Storage Gen2의 경우 구성은 다음과 같습니다.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.MachineLearningServices/workspaces/datastores",
            "name": "[concat(parameters('workspaceName'), '/', parameters('datastoreName'))]",
            "apiVersion": "2020-05-01-preview",
            "location": "[parameters('location')]",
            "properties": {
                "DataStoreType": "adls-gen2",
                "SkipValidation": "[parameters('skipValidation')]",
                "ClientId": "[parameters('clientId')]",
                "ClientSecret": "[parameters('clientSecret')]",
                "FileSystem": "[parameters('fileSystem')]",
                "AccountName": "[parameters('accountName')]",
                "TenantId": "[parameters('tenantId')]",
                "ResourceUrl": "[parameters('resourceUrl')]",
                "AuthorityUrl": "[parameters('authorityUrl')]"
            }
        }
    ]
}

중요

데이터 관리 랜딩 존, 데이터 랜딩 존 또는 데이터 애플리케이션(데이터 제품 생성)과 같은 클라우드 규모 분석의 모든 계층은 Azure Resource Manager 또는 Terraform과 같은 선언적 언어로 정의되고, 리포지토리에 체크 인되며, CI/CD 파이프라인을 통해 배포되어야 합니다. 이를 통해 팀은 다양한 아키텍처 수준을 민첩한 방식으로 자동화할 수 있도록 지원하면서 Azure 범위의 인프라 및 구성에 대한 변경 내용을 추적하고 버전화할 수 있습니다. 이 지침은 팀이 Git 리포지토리를 사용하여 특정 Azure 범위의 상태를 항상 파악하도록 합니다.

워크플로 및 자동화

팀은 개발된 코드가 오류 없이 프로덕션에 준비되도록 여러 단계에서 CI/CD 파이프라인을 사용해야 합니다. 몇 가지 모범 사례는 개발 환경, 테스트 환경 및 프로덕션 환경을 갖는 것입니다. 또한 이러한 단계는 각 환경에 대해 별도의 서비스를 사용하여 Azure에 반영되어야 합니다.

플랫폼 팀은 조직 내에서 빠르게 확장하고 IaC에 익숙하지 않은 팀을 위해 배포를 간소화하기 위해 배포 템플릿을 제공하고 유지 관리하는 역할을 담당합니다. 이러한 템플릿은 시나리오 내에서 새 아티팩트를 위한 기준이 되며, 회사 내에서 모범 사례 및 일반적인 표준을 나타내기 위해 시간이 지남에 따라 유지 관리되어야 합니다.

테스트 및 프로덕션을 위한 배포는 일반적인 모범 사례(예: Azure Resource Manager 템플릿)를 적용하기 위해 상승된 권한이 있는 CI/CD 파이프라인 및 서비스 연결을 통해서만 관리되어야 합니다.

주의

데이터 애플리케이션 팀은 테스트 및 프로덕션 환경에 대한 읽기 권한만 가져야 하며, 이러한 환경에 대한 배포는 상승된 권한이 있는 CI/CD 파이프라인 및 서비스 연결을 통해서만 실행되어야 합니다. 프로덕션의 경로를 가속화하려면 데이터 애플리케이션 팀이 개발 환경에 대한 쓰기 액세스 권한을 가져야 합니다.

다음 단계

플랫폼 자동화