Azure Spring Apps의 앱 및 배포

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서는 다음에 적용됩니다. ✔️ Java ✔️ C#

이 문서의 적용 대상: ✔️ 기본/표준 ✔️ 엔터프라이즈

배포는 Azure Spring Apps 리소스 모델의 두 가지 주요 개념입니다. Azure Spring Apps에서 은 하나의 비즈니스 앱을 추상화한 것입니다. 으로 배포된 하나의 코드 또는 이진의 버전이 배포에서 실행됩니다. 앱은 다음과 같이 Azure Spring Apps 서비스 인스턴스 또는 단순히 서비스 인스턴스에서 실행됩니다.

Diagram showing the relationship between the apps and deployments.

단일 Azure 구독 내에서 여러 서비스 인스턴스를 가질 수 있지만 비즈니스 앱을 구성하는 모든 앱이 단일 서비스 인스턴스 내에 있을 때 Azure Spring Apps Service를 사용하는 것이 가장 쉽습니다. 한 가지 이유는 앱이 서로 통신할 가능성이 높기 때문입니다. 서비스 인스턴스에서 Eureka 서비스 레지스트리를 사용하면 쉽게 이를 수행할 수 있습니다.

Azure Spring Apps 표준 계획을 사용하면 하나의 앱이 하나의 프로덕션 배포와 하나의 스테이징 배포를 포함할 수 있으므로, 파란색/녹색 배포를 쉽게 수행할 수 있습니다.

App

다음 기능/속성은 앱 수준에서 정의됩니다.

기능 설명
공용
엔드포인트
엡에 액세스할 수 있는 URL.
사용자 지정
도메인
사용자 지정 도메인을 보호하는 CNAME 레코드.
서비스
바인딩
다른 Azure 서비스와의 기본 연결.
관리
ID
Microsoft Entra ID의 관리 ID를 사용하면 앱이 Azure Key Vault와 같은 다른 Microsoft Entra 보호 리소스에 쉽게 액세스할 수 있습니다.
영구
스토리지
데이터가 앱 다시 시작 후에도 유지되도록 하는 설정.

배포

다음 기능/속성은 배포 수준에서 정의되며 프로덕션 배포와 준비 배포를 바꿀 때 교환됩니다.

기능 설명
CPU 앱 인스턴스당 vcore 수.
메모리 앱 인스턴스당 메모리(GB).
인스턴스
개수
수동 또는 자동으로 설정되는 앱 인스턴스 수.
자동 크기 조정 미리 정의된 규칙 및 일정에 따라 인스턴스 수 자동 조정.
JVM
옵션
설정할 JVM 옵션.
환경
변수
설정할 환경 변수.
런타임
버전
Java 8 또는 Java 11.

환경

Azure Spring 앱은 일부 읽기 전용 YAML 파일을 배포된 앱에 탑재합니다. 이러한 파일에는 배포의 Azure 컨텍스트가 포함되어 있습니다. 다음 목록은 이러한 YAML 파일의 경로와 콘텐츠를 보여 줍니다.

  • /etc/azure-spring-cloud/context/azure-spring-apps.yml

    AZURE_SPRING_APPS:
        SUBSCRIPTION_ID:  <your-azure-subscription-id>
        RESOURCE_GROUP: <your-resource-group-name>
        NAME: <your-azure-spring-apps-name>
    
  • /etc/azure-spring-cloud/context/azure-spring-apps-deployment.yml

    AZURE_SPRING_APPS:
         APP:
            NAME: <your-app-name>
         DEPLOYMENT:
            NAME: <your-deployment-name>
            ACTIVE: true # true if the deployment is in production, false if in staging
    

앱이 Spring Boot 앱인 경우 이 두 파일 경로가 SPRING_CONFIG_ADDITIONAL_LOCATION 환경 변수에 추가됩니다. 이렇게 하면 앱에서 이러한 속성을 구성으로 로드하고 코드에서 사용할 수 있습니다. 예를 들어, @ConfigurationProperties 주석을 사용하여 YAML 속성을 Java 클래스에 바인딩할 수 있습니다. 다음 코드 조각은 Azure 컨텍스트를 나타내는 @Configuration 클래스를 만드는 방법을 보여 줍니다.

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "azure-spring-apps")
@Data
public class AzureSpringAppsContext {

    private String subscriptionId;
    private String resourceGroup;
    private String name;

    private AppContext app;
    private DeploymentContext deployment;

    @Data
    public static class AppContext {
        private String name;
    }

    @Data
    public static class DeploymentContext {
        private String name;
        private boolean active;
    }
}

다른 다중 언어 앱의 경우 앱에서 해당 파일 읽기/쓰기 라이브러리를 사용하여 해당 속성을 읽고 액세스해야 할 수도 있습니다.

제한 사항

  • 앱에는 하나의 프로덕션 배포가 있어야 합니다. API는 프로덕션 배포 삭제를 차단합니다. 배포를 삭제하기 전에 준비로 전환해야 합니다.
  • 앱에는 최대 2개의 배포가 있을 수 있습니다. API는 세 개 이상의 배포 만들기를 차단합니다. 기존 프로덕션 또는 스테이징 배포에 새 이진을 배포합니다.
  • 기본 계획에서는 배포 관리를 사용할 수 없습니다. 파란색-녹색 배포 기능을 위해서는 표준 또는 엔터프라이즈 계획을 사용합니다.

다음 단계