Share via


자동화 구현을 위한 권장 사항

이 Well-Architected Framework 운영 우수성 검사 목록 권장 사항에 적용됩니다.

OE:09 인간의 개입에 대한 통찰력과 적응성을 활용하지 않고, 매우 절차적이며, 자동화 투자 수익을 산출하는 유통 기한이 있는 모든 작업을 자동화합니다. 가능하면 자동화 및 사용자 지정 구현을 위해 기성 소프트웨어를 선택합니다. 모든 자동화를 워크로드 구성 요소와 동일하게 처리하고 Well-Architected Framework 핵심 요소를 디자인 및 구현에 적용합니다.

이 가이드에서는 워크로드에서 자동화를 채택하기 위한 권장 사항을 설명합니다. 반복적이고 사람의 오류가 발생하기 쉬운 작업을 자동화하여 팀이 효율성을 높이고 표준을 준수하는 데 도움이 될 수 있습니다. 작업을 자동화하여 워크로드를 간소화하고 일관되게 만듭니다. 자동화를 사용하면 운영 및 엔지니어링 팀이 다른 개선 작업에 더 많은 시간을 할애할 수 있으므로 더 효율적으로 작업할 수 있습니다. 자동화는 워크로드 관리의 모든 측면에서 강력한 도구입니다. 자동화를 신중하게 구현하여 organization 역량을 강화합니다.

주요 디자인 전략

워크로드를 개발할 때 관리 부담을 줄이고 사용자 오류를 최소화하기 위해 자동화를 활용할 기회를 찾습니다. 이러한 기회를 평가하고 organization 가져오는 가치를 고려합니다. 자동화에 대한 투자 가치를 최대화하려면 간단하고 절차적이며 유통 기한이 긴 작업의 우선 순위를 지정합니다. 자동화를 적용하는 것은 전부 또는 전혀 없는 전술이 아닙니다. 의사 결정 지점과 같이 사람의 개입이 필요한 작업이 있을 수 있는 작업 스트림이 있습니다. 이러한 작업 스트림은 자동화를 통해 다른 작업을 수행할 수 있습니다.

자동화할 대상 작업

자동화를 통해 가장 많은 이점을 제공하는 작업의 우선 순위를 지정하려면 다음 권장 사항을 고려하세요.

  • 쉬운 승리를 목표로합니다. 매우 절차적이고 사람의 실수에 취약한 작업에 집중합니다. 이러한 작업은 매우 자동화 가능합니다. 명확하게 정의되고, 복잡성을 더하는 변수로부터 자유로워지고, 정상적인 작업의 일부로 수행됩니다. 반대로 변수 현상을 고려하기 위해 복잡한 스크립트를 작성해야 하는 자동화 작업 또는 거의 발생하지 않는 작업의 우선 순위를 지정하지 마세요.

    매우 자동화 가능한 작업의 예로는 서버 다시 부팅, 계정 만들기, 데이터 저장소로 로그 전송 등이 있습니다. 이러한 작업은 일정, 이벤트 또는 모니터링 경고에 대한 응답 또는 외부 요인에 따라 필요에 따라 발생할 수 있습니다.

  • 운영자에게 권한을 부여하고 중소기업을 확보하는 방법을 찾습니다. 불필요한 에스컬레이션에 의존하는 organization 전문가가 있을 수 있습니다. 예를 들어 데이터베이스 관리자는 다중 테넌트 솔루션에 새 고객을 온보딩할 때 새 데이터베이스를 만들도록 정기적으로 요청을 받을 수 있습니다. 지원 센터 팀을 위한 셀프 서비스 포털을 빌드하는 경우 빈 데이터베이스 자체를 안전하게 만들 수 있습니다. 또는 중간 단계로 실행할 스크립트를 만들어 SME가 수행할 요청 및 단계를 자동화할 수 있습니다.

  • 투자 수익률에 집중합니다. 고부가가치 자동화는 최소한의 관리 오버헤드가 필요하며 입증 가능한 수준의 효율성을 추가합니다. 예를 들어 데이터베이스 항목을 자동화하여 매일 1시간씩 운영 팀을 저장할 수 있는 경우 개선해야 할 다른 영역을 찾을 수 있는 시간을 제공합니다.

자동화를 구현할 영역

