Java용 신뢰할 수 있는 웹앱 패턴 - 구현 계획

Azure App Service
Azure Cache for Redis
Azure Database for PostgreSQL
Java용 Microsoft 인증 라이브러리

이 문서에서는 신뢰할 수 있는 웹앱 패턴의 구현을 계획하는 방법을 보여 줍니다. 신뢰할 수 있는 웹앱 패턴은 클라우드로 마이그레이션할 때 웹앱을 수정(다시 배치)하는 방법을 정의하는 일련의 원칙 및 구현 기술 입니다. 클라우드에서 성공하기 위해 수행해야 하는 최소한의 코드 업데이트에 중점을 둡니다.

이 지침의 적용을 용이하게 하기 위해 배포할 수 있는 신뢰할 수 있는 웹앱 패턴의 참조 구현 이 있습니다.

참조 구현의 아키텍처를 보여 주는 다이어그램참조 구현 아키텍처의 아키텍처입니다. 이 아키텍처의 Visio 파일을 다운로드합니다.

다음 지침에서는 참조 구현을 전체 예제로 사용합니다. 신뢰할 수 있는 웹앱 패턴의 구현을 계획하려면 다음 단계를 수행합니다.

비즈니스 목표 정의

클라우드 컴퓨팅으로 전환하는 초기 단계는 비즈니스 목표를 명확히 하는 것입니다. 신뢰할 수 있는 웹앱 패턴은 웹 애플리케이션에 대한 즉각적인 목표와 향후 목표를 설정하는 것의 중요성을 강조합니다. 이러한 목표는 클라우드 서비스 선택 및 클라우드의 웹 애플리케이션 아키텍처에 영향을 줍니다.

예: 가상의 회사인 Contoso Fiber는 온-프레미스 CAMS(고객 계정 관리 시스템) 웹앱을 확장하여 다른 지역에 도달하려고 했습니다. 웹앱에 대한 증가하는 수요를 충족하기 위해 다음 목표를 설정했습니다.

  • 저렴한 고가용성 코드 변경 적용
  • 99.9%의 SLO(서비스 수준 목표)에 도달
  • DevOps 사례 채택
  • 비용 최적화 환경 만들기
  • 안정성 및 보안 향상

Contoso Fiber는 온-프레미스 인프라가 애플리케이션 크기를 조정하기 위한 비용 효율적인 솔루션이 아니라고 판단했습니다. 따라서 CAMS 웹 애플리케이션을 Azure로 마이그레이션하는 것이 즉각적이고 미래의 목표를 달성하는 가장 비용 효율적인 방법이라고 결정했습니다.

올바른 관리 서비스 선택

웹앱을 클라우드로 이동하는 경우 비즈니스 요구 사항을 충족하고 온-프레미스 웹앱의 현재 기능에 부합하는 Azure 서비스를 선택해야 합니다. 맞춤은 재배치 작업을 최소화하는 데 도움이 됩니다. 예를 들어 동일한 데이터베이스 엔진을 유지하고 기존 미들웨어 및 프레임워크를 지원할 수 있는 서비스를 사용합니다. 다음 섹션에서는 웹앱에 적합한 Azure 서비스를 선택하기 위한 지침을 제공합니다.

예: 클라우드로 이동하기 전에 Contoso Fiber의 CAMS 웹앱은 온-프레미스 모놀리식 Java 웹앱이었습니다. PostgreSQL 데이터베이스가 있는 Spring Boot 앱입니다. 웹앱은 기간 업무 지원 앱입니다. 그것은 직원을 향한 것입니다. Contoso Fiber 직원은 애플리케이션을 사용하여 고객의 지원 사례를 관리합니다. 온-프레미스 웹앱은 일반적인 문제를 겪고 있습니다. 이러한 과제에는 새로운 기능을 빌드 및 제공하는 확장된 타임라인, 부하가 높은 다른 애플리케이션 구성 요소의 크기를 조정하는 데 어려움이 있습니다.

애플리케이션 플랫폼

웹앱에 가장 적합한 애플리케이션 호스팅 플랫폼을 선택합니다. Azure에는 다양한 웹앱 요구 사항을 충족하는 다양한 컴퓨팅 옵션이 있습니다. 축소 옵션에 대한 도움말은 Azure 컴퓨팅 의사 결정 트리를 참조하세요.

