솔루션 아이디어
이 문서는 솔루션 아이디어 설명입니다. 클라우드 설계자는 이 지침을 사용하여 이 아키텍처의 일반적인 구현을 위한 주요 구성 요소를 시각화할 수 있습니다. 이 문서를 시작점으로 사용하여 워크로드의 특정 요구 사항에 맞는 잘 설계된 솔루션을 디자인할 수 있습니다.
이 솔루션은 기존 웹앱을 App Service에 배포된 컨테이너로 마이그레이션하므로 컨테이너 오케스트레이션 관리에 대해 걱정하지 않고 컨테이너를 구성하는 데 집중할 수 있습니다.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
데이터 흐름
- 개발자가 기존 웹 애플리케이션을 컨테이너로 변환합니다.
- 개발자는 컨테이너 이미지를 다음과 같이 게시합니다.
- 프라이빗 레지스트리 또는 Docker Hub
- 또는 Azure Container Registry
- App Service는 다음을 사용하여 이미지를 끌어온다.
- 프라이빗 레지스트리 또는 Docker Hub(사용되는 경우)에 대한 자격 증명
- 또는 Microsoft Entra 보안 주체를 사용하여 Azure Container Registry에 액세스하는 관리 ID입니다.
- 서비스 커넥터가 다른 Azure 리소스에 액세스합니다.
- 개발자가 새 이미지를 컨테이너 레지스트리에 푸시하면 App Service 업데이트가 트리거됩니다(지속적인 배포를 사용하도록 설정된 경우).
구성 요소
Web App for Containers: App Service를 사용하면 Windows 및 Linux에서 컨테이너화된 웹 앱을 배포하고 실행할 수 있습니다. Web App for Containers는 완전 관리형 플랫폼을 활용할 수 있는 쉬운 진입로를 개발자(앱과 앱의 모든 종속성을 포함하는 배포 가능한 단일 아티팩트도 원하는)에게 제공합니다. 또 다른 대상 시나리오는 Azure App Service 플랫폼에 기본 제공되는 기본값 이외의 사용자 지정 프레임워크 또는 버전으로 작업하려는 개발자입니다. Azure App Service의 컨테이너화된 웹앱은 필요에 따라 크기를 조정할 수 있으며 Docker Hub, Azure Container Registry 및 GitHub와 함께 간소화된 CI/CD 워크플로를 사용할 수 있습니다.
Azure Container Registry: 모든 OCI 아티팩트가 지원되는 Docker 및 OCI(Open Container Initiative) 이미지의 레지스트리입니다. App Service, Machine Learning 및 Batch와 같은 Azure 서비스에서 컨테이너 이미지를 사용합니다. 예를 들어 웹앱에 대해 Web App for Containers를 구성할 때 Azure Container Registry에서 컨테이너 이미지를 지정할 수 있습니다.
Azure Cosmos DB: 확장성 있는 고성능 애플리케이션을 빌드하고 현대화하기 위한 완전 관리형 NoSQL 데이터베이스 서비스입니다. Azure Cosmos DB는 Azure Functions, IoT Hub, AKS(Azure Kubernetes Service), App Service 등을 비롯한 주요 Azure 서비스와 통합됩니다. 네이티브 Azure Cosmos DB for NoSQL, Azure Cosmos DB for MongoDB, Azure Cosmos DB for Apache Cassandra, Azure Cosmos DB for Apache Gremlin, Azure Cosmos DB for Table을 비롯한 여러 데이터베이스 API 중에서 선택할 수 있습니다.
Azure SQL Database: 인텔리전스가 내장된 완전 관리형 관계형 데이터베이스입니다. Azure SQL Database는 가장 일반적인 언어에 대한 드라이버 지원을 통해 로컬에서 또는 인기 있는 플랫폼 및 프레임워크의 클라우드에서 애플리케이션을 빌드하는 데 유용합니다. SQL Database를 사용하면 Azure App Service에서 실행되는 웹 사이트에 대한 기본 지원을 통해 개발을 간소화할 수 있습니다.
Azure Storage: Azure Storage는 지속성이 뛰어나고 가용성이 높으며 대규모 확장이 가능한 클라우드 스토리지 솔루션을 제공하며 개체, 파일, 디스크, 큐 및 테이블 스토리지를 포함합니다. Azure Storage에는 웹 사이트의 요구에 맞게 개체, 블록 및 파일 스토리지에 대한 서비스가 포함되어 있습니다. 예를 들어 웹 사이트는 사진 및 비디오와 같은 웹 사이트 미디어를 위한 확장 가능하고 안전한 블록 스토리지용으로 Azure Blob Storage를 쉽게 사용할 수 있습니다.
Azure Monitor: Application Insights는 상태 및 성능 모니터링과 진단을 제공합니다. Azure Monitor는 Web App for Containers(App Service)와 함께 사용하여 연결 수 및 요청 수와 같은 웹 사이트 메트릭을 모니터링하여 HTTP 상태 코드를 생성할 수 있습니다.
Azure 서비스 커넥터: 서비스 커넥터는 Azure 컴퓨팅 서비스를 다른 지원 서비스에 연결하는 데 유용합니다. 예를 들어 Azure App Service와 Azure Database for MySQL 또는 PostgreSQL, Azure Storage, Azure Key Vault 간에 서비스 커넥터를 사용합니다. 지원되는 서비스의 전체 목록은 서비스 커넥터에서 서비스가 지원됨을 참조하세요.
시나리오 정보
기존 웹 애플리케이션을 컨테이너로 쉽게 마이그레이션하고 Azure App Service의 Web App for Containers에서 컨테이너화된 웹앱을 실행합니다. Web App for Containers를 사용하면 기본 컨테이너 오케스트레이터를 관리하고 유지하는 것에 대해 걱정하지 않고 컨테이너를 구성하는 데 집중할 수 있습니다. 웹앱을 빌드할 때 Web App for Containers는 컨테이너를 사용하여 첫 번째 단계를 수행하는 데 적합한 옵션입니다. 컨테이너는 스토리지 및 데이터베이스 서비스와 같은 다른 Azure 리소스를 쉽게 통합할 수 있습니다.
기존 웹앱을 Azure 리소스와 통합하는 경우 Azure 서비스에 대한 암호 없는 연결을 활용할 수도 있습니다. 암호 없는 연결은 여러 Azure 서비스에 걸쳐 있는 언어에 구애받지 않는 기능입니다. 암호 없는 연결을 사용하는 경우 웹앱은 암호를 회전할 필요 없이 Azure 기반 서비스에 연결합니다. 구성만 있으면 됩니다. 새 코드는 필요하지 않습니다.
잠재적인 사용 사례
이 솔루션 아이디어는 현재 웹 애플리케이션을 Azure에서 실행되는 컨테이너로 마이그레이션하는 데 적합합니다. 이 솔루션 아이디어는 다음과 같은 경우 웹 사이트를 만드는 데 사용할 수 있습니다.
코드 배포 웹 사이트를 만드는 데 사용되는 기존 프로그래밍 경험을 사용하여 컨테이너 배포 웹 사이트를 만듭니다. 기존 웹앱을 App Service의 컨테이너로 리프트 앤 시프트합니다.
Visual Studio, Visual Studio Code, Azure CLI 및 Azure Cloud Shell과 같은 도구를 사용하여 개발 및 배포를 간소화했습니다.
개발에서 프로덕션 및 다양한 클라우드에 이르기까지 다양한 환경에 걸친 이식성. 프로덕션용으로 배포된 플랫폼과 다른 플랫폼의 로컬에서 테스트할 수 있습니다.
App Service의 확장성은 필요에 따라 사용되는 작업자 수를 확장할 수 있음을 의미합니다.
향후 웹 사이트에 대한 모듈성은 App Service에서 또는 Azure Container Apps 및 Azure Kubernetes Service와 같은 다른 서비스에서 작동합니다. Web App for Containers는 컨테이너로 이동하기 좋은 첫 번째 단계가 될 수 있습니다.
Web App for Containers에 배포된 컨테이너는 CI/CD(연속 통합 및 지속적인 업데이트)가 가능합니다. CI/CD 기능을 사용하면 업데이트를 더 빠르게 제공할 수 있습니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- Marc Gelormino | 콘텐츠 개발자
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.
다음 단계
- App Service를 사용하여 컨테이너화된 웹앱 배포 및 실행
- Azure Container Registry에서 컨테이너 이미지 관리
- Web App for Containers 및 Azure App Service on Linux 개요
- 다른 Azure 컨테이너 옵션과 Container Apps 비교
- Azure 서비스에 대한 암호 없는 연결
App Service에서 컨테이너의 언어 배포 예시:
- Azure App Service에 컨테이너화된 Python 웹앱 배포
- Visual Studio Code를 사용하여 Express.js Azure 앱 Service에 배포
- Visual Studio를 사용하여 Azure App Service에 ASP.NET Core 컨테이너 배포
관련 참고 자료
관련 아키텍처 지침: