다음을 통해 공유


빠른 시작: Azure Container Apps에서 관리 Java 구성 요소를 사용하여 첫 번째 Java 마이크로 서비스 애플리케이션 시작

이 빠른 시작에서는 Java 구성 요소를 사용하여 구성 관리, 서비스 검색, 상태, 메트릭을 처리하는 Azure Container Apps에서 애플리케이션을 배포하는 방법을 알아봅니다. 이 예제에서 사용된 샘플 애플리케이션은 마이크로 서비스 아키텍처 패턴을 사용하는 Java PetClinic입니다. 다음 다이어그램은 Azure Container Apps에서 PetClinic 애플리케이션의 아키텍처를 보여 줍니다.

Java 구성 요소와 마이크로 서비스 애플리케이션 간의 관계를 나타내는 다이어그램

PetClinic 애플리케이션에는 다음과 같은 기능이 포함되어 있습니다.

  • 프런트 엔드는 API 게이트웨이 앱에서 호스팅되는 독립 실행형 Node.js 웹앱입니다.
  • API 게이트웨이는 요청을 백 엔드 서비스 앱으로 라우팅합니다.
  • 백 엔드 앱은 Spring Boot로 빌드됩니다.
  • 각 백 엔드 앱은 HyperSQL 데이터베이스를 영구 저장소로 사용합니다.
  • 앱은 서비스 레지스트리, 구성 서버, 관리 서버를 포함하여 Azure Container Apps에서 관리 Java 구성 요소를 사용합니다.
  • 구성 서버는 Git 리포지토리에서 데이터를 읽습니다.
  • Log Analytics 작업 영역은 서버 데이터를 기록합니다.

이 자습서에서는 다음을 수행합니다.

  • 구성 서버, Eureka 서버, 관리 서버, 관리 구성 요소 만들기
  • 일련의 마이크로 서비스 앱 만들기
  • 마이크로 서비스 앱에 서버 구성 요소 바인딩
  • 앱 컬렉션 배포
  • 배포된 앱 검토

이 문서의 끝부분에는 3개의 다른 Java 구성 요소와 함께 작동하도록 구성된 웹 애플리케이션 1개와 백 엔드 애플리케이션 3개를 배포합니다. 그런 다음 Azure Portal을 통해 각 구성 요소를 관리할 수 있습니다.

필수 구성 요소

  • Azure 계정: Azure 계정이 없는 경우 무료로 계정을 만드세요. 이 빠른 시작을 사용하려면 Azure 구독에 대한 기여자 또는 소유자 권한이 필요합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
  • Azure CLI: Azure CLI를 설치합니다.
  • Azure Container Apps CLI 확장. 버전 0.3.47 이상을 사용합니다. az extension add --name containerapp --upgrade --allow-preview 명령을 사용하여 최신 버전을 설치하세요.

설정

환경 변수, 리소스 그룹, Azure Container Apps 환경을 만들려면 다음 단계를 따르세요.

  1. 환경 변수는 사용자 지정 값을 포함하므로 다음 명령을 실행하기 전에 <>로 둘러싸인 자리 표시자 값을 사용자 지정 값으로 변경합니다.

    export RESOURCE_GROUP=<RESOURCE_GROUP>
    export LOCATION=<LOCATION>
    export CONTAINER_APP_ENVIRONMENT=<CONTAINER_APPS_ENVIRONMENT>
    
  2. 이제 마이크로 서비스 앱의 설정을 포함하는 더 많은 환경 변수를 만듭니다. 이러한 값은 마이크로 서비스를 배포하는 데 사용하는 Java 구성 요소 및 Azure Container Apps의 이름과 구성을 정의하는 데 사용됩니다. 다음 명령을 사용하여 이러한 환경 변수를 만듭니다.

    export CONFIG_SERVER_COMPONENT=configserver
    export ADMIN_SERVER_COMPONENT=admin
    export EUREKA_SERVER_COMPONENT=eureka
    export CONFIG_SERVER_URI=https://github.com/spring-petclinic/spring-petclinic-microservices-config.git
    export CUSTOMERS_SERVICE=customers-service
    export VETS_SERVICE=vets-service
    export VISITS_SERVICE=visits-service
    export API_GATEWAY=api-gateway
    export CUSTOMERS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-customers-service
    export VETS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-vets-service
    export VISITS_SERVICE_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-visits-service
    export API_GATEWAY_IMAGE=ghcr.io/azure-samples/javaaccelerator/spring-petclinic-api-gateway
    
  3. 다음 명령을 사용하여 Azure CLI에 로그인하고 활성 구독을 선택합니다.

    az login
    
  4. 다음 명령을 사용하여 Azure 서비스를 구성하는 리소스 그룹을 만듭니다.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION
    
  5. 다음 명령을 사용하여 Java 구성 요소와 컨테이너 앱을 모두 호스팅하는 Azure Container Apps 환경을 만듭니다.

    az containerapp env create \
        --resource-group $RESOURCE_GROUP \
        --name $CONTAINER_APP_ENVIRONMENT \
        --location $LOCATION
    