예: Contoso Fiber는 다음과 같은 이유로 Azure 앱 Service를 애플리케이션 플랫폼으로 선택했습니다.

  • 자연스러운 진행. Contoso Fiber는 온-프레미스 서버에 Spring Boot jar 파일을 배포했으며 해당 배포 모델에 대한 재정의 양을 최소화하려고 했습니다. App Service는 Spring Boot 앱을 실행하기 위한 강력한 지원을 제공하며, Contoso Fiber가 App Service를 사용하기 위한 자연스러운 진행이었습니다. Azure Spring Apps는 이 앱의 매력적인 대안이기도 합니다. Contoso Fiber CAMS 웹앱이 Spring Boot 대신 Jakarta EE를 사용하는 경우 Azure Spring Apps가 더 적합합니다. 자세한 내용은 Azure Spring Apps란?Azure의 Java EE, Jakarta EE 및 MicroProfile을 참조하세요.

  • 높은 SLA. 프로덕션 환경에 대한 요구 사항을 충족하는 높은 SLA가 있습니다.

  • 관리 오버헤드를 줄입니다. 완전 관리형 호스팅 솔루션입니다.

  • 컨테이너화 기능. App Service는 Azure Container Registry와 같은 프라이빗 컨테이너 이미지 레지스트리에서 작동합니다. Contoso Fiber는 이러한 레지스트리를 사용하여 나중에 웹앱을 컨테이너화할 수 있습니다.

  • 자동 크기 조정. 웹앱은 사용자 트래픽에 따라 빠르게 확장, 축소, 축소 및 확장할 수 있습니다.

ID 관리

웹앱에 가장 적합한 ID 관리 솔루션을 선택합니다. 자세한 내용은 ID 관리 솔루션 및 인증 방법 비교를 참조하세요.

예: Contoso Fiber는 다음과 같은 이유로 Microsoft Entra ID를 선택했습니다.

  • 인증 및 권한 부여 직원의 인증 및 권한 부여를 처리합니다.

  • 확장성. 더 큰 시나리오를 지원하도록 확장됩니다.

  • 사용자 ID 컨트롤입니다. 직원은 기존 엔터프라이즈 ID를 사용할 수 있습니다.

  • 권한 부여 프로토콜에 대한 지원. 관리 ID에 대해 OAuth 2.0을 지원합니다.

데이터베이스

웹앱에 가장 적합한 데이터베이스를 선택합니다. 옵션 축소에 대한 도움말은 Azure 데이터 저장소 의사 결정 트리를 참조하세요.

예: Contoso Fiber는 다음과 같은 이유로 Azure Database for PostgreSQL 및 유연한 서버 옵션을 선택했습니다.

  • 신뢰성. 유연한 서버 배포 모델은 여러 가용성 영역에서 영역 중복 고가용성을 지원합니다. 이 구성 및 기본 동일한 Azure 지역 내의 다른 가용성 영역에 있는 웜 대기 서버에 연결됩니다. 구성은 대기 서버에 동기적으로 데이터를 복제본(replica).

  • 지역 간 복제. 다른 지역의 읽기 전용 복제본(replica) 데이터베이스에 데이터를 비동기적으로 복제본(replica) 수 있는 읽기 복제본(replica) 기능이 있습니다.

  • 성능. 예측 가능한 성능과 지능형 튜닝을 제공하여 실제 사용량 현황 데이터를 사용하여 데이터베이스 성능을 향상시킵니다.

  • 관리 오버헤드를 줄입니다. 관리 의무를 줄이는 완전 관리형 Azure 서비스입니다.

  • 마이그레이션 지원 온-프레미스 단일 서버 PostgreSQL 데이터베이스에서 데이터베이스 마이그레이션을 지원합니다. 마이그레이션 도구를 사용하여 마이그레이션 프로세스를 간소화할 수 있습니다.

  • 온-프레미스 구성과의 일관성. Contoso Fiber에서 현재 사용하는 버전을 포함하여 PostgreSQL의 다양한 커뮤니티 버전을 지원합니다.

  • 복원력. 유연한 서버 배포는 자동으로 서버 백업을 만들고 동일한 지역 내에서 ZRS(영역 중복 스토리지)를 사용하여 저장합니다. 백업 보존 기간 내의 특정 시점으로 데이터베이스를 복원할 수 있습니다. 백업 및 복원 기능은 Contoso Fiber가 온-프레미스를 만들 수 있는 것보다 더 나은 RPO(데이터 손실의 허용 가능한 양)를 만듭니다.

애플리케이션 성능 모니터링

웹앱에 대한 애플리케이션 성능 모니터링을 선택합니다. Application Insights 는 Azure 네이티브 APM(애플리케이션 성능 관리) 솔루션입니다. Azure 모니터링 솔루션 인 Azure Monitor의 기능입니다.

예: Contoso Fiber는 다음과 같은 이유로 Application Insights를 추가했습니다.

  • 변칙 검색. 성능 이상을 자동으로 검색합니다.

  • 문제 해결. 실행 중인 앱에서 문제를 진단하는 데 도움이 됩니다.

  • 원격 분석. 사용자가 앱을 사용하는 방법에 대한 정보를 수집하고 앱에서 추적하려는 사용자 지정 이벤트를 쉽게 보낼 수 있습니다.

  • 온-프레미스 표시 유형 차이입니다. 온-프레미스 솔루션에는 애플리케이션 성능 모니터링 솔루션이 없습니다. Application Insights는 애플리케이션 플랫폼 및 코드와 쉽게 통합할 수 있습니다.

캐시

웹앱 아키텍처에 캐시를 추가할지 여부를 선택합니다. Azure Cache for Redis 는 Azure의 기본 캐시 솔루션입니다. Redis 소프트웨어를 기반으로 하는 관리되는 메모리 내 데이터 저장소입니다.

예: Contoso 파이버에는 다음과 같은 이점을 제공하는 캐시가 필요했습니다.

  • 속도 및 볼륨. 일반적으로 액세스되고 느리게 변화하는 데이터에 대한 높은 데이터 처리량과 짧은 대기 시간 읽기가 있습니다.

  • 다양한 지원 가능성. 웹앱의 모든 인스턴스에서 사용할 수 있는 통합 캐시 위치입니다.

  • 외부 데이터 저장소. 온-프레미스 애플리케이션 서버는 VM 로컬 캐싱을 수행했습니다. 이 설정은 자주 사용한 데이터를 오프로드하지 않았으며 데이터를 무효화할 수 없었습니다.

  • 논스틱 세션입니다. 캐시를 사용하면 웹앱이 비스틱 세션을 사용하여 세션 상태를 외부화할 수 있습니다. 온-프레미스에서 실행되는 대부분의 Java 웹앱은 메모리 내 클라이언트 쪽 캐싱을 사용합니다. 메모리 내 클라이언트 쪽 캐싱은 잘 확장되지 않으며 호스트의 메모리 공간을 증가합니다. Contoso Fiber는 Azure Cache for Redis를 사용하여 애플리케이션의 확장성 및 성능을 개선하기 위해 완전히 관리되고 확장 가능한 캐시 서비스를 제공합니다. Contoso Fiber는 캐시 추상화 프레임워크(Spring Cache)를 사용하고 있었고 캐시 공급자를 교체하기 위해 최소한의 구성 변경만 필요했습니다. 이를 통해 Ehcache 공급자에서 Redis 공급자로 전환할 수 있습니다.

부하 분산 장치

웹앱에 가장 적합한 부하 분산 장치를 선택합니다. Azure에는 여러 부하 분산 장치가 있습니다. 옵션 축소에 대한 도움말은 앱에 가장 적합한 부하 분산 장치 선택을 참조하세요.

예: Contoso Fiber는 다음과 같은 이유로 Front Door를 전역 부하 분산 장치로 선택했습니다.

  • 라우팅 유연성. 이를 통해 애플리케이션 팀은 애플리케이션의 향후 변경 내용을 지원하도록 수신 요구를 구성할 수 있습니다.

  • 트래픽 가속. anycast를 사용하여 가장 가까운 Azure 현재 지점에 도달하고 웹앱에 대한 가장 빠른 경로를 찾습니다.

  • 사용자 지정 do기본s. 유연한 do기본 유효성 검사를 통해 사용자 지정 do기본 이름을 지원합니다.

  • 상태 프로브. 애플리케이션에는 지능형 상태 프로브 모니터링이 필요합니다. Azure Front Door는 프로브의 응답을 사용하여 클라이언트 요청을 라우팅하는 데 가장 적합한 원본을 결정합니다.

  • 모니터링 지원. Front Door 및 보안 패턴 모두에 대한 올인원 대시보드가 있는 기본 제공 보고서를 지원합니다. Azure Monitor와 통합되는 경고를 구성할 수 있습니다. 애플리케이션에서 각 요청 및 실패한 상태 프로브를 기록할 수 있습니다.

  • DDoS 보호 기본 제공 계층 3-4 DDoS 보호 기능이 있습니다.

웹 애플리케이션 방화벽

웹 애플리케이션 방화벽을 선택하여 웹 공격으로부터 웹앱을 보호합니다. AZURE WAF(웹 애플리케이션 방화벽 )는 Azure의 웹 애플리케이션 방화벽이며 일반적인 웹 악용 및 취약성으로부터 중앙 집중식 보호를 제공합니다.

예: Contoso Fiber는 다음과 같은 이점을 위해 웹 애플리케이션 방화벽을 선택했습니다.

  • 전역 보호. 성능 저하 없이 향상된 글로벌 웹앱 보호를 제공합니다.

  • 봇넷 보호. 봇넷 공격을 모니터링하도록 봇 보호 규칙을 구성할 수 있습니다.

  • 온-프레미스와의 패리티. 온-프레미스 솔루션이 IT에서 관리하는 웹 애플리케이션 방화벽 뒤에서 실행되고 있었습니다.

비밀 관리자

Azure에서 관리할 비밀이 있는 경우 Azure Key Vault를 사용합니다.

예: Contoso 파이버에는 관리할 비밀이 있습니다. 다음과 같은 이유로 Key Vault를 사용했습니다.

  • 암호화 미사용 및 전송 중인 암호화를 지원합니다.

  • 관리 ID를 지원합니다. 애플리케이션 서비스는 관리 ID를 사용하여 비밀 저장소에 액세스할 수 있습니다.

  • 모니터링 및 로깅. 이는 감사 액세스를 용이하게 하고 저장된 비밀이 변경될 때 경고를 생성합니다.

  • 통합 웹앱이 비밀에 액세스하는 두 가지 방법을 지원합니다. Contoso Fiber는 호스팅 플랫폼(App Service)에서 앱 설정을 사용하거나 애플리케이션 코드(앱 속성 파일)에서 비밀을 참조할 수 있습니다.

엔드포인트 보안

Azure 서비스에 대한 프라이빗 전용 액세스를 사용하도록 선택합니다. Azure Private Link 는 가상 네트워크의 프라이빗 엔드포인트를 통해 서비스로서의 플랫폼 솔루션에 대한 액세스를 제공합니다. 가상 네트워크와 서비스 간의 트래픽은 Microsoft 백본 네트워크를 통해 이동합니다.

예: Contoso Fiber는 다음과 같은 이유로 Private Link를 선택했습니다.

  • 보안 강화. 이를 통해 애플리케이션은 Azure의 서비스에 비공개로 액세스하고 데이터 누출로부터 보호하기 위해 데이터 저장소의 네트워크 공간을 줄일 수 있습니다.

  • 최소한의 노력. 프라이빗 엔드포인트는 웹앱 플랫폼과 웹앱에서 사용하는 데이터베이스 플랫폼을 지원합니다. 두 플랫폼 모두 기존 온-프레미스 설정을 미러 최소한의 변경이 필요합니다.

올바른 아키텍처 선택

웹앱에 사용할 수 있는 의미를 정의하고 올바른 클라우드 서비스를 선택한 후에는 웹앱에 가장 적합한 아키텍처를 결정해야 합니다. 아키텍처는 비즈니스 요구 사항, 기술 요구 사항 및 서비스 수준 목표를 지원해야 합니다.

아키텍처 중복성 선택

비즈니스 목표는 웹앱에 필요한 인프라 및 데이터 중복 수준을 결정합니다. 웹앱 SLO는 중복성 요구 사항을 이해하기 위한 좋은 기준을 제공합니다. 가용성의 중요한 경로에 대한 모든 종속성을 복합 SLA에 계산합니다. 종속성에는 Azure 서비스 및 비 Microsoft 솔루션이 포함되어야 합니다.

