Azure API Management을 통해 웹앱 마이그레이션하기

Azure API Management
Azure Monitor
Azure App Service

이 시나리오에서 여행 업계의 전자 상거래 회사는 Azure API Management를 사용하여 레거시 웹앱을 마이그레이션합니다. 이 회사는 Azure에서 새 UI를 PaaS(Platform as a Service) 앱으로 호스트합니다. 새 UI는 기존 및 새 HTTP API에 따라 달라집니다. 이러한 API는 성능을 향상시키고 통합을 간소화하며 향후 확장성을 허용하는 보다 효과적으로 설계된 인터페이스로 배포됩니다.

아키텍처

API Management를 사용하여 웹앱을 마이그레이션하는 단계를 보여 주는 다이어그램

다이어그램은 온-프레미스 시스템, 인터넷 및 Azure 서비스 간의 흐름을 보여 줍니다. 왼쪽의 온-프레미스에 레이블이 지정된 상자 내에서 지구본 아이콘은 기존 HTTP 서비스 및 API를 나타냅니다. 동일한 상자에서 브라우저 창 아이콘은 기존 브라우저 기반 웹 UI를 나타냅니다. 이러한 아이콘을 연결하는 양방향 화살표는 기존 브라우저 기반 웹 UI와 기존 HTTP 서비스 및 API 간의 통신을 나타냅니다. 건물 아이콘은 온-프레미스 데이터 센터를 나타냅니다. 오른쪽의 Azure 레이블이 지정된 상자 내에서 클라우드 아이콘은 API Management 인스턴스를 나타냅니다. 잠금 아이콘을 통과하는 양방향 화살표는 이 아이콘과 기존 온-프레미스 HTTPS 서비스 및 API를 연결합니다. 또한 Azure 상자에는 새 API 아이콘과 새 브라우저 기반 웹 UI를 나타내는 지구본 아이콘이 포함되어 있습니다. 잠금 아이콘을 통과하는 양방향 화살표는 API Management 인스턴스와 새 API를 연결합니다. 또 다른 양방향 화살표는 API Management 인스턴스와 새 브라우저 기반 웹 UI를 연결합니다. 온-프레미스 상자와 Azure 상자 사이에 클라우드 아이콘이 인터넷을 나타냅니다. 잠금 아이콘을 통과하는 화살표는 전자 상거래 사용자 아이콘에서 기존 브라우저 기반 웹 UI 및 새 브라우저 기반 웹 UI로 가리킵니다.

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

다음 워크플로는 이전 다이어그램에 해당합니다.

  1. 기존 온-프레미스 웹앱은 기존 온-프레미스 웹 서비스를 계속 직접 사용합니다.

  2. 기존 웹앱에서 기존 HTTP 서비스로 보내는 호출은 변경되지 않습니다. 이러한 호출은 회사 네트워크 내부용입니다.

  3. API Management는 Azure에서 기존 내부 서비스로 호출합니다.

  4. 새 API에는 다음과 같은 특징이 있습니다.

    • API 외관을 제공하는 API Management 인스턴스만 새 API를 표시합니다. 새 API에 직접 액세스하지 않습니다.

    • Azure PaaS 웹 API 앱으로 새 API를 개발하고 게시합니다.

    • 새 API를 Azure App Service의 Web Apps 기능에 대한 설정을 사용하여 API Management VIP(가상 IP)만 허용하도록 설정합니다.

    • Web Apps는 HTTPS 또는 TLS와 같은 보안 전송 프로토콜이 켜져 있는 새 API를 호스트합니다.

    • Azure App Service 는 Microsoft Entra ID 및 OAuth(Open Authorization) 2를 통해 권한 부여 기능을 제공합니다.

  5. 새 브라우저 기반 웹앱은 기존 HTTP API와 새 API 모두에 대한 API Management 인스턴스에 따라 달라집니다.

  6. 여행 전자 상거래 회사는 이전 UI와 기존 기능을 나란히 유지하면서 미리 보기 또는 테스트를 위해 일부 사용자를 새 UI로 보낼 수 있습니다.

