Azure에서 Java 애플리케이션 호스팅 옵션 비교

Azure Spring Apps
Azure App Service
AKS(Azure Kubernetes Service)
Azure Virtual Machines

Azure는 팀에서 Java 애플리케이션을 빌드하고 배포할 수 있는 다양한 옵션을 제공합니다. 이 문서에서는 Azure의 Java에 대한 일반 시나리오를 다루며 높은 수준의 계획 제안 및 고려 사항을 제공합니다.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat, Flame 로고는 미국 및/또는 기타 국가에서 Apache Software Foundation의 등록 상표 또는 상표입니다. 이러한 표시의 사용은 Apache Software Foundation에 의한 보증을 암시하지 않습니다.

플랫폼

Java 애플리케이션의 클라우드 시나리오를 선택하기 전에 해당 플랫폼을 식별하세요. 대부분의 Java 애플리케이션은 다음 플랫폼 중 하나를 사용합니다.

Spring Boot JAR 애플리케이션

Spring Boot JAR 애플리케이션은 일반적으로 명령줄에서 직접 호출됩니다. 웹 요청을 처리합니다. HTTP 요청을 처리하기 위해 애플리케이션 서버에 의존하는 대신 이러한 애플리케이션은 HTTP 통신 및 기타 종속성을 애플리케이션 패키지에 직접 통합합니다. 이러한 애플리케이션은 Spring Boot, Dropwizard, Micronaut, MicroProfile, Vert.x 등과 같은 프레임워크를 사용하여 빌드되는 경우가 많습니다.

이러한 애플리케이션은 JAR 파일로 알려진 .jar 확장명의 보관 파일로 패키지됩니다.

Spring Cloud 애플리케이션

마이크로 서비스 아키텍처 스타일은 단일 애플리케이션을 소규모 서비스 제품군으로 개발하는 접근 방식입니다. 각 서비스는 자체 프로세스에서 실행되며 종종 HTTP 리소스 API와 같은 간단한 메커니즘을 사용하여 통신합니다. 이러한 서비스는 비즈니스 기능을 중심으로 구축됩니다.

자동화된 배포 기계는 이러한 마이크로 서비스를 독립적으로 배포합니다. 최소한의 중앙 집중식으로 관리되고, 다양한 프로그래밍 언어로 작성되며, 다른 데이터 스토리지 기술을 사용할 수 있습니다. 이러한 서비스는 Spring Cloud와 같은 프레임워크를 사용하여 빌드되는 경우가 많습니다.

이러한 서비스는 JAR 파일로 여러 애플리케이션에 패키지됩니다.

웹 애플리케이션

웹 애플리케이션은 서블릿 컨테이너 내에서 실행됩니다. 일부는 서블릿 API를 직접 사용하는 반면, 다른 일부는 Apache Struts, Spring MVC, JavaServer Faces 등과 같은 서블릿 API를 캡슐화하는 다른 프레임워크를 사용합니다.

웹 애플리케이션은 WAR 파일로 알려진 .war 확장명의 보관 파일로 패키지됩니다.

Jakarta EE 애플리케이션

Jakarta EE(Jakarta Enterprise Edition) 애플리케이션은 웹 애플리케이션의 요소 중 일부, 전부를 포함하거나 또는 어느 것도 포함할 수 없습니다. 또한 Jakarta EE 사양에 정의한 대로 더 많은 구성 요소를 포함하고 사용할 수 있습니다. Jakarta EE 애플리케이션은 이전에 Java EE 애플리케이션 또는 J2EE 애플리케이션으로 알려져 있었습니다.

Jakarta EE 애플리케이션은 WAR 파일 또는 EAR 파일이라고 알려진 .ear 확장명이 있는 보관 파일로 패키지할 수 있습니다.

Jakarta EE 애플리케이션은 Jakarta EE와 호환되는 애플리케이션 서버에 배포해야 합니다. WebLogic, WebSphere, WildFly, GlassFish, Payara를 예로 들 수 있습니다.

