다음을 통해 공유


DevOps 패턴

단일 위치에서 코드를 작성하고 로컬 데이터 센터, 프라이빗 클라우드 또는 퍼블릭 클라우드에 있을 수 있는 개발, 테스트 및 프로덕션 환경의 여러 대상에 배포합니다.

컨텍스트 및 문제

애플리케이션 배포 연속성, 보안 및 안정성은 조직에 필수적이며 개발 팀에 매우 중요합니다.

앱은 종종 각 대상 환경에서 실행하기 위해 리팩터링된 코드가 필요합니다. 즉, 앱이 완전히 이식 가능하지는 않습니다. 각 환경을 통해 이동할 때 업데이트, 테스트 및 유효성을 검사해야 합니다. 예를 들어 개발 환경에서 작성된 코드는 테스트 환경에서 작동하도록 다시 작성하고 최종적으로 프로덕션 환경에 배치될 때 다시 작성해야 합니다. 또한 이 코드는 호스트에 연결됩니다. 이렇게 하면 앱 유지 관리의 비용과 복잡성이 증가합니다. 앱의 각 버전은 각 환경에 연결됩니다. 복잡성과 중복이 증가하면 보안 및 코드 품질 위험이 높아집니다. 또한 복원 실패 호스트를 제거하거나 추가 호스트를 배포하여 수요 증가를 처리할 때 코드를 쉽게 다시 배포할 수 없습니다.

해결책

DevOps 패턴을 사용하면 여러 클라우드에서 실행되는 앱을 빌드, 테스트 및 배포할 수 있습니다. 이 패턴은 연속 통합 및 지속적인 업데이트의 사례를 결합합니다. 연속 통합을 사용하면 팀 구성원이 버전 제어에 대한 변경 내용을 커밋할 때마다 코드가 빌드되고 테스트됩니다. 지속적인 업데이트는 빌드에서 프로덕션 환경으로의 각 단계를 자동화합니다. 이러한 프로세스는 함께 다양한 환경에서 배포를 지원하는 릴리스 프로세스를 만듭니다. 이 패턴을 사용하면 코드를 초안으로 작성한 다음 동일한 코드를 프레미스 환경, 다른 프라이빗 클라우드 및 퍼블릭 클라우드에 배포할 수 있습니다. 환경의 차이는 코드를 변경하는 대신 구성 파일을 변경해야 합니다.

DevOps 패턴

온-프레미스, 프라이빗 클라우드 및 퍼블릭 클라우드 환경에서 일관된 개발 도구 집합을 사용하여 지속적인 통합 및 지속적인 업데이트 사례를 구현할 수 있습니다. DevOps 패턴을 사용하여 배포된 앱 및 서비스는 서로 교환할 수 있으며 온-프레미스 및 퍼블릭 클라우드 기능 및 기능을 활용하여 이러한 위치에서 실행할 수 있습니다.

DevOps 릴리스 파이프라인을 사용하면 다음을 수행할 수 있습니다.

  • 단일 리포지토리에 대한 코드 커밋을 기반으로 새 빌드를 시작합니다.
  • 사용자 승인 테스트를 위해 새로 빌드된 코드를 퍼블릭 클라우드에 자동으로 배포합니다.
  • 코드가 테스트를 통과하면 프라이빗 클라우드에 자동으로 배포합니다.

문제 및 고려 사항

DevOps 패턴은 대상 환경에 관계없이 배포 간에 일관성을 보장하기 위한 것입니다. 그러나 기능은 클라우드 및 온-프레미스 환경에 따라 다릅니다. 다음 사항을 고려합니다.

  • 배포의 함수, 엔드포인트, 서비스 및 기타 리소스를 대상 배포 위치에서 사용할 수 있나요?
  • 구성 아티팩트가 클라우드에서 액세스할 수 있는 위치에 저장되어 있나요?
  • 배포 매개 변수는 모든 대상 환경에서 작동합니까?
  • 리소스별 속성은 모든 대상 클라우드에서 사용할 수 있나요?

자세한 내용은 클라우드 일관성 대한 Azure Resource Manager 템플릿 개발참조하세요.

또한 이 패턴을 구현하는 방법을 결정할 때 다음 사항을 고려합니다.

확장성

