AZ-204 Certified: 3-Day Deploy to App Service

관련 글 정보

App Sevice 배포 방법

개발 팀마다 요구 사항이 다르기 때문에 클라우드 서비스에 대한 효율적인 배포 파이프라인 구현1에 어려움을 겪을 수 있습니다. App Service는 자동 배포와 수동 배포를 모두 지원합니다.

자동화 배포

동화된 배포 혹은 연속 배포는 컴퓨터 프로그램을 업데이트하는 과정을 자동차의 정기 검사와 같이 자주 그리고 자동으로 실행하는 것을 말합니다. 사용자들이 별다른 불편을 겪지 않게, App Service에 새로운 기능을 추가하거나 문제를 고치는 내용을 자주, 빠르게, 그리고 자동으로 업데이트해주는 시스템이죠.

Azure는 여러 원본에서 직접 자동화 배포를 지원합니다. 다음 옵션을 사용할 수 있습니다.

  • Azure DevOps Services: 코드를 Azure DevOps Services에 푸시하고, 클라우드에서 코드를 빌드하고, 테스트를 실행하고, 코드에서 릴리스를 생성하고, 마지막으로 코드를 Azure 웹앱에 푸시할 수 있습니다.
  • GitHub: Azure는 GitHub에서 직접 자동화 배포를 지원합니다. 자동화된 배포를 위해 GitHub 리포지토리를 Azure에 연결하면 GitHub의 프로덕션 분기에 푸시하는 모든 변경 내용이 자동으로 배포됩니다.
  • Bitbucket: GitHub와 유사하므로 Bitbucket을 사용하여 자동화 배포를 구성할 수 있습니다.

개발자의 코드를 어디에 저장하고 있든, Azure는 아래와 같이 동작합니다.

  1. 자동 빌드(코드를 실행 가능한 파일로 작성)
  2. 자동 테스트
  3. 자동 배포

수동 배포

수동 배포는 자동화된 과정 없이 사람이 직접 소프트웨어 업데이트를 운영 환경에 적용하는 것을 말합니다. 예를 들어, 개발자가 자신의 로컬 컴퓨터에서 소스 코드를 빌드하고 테스트한 다음, 결과물을 서버에 직접 업로드하는 경우입니다.

코드를 Azure에 수동으로 푸시하는 데 사용할 수 있는 몇 가지 옵션이 있습니다.

  • Git: App Service 웹앱은 원격 리포지토리로 추가할 수 있는 Git URL 기능을 제공합니다. 원격 리포지토리에 푸시하면 앱이 배포됩니다.
  • CLI: webapp up은 앱을 패키지하고 배포하는 az 명령줄 인터페이스의 기능입니다. 다른 배포 방법과 달리 az webapp up에서는 App Service 웹앱이 아직 만들어지지 않은 경우 새 웹앱을 자동으로 만들 수 있습니다.
  • Zip 배포: curl 또는 유사한 HTTP 유틸리티를 사용하여 애플리케이션 파일의 ZIP을 App Service에 보냅니다.
  • FTP/S: FTP 또는 FTPS는 App Service를 포함한 많은 호스팅 환경에 코드를 푸시하는 기존 방법입니다.

배포 슬롯 사용

Azure의 App Service에는 ‘배포 슬롯’이라는 기능이 있는데, 이것을 이용하면 테스트용 환경에서 문제없이 작동하는 것을 확인한 후에, 한 번의 클릭으로 테스트용 환경과 실제 사용 환경을 맞바꿀 수 있습니다.

Azure에서는 새로운 프로그램 버전을 실제로 사용하는 환경(프로덕션)에 바로 적용하는 대신, 먼저 테스트용 환경(스테이징)에 배포하는 방법을 추천합니다. 이렇게 하면, 만약 무언가 잘못되었을 때 실제 사용자에게 영향을 미치지 않습니다.

‘배포 슬롯’을 사용하면 실제 서비스를 중단하지 않고도 업데이트를 적용할 수 있습니다. 프로덕션 환경으로 새로운 버전을 넘길 때 필요한 서버 설정이나 환경 조정도 자동으로 이루어지기 때문에, 사용자는 업데이트 과정에서 서비스가 멈추는 일 없이 새로운 버전을 바로 사용할 수 있습니다.

Learning Note

  1. 배포 및 빌드 파이프 라인에 대해서 알아보기

    빌드 파이프라인:
    코드의 새로운 변경 사항을 자동으로 가져와서 테스트하고, 실행 가능한 형태로 만드는 과정입니다. 이를 ‘빌드’라고 합니다.
    개발자가 코드를 저장소에 푸시하면, 빌드 파이프라인이 이를 감지하고 자동으로 코드를 컴파일(빌드), 단위 테스트 실행, 코드 품질 검사 등을 수행합니다.

    “성공적인 빌드는 사용할 준비가 된 소프트웨어 패키지나 실행 파일을 만듭니다.

    배포 파이프라인:
    빌드 파이프라인을 통해 성공적으로 생성된 소프트웨어를 운영 환경에 안전하게 배포하는 과정입니다.
    배포 파이프라인은 일련의 환경(개발, 스테이징, 프로덕션 등)을 거치며 소프트웨어를 배포합니다. 각 환경에서 추가 테스트(통합 테스트, 부하 테스트 등)가 이루어질 수 있습니다.

    “성공적인 배포는 업데이트된 버전의 소프트웨어를 실제 사용자가 사용하는 프로덕션 환경에 적용합니다.

    두 파이프라인은 자주 연결되어 사용됩니다. 즉, 빌드 파이프라인이 성공적으로 빌드를 마치면, 배포 파이프라인이 이어받아 소프트웨어를 다양한 환경에 자동으로 배포하는 형태로 말이죠. 이러한 자동화는 팀이 보다 신속하게 반복적인 작업을 수행할 수 있도록 도와주며, 수작업으로 인한 오류를 줄여줍니다.
    ↩︎
Azure DevOps 시작하기 블로그 포스팅