Java EE 사양에서 제공하는 기능만 사용하는 애플리케이션은 호환되는 애플리케이션 서버에서 다른 애플리케이션 서버로 마이그레이션할 수 있습니다. 애플리케이션이 특정 애플리케이션 서버에 종속된 경우 해당 애플리케이션 서버를 호스팅할 수 있는 Azure 서비스 대상을 선택해야 할 수 있습니다.

플랫폼 옵션

다음 테이블을 사용하여 애플리케이션 유형의 잠재적 플랫폼을 식별합니다.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Spring Boot/JAR 애플리케이션
Spring Cloud 애플리케이션
웹 애플리케이션
Jakarta EE 애플리케이션
Azure 지역 가용성 세부 정보 세부 정보 세부 정보 세부 정보 세부 정보 세부 정보 세부 정보

AKS(Azure Container Service) 및 Virtual Machines는 모든 애플리케이션 유형을 지원하지만, 다음 섹션에 설명된 것처럼 팀에서 더 많은 책임을 져야 합니다.

지원 가능성

플랫폼 선택 외에도 최신 Java 애플리케이션에는 다음과 같은 다른 지원 가능성 요구 사항이 있을 수 있습니다.

Batch 또는 예약된 작업

요청 또는 사용자 입력을 기다리는 대신 일부 애플리케이션은 잠시 실행하고, 특정 워크로드를 실행한 다음 종료합니다. 경우에 따라 이러한 작업은 한 번 또는 정기적으로 예약된 간격으로 실행되어야 합니다. 온-프레미스에서 이러한 작업은 서버의 Cron 테이블에서 호출되는 경우가 많습니다.

이러한 애플리케이션은 JAR 파일로 패키지됩니다.

참고

애플리케이션에서 스케줄러(예: Spring Batch 또는 Quartz)를 사용하여 예약된 작업을 실행하는 경우 이러한 작업은 애플리케이션 외부에서 실행하는 것이 좋습니다. 애플리케이션이 클라우드에서 여러 인스턴스로 확장되는 경우 동일한 작업이 두 번 이상 실행될 수 있습니다. 예약 메커니즘에서 호스트의 현지 표준 시간대를 사용하는 경우 지역 간에 애플리케이션을 확장할 때 원치 않는 동작이 발생할 수 있습니다.

가상 네트워크 통합

Java 애플리케이션이 가상 네트워크에 배포되면 가상 네트워크 외부의 서비스에 대한 아웃바운드 종속성이 있습니다. 관리 및 작업의 경우 프로젝트는 특정 포트 및 정규화된 도메인 이름에 액세스할 수 있어야 합니다. Azure Virtual Network를 사용하면 다양한 Azure 리소스를 인터넷이 아닌 라우팅 가능한 네트워크에 배치할 수 있습니다. 가상 네트워크 통합 기능을 사용하면 애플리케이션이 가상 네트워크의 리소스에 또는 가상 네트워크를 통해 리소스에 액세스할 수 있습니다. 가상 네트워크 통합을 사용하면 애플리케이션에 비공개적으로 액세스할 수 없습니다.

서버리스 개발 모델

서버리스는 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있는 클라우드 네이티브 개발 모델입니다. 서버리스 애플리케이션에서는 클라우드 서비스 공급자가 코드 실행에 필요한 인프라를 자동으로 프로비저닝, 스케일링 및 관리합니다. 서버는 여전히 서버리스 모델에 포함됩니다. 애플리케이션 개발에서 추상화되었습니다.

컨테이너화

컨테이너화는 라이브러리, 프레임워크, 기타 종속성과 같은 필요한 모든 구성 요소와 소프트웨어 코드를 함께 패키징하는 것입니다. 애플리케이션은 자체 컨테이너에서 격리됩니다.

CI/CD

CI/CD(연속 통합 및 지속적인 업데이트)는 애플리케이션 개발 단계에 자동화를 도입하여 고객에게 애플리케이션을 자주 제공하는 방법입니다. CI/CD의 주요 개념은 연속 통합, 지속적인 업데이트, 지속적인 배포입니다. 모든 Azure 선택 항목은 대부분의 CI/CD 도구를 지원합니다. 예를 들어 Azure Pipelines 또는 Jenkins와 같은 솔루션을 사용할 수 있습니다.