각 종속성에 대한 가용성 예상치를 할당합니다. SLA(서비스 수준 계약)는 좋은 시작점을 제공하지만 SLA는 코드, 배포 전략 및 아키텍처 연결 결정을 고려하지 않습니다.

예: 참조 구현은 활성-수동 구성에서 두 지역을 사용합니다. Contoso 파이버는 99.9% SLO를 가지고 있으며 SLO를 충족하기 위해 두 지역을 사용해야 했습니다. 활성-수동 구성은 클라우드 경험에서 이 단계에 대한 최소한의 코드 변경에 대한 Contoso Fiber의 목표와 일치합니다. 활성-수동 구성은 간단한 데이터 전략을 제공합니다. 이벤트 기반 데이터 동기화, 데이터 분할 또는 기타 데이터 관리 전략을 설정할 필요가 없습니다. 모든 인바운드 트래픽은 활성 지역으로 이동합니다. 활성 지역에서 오류가 발생하면 Contoso Fiber는 장애 조치(failover) 계획을 수동으로 시작하고 모든 트래픽을 수동 지역으로 라우팅합니다.

네트워크 토폴로지 선택

웹 및 네트워킹 요구 사항에 적합한 네트워크 토폴로지 선택 허브 및 스포크 네트워크 토폴로지는 Azure의 표준 구성입니다. 비용, 관리 및 보안 이점을 제공합니다. 또한 온-프레미스 네트워크에 대한 하이브리드 연결 옵션도 지원합니다.

예: Contoso Fiber는 비용 및 관리 오버헤드를 줄이면 다중 지역 배포의 보안을 강화하기 위해 허브 및 스포크 네트워크 토폴로지 선택했습니다.

데이터 중복성 선택

Azure의 지역 및 가용성 영역에 분산하여 데이터 안정성을 보장합니다. 지리적으로 분리할수록 안정성이 높아질 수 있습니다.

  • RPO(복구 지점 목표)를 설정합니다. RPO는 중단 시 허용되는 최대 데이터 손실을 정의하여 데이터가 복제본(replica) 필요로 하는 빈도를 안내합니다. 예를 들어 1시간의 RPO는 최근 데이터 손실의 최대 1시간을 수락하는 것을 의미합니다.

  • 데이터 복제본(replica) 구현합니다. 아키텍처 및 RPO에 데이터 복제본(replica) 조정합니다. Azure는 일반적으로 가용성 영역 내에서 동기 복제본(replica)tion을 지원합니다. 여러 영역을 활용하여 안정성을 쉽게 향상시킵니다. 활성-수동 설정의 다중 지역 웹앱의 경우 웹앱의 RPO에 따라 수동 지역에 데이터를 복제본(replica) 복제본(replica)tion 빈도가 RPO를 능가하도록 합니다. 활성-활성 구성에는 지역 간에 거의 실시간 데이터 동기화가 필요하므로 코드를 조정해야 할 수 있습니다.

  • 장애 조치(failover) 계획을 만듭니다. 가동 중지 시간 또는 기능 손실에 따라 결정되는 중단에 대한 대응 전략을 요약한 장애 조치(failover)(재해 복구) 계획을 개발합니다. 허용되는 최대 가동 중지 시간에 대한 RTO(복구 시간 목표)를 지정합니다. 장애 조치(failover) 프로세스가 RTO보다 빠른지 확인합니다. 일관성 및 제어를 위한 자동화된 또는 수동 장애 조치(failover) 메커니즘을 결정하고 정상 작업 프로세스로의 복귀를 자세히 설명합니다. 장애 조치(failover) 계획을 테스트하여 효율성을 확인합니다.

예: Azure Database for PostgreSQL의 경우 참조 구현은 두 가용성 영역에 대기 서버가 있는 영역 중복 고가용성을 사용합니다. 또한 데이터베이스는 수동 영역의 읽기 복제본(replica) 비동기적으로 복제본(replica). Contoso Fiber는 샘플 장애 조치(failover) 계획을 만들었습니다. Azure Database for PostgreSQL 읽기 복제본(replica) Contoso Fiber의 장애 조치(failover) 계획의 핵심입니다.

다음 단계

이 문서에서는 신뢰할 수 있는 웹앱 패턴의 구현을 계획하는 방법을 보여 줍니다. 다음 단계는 신뢰할 수 있는 웹앱 패턴의 구현 기술을 적용하는 것입니다.