Java 구성 요소 만들기

이제 앱을 지원하는 다음 Java 구성 요소를 만듭니다.

  • Config Server. 마이크로 서비스 앱에 대한 구성 설정을 관리하는 데 사용됩니다.
  • Eureka 서버. 서비스 레지스트리와 검색을 관리하는 데 사용됩니다.
  • 관리 서버. 마이크로 서비스 앱의 상태와 메트릭을 모니터링하고 관리하는 데 사용됩니다.

이러한 서버 구성 요소를 만들려면 다음 단계를 따르세요.

  1. 다음 명령을 사용하여 Java 구성 요소에 대한 구성 서버를 만듭니다.

    az containerapp env java-component config-server-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $CONFIG_SERVER_COMPONENT \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --configuration spring.cloud.config.server.git.uri=$CONFIG_SERVER_URI
    
  2. 다음 명령을 사용하여 Java 구성 요소에 대한 Eureka 서버를 만듭니다.

    az containerapp env java-component eureka-server-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $EUREKA_SERVER_COMPONENT
        --environment $CONTAINER_APP_ENVIRONMENT \
    
  3. 다음 명령을 사용하여 Java 구성 요소에 대한 관리 서버를 만듭니다.

    az containerapp env java-component admin-for-spring create \
        --resource-group $RESOURCE_GROUP \
        --name $ADMIN_SERVER_COMPONENT
        --environment $CONTAINER_APP_ENVIRONMENT \
    

마이크로 서비스 앱 배포

미리 빌드된 컨테이너 이미지를 사용하여 Azure Container Apps에 Java 마이크로 서비스 앱을 배포하려면 다음 단계를 따르세요.

참고

이 문서에서는 Spring Petclinic 마이크로 서비스 앱에 일련의 빌드된 이미지를 사용합니다. 샘플 코드를 사용자 지정하고 사용자 고유의 이미지를 사용할 수도 있습니다. 자세한 내용은 azure-container-apps-java-samples GitHub 리포지토리를 참조하세요.

  1. 다음 명령을 사용하여 고객 데이터 앱을 만듭니다.

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $CUSTOMERS_SERVICE_IMAGE
    
  2. 다음 명령을 사용하여 수의사 앱을 만듭니다.

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $VETS_SERVICE_IMAGE
    
  3. 다음 명령을 사용하여 방문 앱을 만듭니다.

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $VISITS_SERVICE_IMAGE
    
  4. 다음 명령을 사용하여 API 게이트웨이 앱을 만듭니다.

    az containerapp create \
        --resource-group $RESOURCE_GROUP \
        --name $API_GATEWAY \
        --environment $CONTAINER_APP_ENVIRONMENT \
        --image $API_GATEWAY_IMAGE \
        --ingress external \
        --target-port 8080 \
        --query properties.configuration.ingress.fqdn 
    

Java 구성 요소에 컨테이너 앱 바인딩

다음으로 Java 구성 요소를 컨테이너 앱에 바인딩합니다. 이 섹션에서 만드는 바인딩에는 다음과 같은 기능이 있습니다.

  • 시작 시 관리 구성 서버에서 각 앱에 구성 데이터를 삽입합니다.
  • 서비스 검색을 위해 관리 Eureka 서버에 앱을 등록합니다.
  • 관리 서버에서 앱을 모니터링할 수 있도록 설정합니다.