오픈 소스 검색 엔진

검색은 모든 애플리케이션의 필수적인 부분입니다. 속도, 성능, 고가용성이 중요한 경우 테라바이트 및 페타바이트 규모의 데이터를 검색하는 것이 어려울 수도 있습니다. Azure에서 Java 애플리케이션을 호스트할 때 관련 Solr 및 Elasticsearch 인스턴스를 호스트하도록 계획합니다. 또는 Azure Cognitive Search를 마이그레이션하는 것이 좋습니다.

빅 데이터 도구

빅 데이터 도구를 사용하면 소프트웨어 시스템 간의 데이터 흐름을 자동화할 수 있습니다. 시스템 조정 논리와 함께 확장성 있고 강력하며 간소화된 데이터 라우팅 그래프를 지원합니다. 라이브 데이터 흐름 파이프라인을 구축하고 애플리케이션을 스트리밍하는 데 활용됩니다. Azure의 NifiApache Kafka가 요구 사항에 적합한 방법을 알아봅니다.

지원 가능성 옵션

다음 테이블을 사용하여 애플리케이션 유형의 잠재적 옵션을 식별합니다. AKS 및 Virtual Machines는 모든 애플리케이션 유형을 지원하지만 팀에서 더 많은 책임을 져야 합니다.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Batch 또는 예약된 작업
가상 네트워크 통합
서버를 사용하지 않음
컨테이너화
Azure 지역 가용성 세부 정보 세부 정보 세부 정보 세부 정보 세부 정보 세부 정보 세부 정보

또한 이 의사 결정 트리를 참조하세요.

Azure 서비스의 Java에 대한 의사 결정 트리를 보여 주는 다이어그램

이 다이어그램의 Visio 파일을 다운로드하세요.

Java 애플리케이션 빌드 또는 마이그레이션

Java 애플리케이션을 빌드하거나 마이그레이션하려면 애플리케이션의 Java 플랫폼을 식별합니다. 인기 있는 플랫폼으로는 Java SE, Jakarta EE, MicroProfile이 있습니다.

Java SE

Java Platform, Java SE(Standard Edition)는 데스크톱 및 서버 환경을 위한 이식 가능한 코드의 개발 및 배포를 위한 컴퓨팅 플랫폼입니다. Java SE를 기반으로 구축된 인기 있는 프로젝트에는 Spring Boot, Spring Cloud, Spring Framework, Apache Tomcat이 포함됩니다.

Jakarta EE

Jakarta EE는 클라우드 네이티브 엔터프라이즈 Java의 오픈 소스 미래입니다. 분산 컴퓨팅 및 웹 서비스와 같은 엔터프라이즈 기능으로 Java SE를 확장하는 일련의 사양입니다. Jakarta EE 애플리케이션은 참조 런타임을 실행합니다. 이러한 런타임은 마이크로 서비스 또는 애플리케이션 서버일 수 있습니다. 애플리케이션이 배포하는 구성 요소의 트랜잭션, 보안, 확장성, 동시성, 관리를 처리합니다.

MicroProfile

MicroProfile 프로젝트는 개발자가 Enterprise Java 클라우드 네이티브 마이크로 서비스를 구축하는 데 도움이 되도록 설계된 사양 컬렉션을 제공합니다. QuarkusOpen Liberty는 MicroProfile의 인기 있는 구현입니다.

요약 빌드 또는 마이그레이션

다음 표에서는 애플리케이션 유형 및 Azure 서비스별 빌드 또는 마이그레이션 정보를 제공합니다.

형식 Java SE MicroProfile JarkartaSE
Virtual Machine IaaS
VMware Tanzu IaaS
Azure Kubernetes Service 컨테이너
Red Hat OpenShift 컨테이너
Azure Container App PaaS
JBoss EAP PaaS App Service
Apache Tomcat PaaS App Service
Java SE PaaS App Service
Azure Spring Apps PaaS

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계