개발에서 일상적인 관리에 이르기까지 전체 워크로드 수명 주기 전반에 걸쳐 자동화를 채택합니다. 다음 예제 목록을 사용하여 자동화의 이점을 얻을 수 있는 워크로드 수명 주기의 광범위한 영역을 고려할 수 있습니다. 다음을 자동화할 수 있습니다.

  • 파이프라인 정의, 실행 및 관리: Azure DevOps 및 기타 DevOps 도구와 같은 CI/CD(연속 통합 및 지속적인 업데이트) 도구를 사용하여 파이프라인 및 실행 방법을 자동으로 정의합니다. 이러한 도구는 CI/CD 작업 또는 보고서 만들기와 같은 기타 작업을 자동화하는 데 도움이 될 수 있습니다.

  • 배포: Azure Resource Manager 템플릿, Bicep, Terraform 및 Ansible과 같은 도구를 사용하여 워크로드 개발 및 릴리스 프로세스를 자동화합니다. IaC(Infrastructure as Code) 접근 방식을 사용하여 동일한 자동화 플랫폼으로 인프라를 배포하고 업데이트합니다.

  • 테스트: 테스트 프로세스를 자동화하는 데 많은 도구를 사용할 수 있습니다. 이러한 도구는 품질 보증 팀의 상당한 부담을 덜어주고 테스트가 표준화되고 신뢰할 수 있도록 할 수 있습니다.

  • 크기 조정: 플랫폼 제공 기능 및 오케스트레이션 도구와 같은 기타 도구를 사용하여 부하가 증가하거나 감소할 때 인프라의 크기를 자동으로 조정합니다.

  • 모니터링 및 경고: 모니터링 솔루션에서 사용할 수 있는 도구를 사용하여 새로 배포된 리소스를 자동으로 등록하고 문제가 발생할 때 수정을 서두르도록 경고 트리거 작업을 구성합니다.

  • 자가 복구: 모니터링 시스템에서 생성된 경고를 사용하여 작업을 자동화하고 오작동하는 구성 요소 또는 작업을 복구합니다. 자세한 내용은 자기 치유 및 자기 보존에 대한 권장 사항을 참조하세요.

  • 구성 관리: 오케스트레이션 및 정책 도구를 사용하여 모든 리소스가 동일한 구성을 실행하고 규정 준수 요구 사항이 워크로드 전체에 적용되도록 합니다.

  • 기타 관리 작업: 스크립트를 사용하여 데이터베이스 레코드 또는 DNS 레코드 업데이트와 같은 반복적인 작업을 자동화합니다.

  • 승인: 시스템이 미리 정의된 규칙에 따라 자동으로 승인 결정을 내릴 수 있도록 하여 승인 게이트가 있는 워크플로의 효율성을 향상시킵니다. 이 메서드는 표준화된 양식 및 템플릿을 사용하도록 권장하여 프로세스의 효율성을 높입니다. 높은 환경에서 자동 승인은 위험할 수 있습니다. 자동화된 승인을 엄격하게 집중하고 테스트하여 승인을 부여하기 위해 특정 조건이 정의되었는지 확인합니다.

  • 새 사용자 및 신입 직원 온보딩: 데이터베이스 업데이트 및 자격 증명 만들기와 같이 새 애플리케이션 사용자 또는 새 직원 온보딩과 관련된 많은 작업을 자동화할 수 있습니다.

  • 모니터링 및 경고: 가시성 플랫폼이 제공하는 자동화 기능을 활용합니다. 새 디바이스를 자동으로 등록하여 변칙을 모니터링하고 경고합니다.

적절한 자동화 도구 선택

자체 자동화를 사내에서 개발하는 것은 시간이 많이 소요되며 개발 팀에 관리 부담이 발생할 수 있습니다. 다른 사내 소프트웨어와 마찬가지로 사내 자동화 도구를 유지 관리해야 합니다. 요구 사항을 충족할 수 있을 때마다 기성 도구를 사용하는 것이 좋습니다. 상용, 오픈 소스 및 클라우드 플랫폼 제공 도구 사이에는 여러 옵션을 사용할 수 있습니다. 다양한 도구를 사용하여 필요한 자동화를 빌드할 수 있습니다. 사내 전문 지식에 의존하여 도구를 평가할 때 의사 결정을 안내합니다. 팀은 특정 개발 언어 및 프레임워크에 더 익숙할 수 있습니다. 처음에는 높은 학습 곡선 없이 사용할 수 있는 기성품 도구에 집중할 수 있습니다. 자동화를 통해 해결하려는 작업을 반영하고 이러한 작업을 구체적으로 해결할 수 있는 도구에 투자합니다. 일반적으로 선호하는 도구를 조달하지 말고 나중에 작업을 고려하세요.