다음 단계를 따라 각 앱에 대한 바인딩을 만들려면 containerapp update 명령을 사용합니다.

  1. 다음 명령을 사용하여 고객 데이터 앱에 바인딩을 추가합니다.

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $CUSTOMERS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  2. 다음 명령을 사용하여 수의사 서비스에 바인딩을 추가합니다.

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VETS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  3. 다음 명령을 사용하여 방문 서비스에 바인딩을 추가합니다.

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $VISITS_SERVICE \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT
    
  4. API 게이트웨이에 바인딩을 추가합니다. 다음 명령을 사용하여 프런트 엔드 애플리케이션의 URL을 반환한 다음 브라우저에서 이 위치를 엽니다.

    az containerapp update \
        --resource-group $RESOURCE_GROUP \
        --name $API_GATEWAY \
        --bind $CONFIG_SERVER_COMPONENT $EUREKA_SERVER_COMPONENT $ADMIN_SERVER_COMPONENT \
        --query properties.configuration.ingress.fqdn 
    

앱 상태 확인

다음 단계를 따라 앱 상태를 확인합니다.

  1. API 게이트웨이의 az containerapp update 명령에서 반환된 URL을 사용하여 브라우저에서 프런트 엔드 애플리케이션을 봅니다. 애플리케이션은 다음 스크린샷과 유사해야 합니다.

    반려동물 클리닉 애플리케이션 홈페이지의 스크린샷

  2. 다음 단계를 사용하여 Eureka 서버 대시보드를 봅니다.

    중요

    Eureka 서버 대시보드 및 Spring용 관리자 대시보드를 보려면 관리 환경 리소스의 계정에 할당된 Microsoft.App/managedEnvironments/write 이상의 역할이 있어야 합니다. 리소스에 Owner 또는 Contributor 역할을 명시적으로 할당할 수 있습니다. 단계에 따라 사용자 지정 역할 정의를 만들고 이를 계정에 할당할 수도 있습니다.

    1. 다음 명령을 실행하여 대시보드 URL을 반환합니다.

      az containerapp env java-component eureka-server-for-spring show \
          --resource-group $RESOURCE_GROUP \
          --name $EUREKA_SERVER_COMPONENT \
          --environment $CONTAINER_APP_ENVIRONMENT \
          --query properties.ingress.fqdn
      
    2. 브라우저에서 URL을 엽니다. 다음 스크린샷과 유사한 애플리케이션이 표시됩니다.

      반려동물 클리닉 애플리케이션 Eureka 서버의 스크린샷

  3. 다음 단계를 따라 Spring용 관리자 대시보드를 봅니다.

    1. 다음 명령을 사용하여 대시보드 URL을 반환합니다.

      az containerapp env java-component admin-for-spring show \
          --resource-group $RESOURCE_GROUP \
          --name $ADMIN_SERVER_COMPONENT \
          --environment $CONTAINER_APP_ENVIRONMENT \
          --query properties.ingress.fqdn
      
    2. 브라우저에서 URL을 엽니다. 다음 스크린샷과 유사한 애플리케이션이 표시됩니다.

      4가지 서비스에 대한 버전 정보와 함께 5가지 서비스를 보여 주는 반려동물 클리닉 관리자 대시보드의 스크린샷

선택 사항: Java 구성 요소 구성

구성 섹션을 사용하여 Azure Portal을 통해 이 빠른 시작에서 만든 Java 구성 요소를 구성할 수 있습니다.

속성 이름 및 값 텍스트 상자와 속성을 삭제하는 기능을 보여 주는 구성 섹션의 스크린샷

이 빠른 시작에서 만든 3가지 Java 구성 요소를 구성하는 방법에 대한 자세한 내용은 다음 링크를 참조하세요.

리소스 정리

이 빠른 시작에서 만든 리소스는 Azure 청구에 영향을 줍니다. 이러한 서비스를 장기적으로 사용하지 않을 경우 다음 명령을 사용하여 이 빠른 시작에서 만든 모든 항목을 제거합니다.

az group delete --resource-group $RESOURCE_GROUP