레거시 HTTP 서비스를 새 API 계약에 매핑하도록 API Management 인스턴스를 설정합니다. 이 구성에서 새 웹 UI는 레거시 서비스 또는 API 및 새 API 집합과의 통합을 인식하지 못합니다.

나중에 프로젝트 팀은 점진적으로 기능을 새 API로 이동하고 원래 서비스를 사용 중지할 수 있습니다. 팀은 API Management 구성 내에서 이러한 변경 내용을 처리하여 프런트 엔드 UI에 영향을 받지 않고 재개발 작업을 방지합니다.

구성 요소

  • API Management 는 모든 환경에서 API를 위한 관리 플랫폼 및 게이트웨이입니다. 이 아키텍처에서는 기존 레거시 API 및 새 API의 외관 역할을 합니다. 새 클라이언트 앱은 일관된 단일 인터페이스를 사용하며, 팀은 프런트 엔드 개발에 미치는 영향을 최소화하면서 해당 외관 뒤에서 레거시 백 엔드를 증분 방식으로 현대화할 수 있습니다.

  • App Service 는 보안, 부하 분산, 자동 크기 조정 및 자동화된 관리와 같은 기본 기능을 제공하는 웹 호스팅용 턴키 PaaS 솔루션입니다. 이 아키텍처에서 App Service는 DevOps 팀이 기능 전달에 집중할 수 있도록 유연한 턴키 호스팅을 제공합니다.

대안

  • 조직에서 레거시 앱을 호스트하는 VM(가상 머신)을 비롯한 인프라를 Azure로 완전히 이동하려는 경우 API Management는 주소 지정 가능한 HTTP 엔드포인트의 외관 역할을 할 수 있습니다.

  • 조직에서 기존 엔드포인트를 비공개로 유지하고 공개적으로 노출하지 않는 경우 조직의 API Management 인스턴스는 Azure 가상 네트워크에 연결할 수 있습니다.

  • 조직은 내부 모드로 배포하여 API Management 인스턴스를 비공개로 유지할 수 있습니다. 그러면 조직은 Azure Application Gateway 와 함께 배포를 사용하여 일부 API에 대한 공용 액세스를 허용하고 다른 API는 내부적으로 유지할 수 있습니다. 자세한 내용은 Application Gateway를 사용하여 내부 가상 네트워크에 API Management 통합을 참조하세요.

  • 조직은 온-프레미스에서 API를 호스트하기로 결정할 수 있습니다. 이 변경의 한 가지 이유는 조직이 이 프로젝트의 범위에 있는 다운스트림 데이터베이스 종속성을 클라우드로 이동할 수 없기 때문일 수 있습니다. 이 시나리오에서 조직은 자체 호스팅 게이트웨이를 사용하여 API Management를 로컬로 활용할 수 있습니다.

    자체 호스팅 게이트웨이는 아웃바운드 소켓에서 Azure에 연결하는 API Management 게이트웨이의 컨테이너화된 배포입니다. 자체 호스팅 게이트웨이를 사용하려면 다음 필수 조건을 충족해야 합니다.

    • Azure에서 부모 리소스를 사용하여 자체 호스팅 게이트웨이를 배포해야 하므로 추가 비용이 추가됩니다.

    • API Management의 프리미엄 계층을 사용해야 합니다.

시나리오 정보

여행 업계의 전자 상거래 회사는 레거시 브라우저 기반 소프트웨어 스택을 현대화하려고 합니다. 기존 스택은 대부분 모놀리식이지만 일부 SOAP(Simple Object Access Protocol) 기반 HTTP 서비스는 최근 프로젝트에서 존재합니다. 이 회사는 내부 지적 재산권의 일부를 수익을 창출하기 위해 추가 수익원을 만드는 것을 고려합니다.