버전 잠금 및 플러그 인 과용과 같이 자동화를 빌드할 때 작업을 복잡하게 만들 수 있는 요인을 염두에 두어야 합니다. Jenkins 또는 Azure DevOps 플러그 인과 같은 플러그 인은 기능을 추가하는 좋은 방법입니다. 자동화 목표에 이점을 얻을 때 플러그 인을 채택해야 합니다. 그러나 여러 플러그 인을 사용하여 단일 작업을 수행하는 경우 자동화 업데이트 및 문제 해결을 어렵게 만들 수 있습니다. 플러그 인을 사용하는 데 신중해야 합니다. 또한 프레임워크 버전 종속성이 있는 솔루션은 시간이 지남에 따라 유지 관리해야 하는 부담이 있으므로 방지합니다. 이러한 유형의 문제의 위험을 최소화하려면 자동화 도구 및 플러그 인 선택을 표준화하고 모든 자동화 프로젝트에 소스 제어를 사용합니다.

워크로드에 자동화 통합

자동화를 빌드하는 데 사용하는 도구의 경우 운영자가 쉽게 액세스할 수 있고 관리할 수 있도록 합니다. 워크로드 팀에 명확하고 사용하기 쉬운 인터페이스를 제공합니다. CI/CD 파이프라인, API 및 라이브러리에 대한 액세스를 제공할 수 있습니다. 자동화에서 지원하는 워크로드와 마찬가지로 자동화를 전체적으로 관리해야 합니다. 다른 워크로드 구성 요소와 동일한 수준까지 자동화를 보호합니다. 자동화를 모니터링하고 다른 워크로드 구성 요소와 동일한 테스트 프로토콜을 적용합니다.

고려 사항

  • 경우에 따라 자동화에서 얻는 효율성이 요구 사항에 맞는 기성 솔루션이 없는 경우 자체 솔루션을 개발하는 관리 부담보다 더 중요합니다. 이러한 경우 개발 노력에 신중해야 합니다. 기성 솔루션으로 해결할 수 없는 격차를 메우고 종속성과 같은 복잡성을 최소화하는 데 필요한 것만 개발하는 데 집중합니다.

  • 높은 수준의 유지 관리가 필요한 복잡한 자동화는 운영 팀이 관리하고 문제를 해결하기 어려울 수 있습니다. 자동화된 작업은 불연속 작업 수행에만 집중합니다. 다른 도구 또는 구성 요소에 대한 종속성을 최소화해 보세요.

  • 수동 프로세스 사용에 대해 신중해야 합니다. 작업을 자동화하지 않기로 결정한 경우 연산자를 위한 단계별 검사 목록을 만들어 수동 프로세스를 철저히 문서화합니다. 이 방법은 운영자가 실수로 잘못된 프로세스를 실행하는 것처럼 사용자 오류의 가능성을 줄입니다. 이 설명서는 나중에 해당 프로세스에 대한 자동화를 설계하는 데도 도움이 됩니다.

  • 하이브리드 수동 및 자동화된 접근 방식을 사용하는 경우 특히 주의해야 합니다. 스크립트가 대부분의 프로세스를 실행한 다음 특정 부분이나 결정에 대해 인간에게 연기하는 경우 정보에 입각한 결정을 내리는 데 필요한 컨텍스트와 정보를 제공하는 것이 중요합니다.

Azure 촉진

Azure는 워크로드에 대한 작업을 자동화하는 데 도움이 되는 많은 도구를 제공합니다.

IaC 도구: IaC 배포에 Terraform, Bicep 및 Azure Resource Manager 사용할 수 있습니다. 요구 사항 및 도구에 대한 팀의 친숙도에 따라 리소스 배포 및 관리에 이러한 도구 중 하나 이상을 사용할 수 있습니다.

Azure Functions: Azure Functions 기본 개발 언어를 사용하여 작업을 자동화하는 데 사용할 수 있는 서버리스 도구입니다. Functions는 함수를 다른 서비스에 연결하는 포괄적인 이벤트 기반 트리거 및 바인딩 집합을 제공합니다. 추가 코드를 작성할 필요가 없습니다.

Azure용 GitHub Actions: Azure용 GitHub Actions 사용하여 CI/CD 프로세스를 자동화할 수 있습니다. GitHub Actions Azure와 통합하여 배포를 간소화합니다. 리포지토리의 모든 끌어오기 요청을 빌드하고 테스트하는 워크플로를 만들거나 병합된 끌어오기 요청을 프로덕션에 배포할 수 있습니다.

GitHub Actions DevOps를 넘어 리포지토리에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있습니다. 예를 들어 다른 사용자가 리포지토리에서 새 문제를 만들 때 워크플로를 실행하여 적절한 레이블을 자동으로 추가할 수 있습니다.