배포 자동화 시스템은 DevOps 패턴의 핵심 제어 지점입니다. 구현은 다를 수 있습니다. 올바른 서버 크기의 선택은 예상 워크로드의 크기에 따라 달라집니다. VM은 컨테이너보다 크기 조정에 더 많은 비용이 듭니다. 그러나 크기 조정에 컨테이너를 사용하려면 빌드 프로세스가 컨테이너와 함께 실행되어야 합니다.

가용도

DevPattern의 컨텍스트에서 가용성은 테스트 결과, 코드 종속성 또는 기타 아티팩트 등 워크플로와 연결된 상태 정보를 복구할 수 있음을 의미합니다. 가용성 요구 사항을 평가하려면 두 가지 일반적인 메트릭을 고려합니다.

  • RTO(복구 시간 목표)는 시스템 없이 얼마나 오래 갈 수 있는지를 지정합니다.

  • RPO(복구 지점 목표)는 서비스 중단이 시스템에 영향을 줄 경우 손실될 수 있는 데이터의 양을 나타냅니다.

실제로 RTO 및 RPO는 중복성 및 백업을 의미합니다. 글로벌 Azure 클라우드에서 가용성은 Azure의 일부인 하드웨어 복구의 문제가 아니라 DevOps 시스템의 상태를 유지 관리합니다. Azure Stack Hub에서 하드웨어 복구를 고려할 수 있습니다.

배포 자동화에 사용되는 시스템을 디자인할 때 또 다른 주요 고려 사항은 액세스 제어 및 클라우드 환경에 서비스를 배포하는 데 필요한 권한의 적절한 관리입니다. 배포를 만들거나 삭제하거나 수정하는 데 필요한 권한은 무엇인가요? 예를 들어 한 권한 집합은 일반적으로 Azure에서 리소스 그룹을 만들고 다른 하나는 리소스 그룹에 서비스를 배포하는 데 필요합니다.

관리

DevOps 패턴을 기반으로 하는 시스템의 디자인은 포트폴리오 전체의 각 서비스에 대한 자동화, 로깅 및 경고를 고려해야 합니다. 공유 서비스, 애플리케이션 팀 또는 둘 다를 사용하고 보안 정책 및 거버넌스도 추적합니다.

Azure 또는 Azure Stack Hub의 별도 리소스 그룹에 프로덕션 환경 및 개발/테스트 환경을 배포합니다. 그런 다음 각 환경의 리소스를 모니터링하고 리소스 그룹별로 청구 비용을 롤업할 수 있습니다. 테스트 배포에 유용한 집합으로 리소스를 삭제할 수도 있습니다.

이 패턴을 사용하는 경우

다음과 같은 경우 이 패턴을 사용합니다.

  • 개발자의 요구를 충족하는 한 환경에서 코드를 개발하고, 새 코드를 개발하기 어려울 수 있는 솔루션과 관련된 환경에 배포할 수 있습니다.
  • 개발자가 DevOps 패턴의 지속적인 통합 및 지속적인 업데이트 프로세스를 따를 수 있는 한 개발자가 원하는 코드와 도구를 사용할 수 있습니다.

이 패턴은 권장되지 않습니다.

  • 인프라, 리소스 프로비저닝, 구성, ID 및 보안 작업을 자동화할 수 없는 경우.
  • 팀이 CI/CD(연속 통합/지속적인 개발) 접근 방식을 구현하기 위해 하이브리드 클라우드 리소스에 액세스할 수 없는 경우

다음 단계

이 문서에 소개된 항목에 대해 자세히 알아보려면 다음을 수행합니다.

  • Azure DevOps 및 Azure Repos 및 Azure Pipelines를 비롯한 관련 도구에 대한 자세한 내용은 Azure DevOps 설명서를 참조하세요.
  • 제품 및 솔루션의 전체 포트폴리오에 대해 자세히 알아보려면 Azure Stack 제품군의 제품 및 솔루션 참조하세요.

솔루션 예제를 테스트할 준비가 되면 DevOps 하이브리드 CI/CD 솔루션 배포 가이드계속 진행합니다. 배포 가이드에서는 해당 구성 요소를 배포하고 테스트하기 위한 단계별 지침을 제공합니다. 하이브리드 CI/CD(연속 통합/지속적인 업데이트) 파이프라인을 사용하여 Azure 및 Azure Stack Hub에 앱을 배포하는 방법을 알아봅니다.