이 프로젝트의 목표에는 기술적인 문제 해결, 지속적인 유지 관리 개선 및 회귀 버그가 적은 기능 개발 가속화가 포함됩니다. 프로젝트는 반복 프로세스를 사용하여 위험을 방지하고 다음 단계를 병렬로 수행합니다.

  • 개발 팀은 VM에서 호스트되는 관계형 데이터베이스로 구성된 앱의 백 엔드를 현대화합니다.

  • 사내 개발 팀은 새로운 비즈니스 기능을 작성하고 새 HTTP API를 통해 노출합니다.

  • 계약 개발 팀은 Azure에서 호스트하는 새 브라우저 기반 UI를 빌드합니다.

이 회사는 새로운 앱 기능을 단계적으로 제공합니다. 이러한 기능은 회사의 전자 상거래 비즈니스를 구동하는 온-프레미스에서 호스트되는 기존 브라우저 기반 클라이언트 및 서버 UI 기능을 점진적으로 대체합니다.

관리 팀 멤버들은 불필요한 현대화를 원하지 않습니다. 범위 및 비용도 계속 제어할 수 있기를 원합니다. 이러한 목표를 달성하기 위해 기존 SOAP HTTP 서비스를 유지하기로 결정합니다. 또한 기존 UI 변경을 최소화하려 합니다. API Management를 사용하여 프로젝트의 많은 요구 사항 및 제약 조건을 해결할 수 있습니다.

잠재적인 사용 사례

이 시나리오에서는 레거시 브라우저 기반 소프트웨어 스택을 현대화하는 방법을 강조 표시합니다.

다음 작업에 이 시나리오를 사용할 수 있습니다.

  • 비즈니스가 Azure 에코시스템을 사용하여 이익을 얻을 수 있는 방법을 알아봅니다.
  • Azure로 서비스 마이그레이션을 계획합니다.
  • Azure로의 전환이 기존 API에 미치는 영향을 알아봅니다.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일련의 기본 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Well-Architected Framework를 참조하세요.

안정성

안정성은 애플리케이션이 고객에 대한 약정을 충족할 수 있도록 하는 데 도움이 됩니다. 자세한 내용은 안정성에 대한 디자인 검토 검사 목록을 참조하세요.

  • API Management 인스턴스를 배포할 때 가용성 영역을 활성화합니다. 가용성 영역에 API Management를 배포하는 옵션은 프리미엄 서비스 계층에서만 사용할 수 있습니다.

  • 다른 지역에 배포된 추가 게이트웨이 인스턴스가 있는 가용성 영역을 사용합니다. 이 조합은 한 지역이 오프라인 상태가 되면 서비스 가용성을 향상시킵니다. 멀티리전 배포는 프리미엄 서비스 계층에서만 사용할 수 있습니다.

  • 모니터링을 위해 Azure Monitor를 통해 메트릭을 표시하는 Application Insights와 통합합니다. 예를 들어 용량 메트릭을 사용하여 API Management 리소스의 전체 부하와 더 많은 스케일 아웃 단위가 필요한지 여부를 결정할 수 있습니다. 리소스 용량 및 상태를 추적하여 안정성을 향상시킵니다.

  • API Management에서 다루는 API를 호스트하는 백 엔드 서비스와 같은 다운스트림 종속성도 복원력이 있는지 확인합니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 개선하는 방법에 중점을 둡니다. 자세한 내용은 비용 최적화에 대한 디자인 검토 검사 목록을 참조하세요.

API Management에는 8개의 계층이 있습니다.

  • 소비
  • 개발자
  • 기본 및 기본 v2
  • 표준 및 표준 버전 2
  • 프리미엄 및 프리미엄 v2

이러한 계층의 차이점에 대한 자세한 내용은 API Management 가격 책정을 참조하세요.

단위를 추가하고 제거하여 API Management 크기를 조정할 수 있습니다. 각 단위의 용량은 해당 계층에 따라 다릅니다.

참고

개발자 계층을 사용하여 API Management 기능을 평가할 수 있습니다. 프로덕션에 사용하지 마세요.

배포 요구 사항에 대한 예상 비용을 보려면 Azure 가격 계산기에서 배율 단위 및 App Service 인스턴스 수를 수정할 수 있습니다.

참가자

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

주요 작성자:

기타 기여자:

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.

다음 단계