Azure Automation: PowerShell 및 Python은 운영 작업을 자동화하기 위한 인기 있는 프로그래밍 언어입니다. 이러한 언어를 사용하여 서비스 다시 시작, 데이터 저장소 간에 로그 전송 및 수요에 맞게 인프라 크기 조정과 같은 작업을 수행합니다. 코드에서 이러한 작업을 표현하고 요청 시 실행할 수 있습니다. 이러한 언어만으로는 중앙 집중식 관리, 버전 제어 또는 실행 기록을 위한 플랫폼을 제공하지 않습니다. 또한 언어에는 모니터링 기반 경고와 같은 이벤트에 응답하기 위한 기본 메커니즘이 부족합니다. 이러한 기능을 제공하려면 자동화 플랫폼이 필요합니다.

Automation 은 Azure와 비 Azure 모두에서 클라우드 및 온-프레미스 환경에서 PowerShell 및 Python 코드를 호스팅하고 실행하기 위한 Azure 호스팅 플랫폼을 제공합니다. PowerShell 및 Python 코드는 Automation Runbook에 저장됩니다. Automation을 사용하여 다음을 수행합니다.

  • 요청 시, 일정 또는 웹후크를 통해 Runbook을 트리거합니다.

  • 실행 기록 및 로깅.

  • 비밀 저장소를 통합합니다.

  • 소스 제어를 통합합니다.

Azure 업데이트 관리자: Update Manager는 가상 머신에 대한 업데이트를 관리하고 관리하는 데 도움이 되는 통합 서비스입니다. 워크로드 전체에서 Windows 및 Linux 업데이트 규정 준수를 모니터링할 수 있습니다. 업데이트 관리자를 사용하여 실시간 업데이트를 만들거나 정의된 유지 관리 기간 내에 예약할 수도 있습니다. 업데이트 관리자를 사용하여 다음을 수행합니다.

  • 전체 컴퓨터에서 규정 준수를 감독합니다.
  • 되풀이 업데이트 예약
  • 중요 업데이트 배포

Azure 배포 환경: 배포 환경을 사용하면 개발 팀이 프로젝트 기반 템플릿을 사용하여 일관된 앱 인프라를 빠르게 만들 수 있습니다. 이러한 템플릿은 설치 시간을 최소화하고 보안, 규정 준수 및 비용 효율성을 최대화합니다. 배포 환경은 미리 정의된 구독에 배포된 Azure 리소스의 컬렉션입니다. 개발 인프라 관리자는 엔터프라이즈 보안 정책을 적용하고 미리 정의된 IaC 템플릿의 큐레이팅된 집합을 제공할 수 있습니다.

개발 인프라 관리자는 배포 환경을 카탈로그 항목으로 정의합니다. 카탈로그 항목은 카탈로그라고 하는 GitHub 또는 Azure DevOps 리포지 토리에서 호스트됩니다. 카탈로그 항목은 IaC 템플릿과 manifest.yaml 파일로 구성됩니다.

배포 환경 만들기를 스크립팅하고 프로그래밍 방식으로 환경을 관리할 수 있습니다.

Azure Logic Apps 및 Microsoft Power Automate: 승인 흐름 또는 ChatOps 통합 빌드와 같은 워크로드 작업을 처리하기 위해 사용자 지정 DPA(디지털 프로세스 자동화)를 빌드할 때 Logic Apps 또는 Power Automate를 사용하는 것이 좋습니다. 기본 제공 커넥터 및 템플릿에서 워크플로를 생성할 수 있습니다. Logic Apps 및 Power Automate는 동일한 기본 기술을 기반으로 하며 트리거 기반 또는 시간 기반 작업에 적합합니다.

자동 크기 조정: 많은 Azure 기술에는 기본 제공 자동 크기 조정 기능이 있습니다. API를 사용하여 자동으로 크기를 조정하도록 다른 서비스를 프로그래밍할 수도 있습니다. 자세한 내용은 신뢰할 수 있는 크기 조정 전략 설계에 대한 권장 사항을 참조하세요.

Azure Monitor 작업 그룹: 경고가 트리거될 때 자동 복구 작업을 자동으로 실행하려면 Azure Monitor 작업 그룹을 사용합니다. Runbook, Azure 함수 또는 웹후크를 사용하여 이러한 작업을 정의할 수 있습니다.

예제

다른 Azure 서비스와 함께 Automation을 사용하는 예제는 Azure Event Grid 사용하여 Ops 자동화를 참조하세요. 이 예제에서는 Logic Apps 및 Event Grid를 사용하여 운영 작업을 자동화합니다.

운영 우수성 검사 목록

전체 권장 사항 집합을 참조하세요.