솔루션 비교
Java 애플리케이션의 가장 일반적인 배포 유형을 설명했습니다. 이제 필요한 배포 유형에 가장 효과적인 Azure 서비스가 무엇인지 살펴보겠습니다.
Azure Container Apps
Azure Container Apps는 Docker 컨테이너를 실행하는 관리되는 서비스입니다.
Azure Container Apps는 Docker 이미지(Tomcat, Spring Boot 및 Quarkus 애플리케이션 포함)로 패키지된 경우 모든 Java 애플리케이션을 실행할 수 있습니다. 이러한 이미지를 빌드하고 관리하는 것은 사용자의 책임입니다(예: GitHub Actions 사용). 이렇게 하면 많은 유연성을 제공하지만 기본 테넌트가 필요합니다.
비용 효율적이고 확장 가능한 솔루션으로, 중소형 워크로드에 적합한 옵션입니다.
따라서 컨테이너 기반 Java 모놀리식 애플리케이션을 실행하기 위해 Azure Container Apps가 가장 좋은 옵션입니다.
Azure App Service
Azure App Service는 Azure에서 제공하는 PaaS(Platform as a Service) 솔루션입니다. 자동 크기 조정 또는 모니터링뿐만 아니라 자동 OS 및 JVM(Java Virtual Machine) 업데이트 및 패치를 사용하여 Java 웹 애플리케이션을 실행하기 위한 사용하기 쉬운 서비스를 제공합니다.
App Service는 실행 가능한 JAR 파일을 실행할 수 있으므로 간단한 Java 모놀리식 애플리케이션을 실행하기 위한 Azure Container Apps 대신 사용할 수 있습니다.
Apache Tomcat 또는 Red Hat JBoss와 같은 인기 있는 애플리케이션 서버 위에 WAR 애플리케이션을 배포할 수도 있습니다. 이렇게 하면 Azure에서 Jakarta EE 애플리케이션을 실행하기 위한 최상의 솔루션이 됩니다.
Azure 기능
Azure Functions는 Azure에서 제공하는 서버리스 플랫폼으로, Java 워크로드 실행을 지원합니다.
Azure Functions에서 Java 애플리케이션을 실행하려면 일반적으로 약간의 구성과 설정이 필요합니다. 서버리스 함수의 특성상 수명이 짧기 때문에(일반적으로 몇 분에 불과) 기존에 사용하던 일부 서비스가 Azure App Service만큼 효율적이거나 실용적이지 않을 수 있습니다.
따라서 Azure Functions는 높은 스케일링 성능이 필요한 애플리케이션에 맞게 조정되었습니다. 비용 절감을 위해 정기적으로 중지할 수도 있고, 높은 부하를 처리하기 위해 스케일 업할 수도 있습니다.
Azure Spring Apps
Azure Spring Apps는 Spring Boot 마이크로 서비스를 실행하기 위한 PaaS 솔루션을 제공하는 고유한 Azure 서비스입니다. Spring Cloud는 서비스 레지스트리 또는 구성 서버와 같은 많은 도구를 제공합니다. 또한 Spring Boot를 기반으로 하는 마이크로 서비스 아키텍처의 사용을 훨씬 간소화하는 특정 자동 스케일링 및 보안 메커니즘을 제공합니다.
Spring Cloud 제품은 Spring Framework를 빌드하는 Microsoft와 Broadcom이 공동으로 만들고 관리합니다. Spring Cloud는 OS 및 JVM 업데이트와 패치(예: Azure App Service)뿐 아니라 고급 Spring 서비스도 지원합니다.
Azure Spring Apps 서비스를 사용하여 Spring Boot 모놀리식 애플리케이션이나 Steeltoe를 사용하는 .NET 마이크로 서비스와 같은 다른 워크로드도 실행할 수 있지만, 이 서비스는 주로 Spring Boot 마이크로 서비스를 실행하는 데 사용됩니다.
Azure Kubernetes Service
Azure Kubernetes Service(AKS)는 Azure에서 제공하는 안전한 관리형 Kubernetes 솔루션입니다. 모든 Docker 이미지를 실행할 수 있으며, 전체 Kubernetes 에코시스템을 활용합니다. AKS는 Java 등의 언어로 클라우드 네이티브 애플리케이션을 제공하려는 경우에 효과적입니다.
Azure Kubernetes Service는 다른 유형의 워크로드가 있거나 환경을 정밀하게 제어하려는 경우에 적합한 솔루션입니다. AKS는 Java 워크로드도 잘 실행하지만 사용자가 Docker 이미지를 빌드하고 유지 관리해야 합니다.
Azure VM
Azure에서 VM을 실행하는 경우 유연성이 극대화되고 다양한 옵션이 제공됩니다. 일반적으로 Windows와 기본 Linux 배포 등 여러 운영 체제 중에서 선택할 수 있습니다. 사용자 고유의 소프트웨어를 가져오거나 제공된 이미지 중 일부를 사용할 수 있습니다.
특히 Java의 경우, 주로 다음과 같은 작업에 VM을 사용합니다.
- Windows 또는 Linux에 수동으로 Java 웹 애플리케이션 설치 및 실행
- Docker 또는 AKS를 설치하고 실행하여 Java 웹 애플리케이션이 포함된 이미지 실행
- Oracle WebLogic 등의 지원되는 제품 중 하나를 사용하여 VM에서 Java 웹 애플리케이션 실행
Azure VM을 사용하는 경우 모든 권한이 있으므로 설치 및 실행할 수 있는 항목에 대한 제한이 없습니다. 그러나 VM의 주요 단점은 사용자가 유지 관리하고 보호해야 한다는 것입니다. VM의 경우 유지 관리 작업이 사용자 책임입니다.