Microsoft Teams 앱을 개발하다 보면 Provision, Deploy, Publish라는 용어를 자주 만나게 됩니다.
세 단어 모두 “앱을 배포한다”는 흐름 안에서 사용되지만, 실제 의미와 실행 시점은 서로 다릅니다.

간단히 정리하면 다음과 같습니다.

용어 핵심 의미 주요 대상 실행 시점
Provision 앱 실행에 필요한 클라우드 리소스를 준비 Azure 리소스, Entra ID 등록, 환경 설정 등 코드 배포 전
Deploy 준비된 리소스에 실제 앱 코드를 업로드 프론트엔드, 백엔드, 봇, API 코드 등 코드 변경 시
Publish 사용자가 Teams에서 앱을 설치하고 사용할 수 있도록 게시 Teams 앱 패키지, 조직 앱 카탈로그, Teams Store 등 앱을 사용자에게 제공할 때

1. Provision: 앱 실행 환경을 준비하는 단계

Provision은 Microsoft Teams 앱이 실행될 인프라와 관련 리소스를 준비하는 과정입니다.

Teams 앱은 단순히 Teams 안에만 존재하는 것이 아니라, 실제 기능을 수행하기 위해 외부 리소스를 사용하는 경우가 많습니다. 예를 들어 봇, API 서버, 웹앱, 데이터 저장소, 인증 정보 등이 필요할 수 있습니다.

Provision 단계에서는 이러한 리소스를 Azure 등에 생성하거나 업데이트합니다.

주요 작업 예시

  • Azure App Service 생성
  • Azure Functions 생성
  • Azure Storage 생성
  • 데이터베이스 또는 기타 클라우드 리소스 준비
  • Microsoft Entra ID 앱 등록
  • 봇 또는 API가 사용할 환경 변수 설정
  • Teams 앱 실행에 필요한 리소스 연결 정보 구성

특징

Provision은 앱의 실행 기반을 만드는 단계입니다.
따라서 일반적으로 코드 배포보다 먼저 수행됩니다.

다만 “처음 한 번만 실행한다”고 단정하기보다는, 다음과 같이 이해하는 것이 더 정확합니다.

  • 처음 환경을 만들 때 실행
  • 리소스 구성이 바뀔 때 다시 실행
  • 개발, 테스트, 운영 등 환경별로 별도 실행 가능
  • 인프라 설정이 변경되면 반복 실행될 수 있음

즉, Provision은 코드를 올리는 작업이 아니라, 코드를 실행할 환경을 준비하는 작업입니다.


2. Deploy: 준비된 리소스에 코드를 올리는 단계

Deploy는 이미 Provision된 리소스에 실제 앱 코드를 업로드하고 실행 가능하게 만드는 과정입니다.

예를 들어 Teams 앱의 백엔드가 Azure App Service에서 실행된다면, Deploy 단계에서는 해당 App Service에 최신 서버 코드를 업로드합니다.
프론트엔드가 정적 웹앱이나 Azure Storage 기반 정적 웹사이트로 구성되어 있다면, 빌드된 프론트엔드 파일을 해당 리소스에 배포합니다.

주요 작업 예시

  • 백엔드 API 코드 배포
  • 봇 서버 코드 배포
  • 프론트엔드 빌드 결과물 업로드
  • Azure Functions 코드 배포
  • 정적 웹 리소스 배포

특징

Deploy는 앱의 실제 동작 코드를 리소스에 반영하는 단계입니다.

따라서 코드가 변경될 때마다 반복적으로 수행됩니다.

Provision과 Deploy의 차이는 다음과 같이 볼 수 있습니다.

구분 Provision Deploy
목적 실행 환경 준비 앱 코드 업로드
대상 인프라, 리소스, 설정 소스 코드, 빌드 결과물
반복 시점 리소스 또는 환경 설정 변경 시 코드 변경 시
예시 Azure App Service 생성 App Service에 API 코드 업로드

Provision이 “서버와 실행 환경을 만드는 일”이라면, Deploy는 “그 위에 최신 앱 코드를 올리는 일”입니다.


3. Publish: Teams에서 사용 가능하도록 게시하는 단계

Publish는 Teams 앱을 실제 사용자가 설치하고 사용할 수 있도록 Teams 플랫폼에 게시하는 과정입니다.

Teams 앱은 코드만 배포했다고 바로 사용자에게 노출되지 않습니다.
사용자가 Teams에서 앱을 검색하거나 설치하려면 앱 패키지를 Teams에 등록해야 합니다.

이때 사용되는 것이 Teams 앱 패키지입니다.

Teams 앱 패키지는 일반적으로 다음 파일을 포함합니다.

  • manifest.json
  • 컬러 아이콘
  • 아웃라인 아이콘

중요한 점은 Teams 앱 패키지가 앱의 전체 소스 코드나 서버 로직을 포함하는 것이 아니라는 점입니다.
Teams는 앱 패키지를 통해 앱의 이름, 아이콘, 권한, 탭 URL, 봇 정보, 메시지 확장 정보 등을 인식하고, 실제 기능은 외부에 호스팅된 앱 리소스와 연결해 실행합니다.

Publish 대상

Teams 앱은 목적에 따라 여러 방식으로 게시할 수 있습니다.

게시 방식 설명
개인 또는 팀 범위 테스트 개발 중 앱을 특정 사용자, 팀, 채팅, 회의 등에 업로드
조직 내부 게시 조직의 Teams 앱 카탈로그에 등록하여 내부 사용자가 설치 가능
Teams Store 게시 외부 사용자까지 사용할 수 있도록 Microsoft Teams Store에 등록
Developer Portal 또는 Toolkit 기반 게시 도구를 사용해 앱 패키지 생성, 검증, 게시 흐름 수행

특징

Publish는 앱 개발 라이프사이클의 마지막 단계에 가깝습니다.

즉, 앱 코드가 정상적으로 배포되어 있고, Teams 앱 패키지의 manifest 설정도 올바른 상태에서 수행하는 것이 일반적입니다.

조직 내부에 게시하는 경우에는 Teams 관리자 승인 절차가 필요할 수 있습니다.
Teams Store에 게시하는 경우에는 Microsoft의 앱 검증 및 심사 기준을 충족해야 합니다.


4. Teams 앱 개발 라이프사이클 예시

Microsoft Teams 앱 개발과 배포 흐름은 보통 다음 순서로 진행됩니다.

1. Create
   Teams 앱 프로젝트 생성

2. Provision
   Azure 리소스, 인증 정보, 앱 등록 등 실행 환경 준비

3. Deploy
   준비된 리소스에 프론트엔드, 백엔드, 봇, API 코드 배포

4. Package
   manifest.json과 아이콘을 포함한 Teams 앱 패키지 생성

5. Publish
   Teams에 앱을 업로드하거나 조직 또는 Teams Store에 게시

이를 실제 예시로 바꾸면 다음과 같습니다.

Provision
→ Azure에 App Service, Functions, Storage 등 필요한 리소스 생성

Deploy
→ 생성된 Azure 리소스에 Teams 앱의 백엔드, 프론트엔드, 봇 코드 업로드

Package
→ manifest.json과 아이콘을 포함한 Teams 앱 패키지 zip 생성

Publish
→ Teams에 앱 패키지를 업로드하여 사용자 또는 조직이 설치할 수 있도록 게시

5. Provision, Deploy, Publish를 한 문장으로 구분하기

세 용어를 가장 쉽게 구분하면 다음과 같습니다.

Provision은 실행 환경을 만들고, Deploy는 그 환경에 코드를 올리며, Publish는 Teams 사용자가 앱을 설치하고 사용할 수 있게 공개하는 단계입니다.

조금 더 실무적으로 표현하면 다음과 같습니다.

  • Provision: Azure와 Microsoft 365 쪽 리소스를 준비한다.
  • Deploy: 준비된 리소스에 최신 앱 코드를 반영한다.
  • Publish: Teams에 앱 패키지를 등록해 사용자에게 제공한다.

6. 주의할 점

1. Deploy와 Publish는 다르다

Deploy는 코드 배포입니다.
Publish는 Teams 플랫폼에 앱을 게시하는 것입니다.

즉, Deploy를 완료했다고 해서 사용자가 Teams에서 바로 앱을 설치할 수 있는 것은 아닙니다.
사용자가 앱을 설치하려면 별도의 Publish 또는 앱 업로드 과정이 필요합니다.

2. Teams는 앱 코드를 직접 호스팅하지 않는다

Teams 앱 패키지는 앱의 설정 정보와 아이콘을 포함합니다.
실제 앱 로직, API, 데이터 저장소 등은 Azure나 다른 외부 호스팅 환경에서 실행됩니다.

따라서 Teams 앱 개발에서는 다음 두 가지를 함께 관리해야 합니다.

  • 실제 앱 코드와 서버 리소스
  • Teams 앱 패키지와 manifest 설정

3. 조직 게시와 Teams Store 게시는 다르다

조직 내부 앱 카탈로그에 게시하는 것과 Teams Store에 게시하는 것은 목적과 절차가 다릅니다.

조직 내부 게시:

  • 특정 회사 또는 테넌트 내부 사용자를 대상으로 함
  • Teams 관리자의 승인 또는 정책 설정이 필요할 수 있음

Teams Store 게시:

  • 외부 고객 또는 전 세계 사용자를 대상으로 함
  • Microsoft의 앱 검증 기준을 통과해야 함
  • 앱 설명, 아이콘, 스크린샷, 권한, 개인정보 처리방침, 지원 링크 등 여러 항목을 준비해야 함