본문 바로가기
APM, 제니퍼

JENNIFER .NET의 Azure App Service 웹 앱 지원

by 제니퍼소프트 2018. 12. 5.


마이크로소프트의 Azure 환경에서 응용 프로그램을 운영하는 방법은 크게 다음과 같이 2가지 유형으로 나뉩니다.


-  IaaS (Infrastructure-as-a-service) 방식: 가상 머신(VM)에서 응용 프로그램 구동(AWS 경우 EC2 서비스에 해당)

 PaaS (Platform-as-a-service) 방식: App Service에서 응용 프로그램 구동(AWS 경우 Elastic Beanstalk 해당)


기존 응용 프로그램의 구조를 최대한 변경하지 않고 Azure 올릴 있는 방법은 IaaS 방식을 사용하는 것이지만 이런 경우 일반적인 호스팅 업체에서 서비스를 하는 것과 비교해 물리적인 서버 시스템에 대한 관리 비용을 없앤 정도의 효용성만 있습니다.

반면 클라우드의 최대 장점인 손쉬운 Scale-out 서비스를 이용하려면 Azure App Service 방식으로 마이그레이션을 해야 합니다. 단지 구축된 시스템을 앱으로 이전하는 것이 경우에 따라 쉽지 않은데다 PaaS 특성에 대한 이해도가 부족해 초기 시점에는 응용 프로그램이 많이 활성화되지는 못했습니다. 하지만 근래 들어 PaaS 장점이 대두되면서 새로 구축하는 응용 프로그램의 경우 가상 머신이 아닌 앱으로 만드는 사례가 늘어가고 있습니다. 예를 들어, 국내에서 ㈜제이와이피엔터테인먼트에서 아시아 팬들을 위한 이벤트 정보 예약 안내를 담당하는 JYP NATION 투어 안내 사이트를 앱으로 개설했고 최근에는 AI 챗봇 서비스를 도입한 SSG.COM에서 “Zero VM” 목표로 가상 머신이 아닌 FaaS, BaaS, PaaS 만으로 서비스를 구축하는 점차로 PaaS 이후의 단계로 이전하는 서비스가 늘어가고 있습니다.

클라우드에서 제공하는 PaaS 특성 성능이라는 관점에서 자동적으로 누릴 있는 혜택이 있습니다. 대표적으로는, 자유로운 Scale-out으로 인해 On-premise 환경과 비교해 대역폭과 관련한 문제가 쉽게 해결됩니다. 예를 들어, 서버로 유입되는 트랜잭션의 증가로 요청 처리가 늦어지는 경우 서버 인스턴스를 동적으로 증가시키면 다시 서비스를 정상 수준으로 처리할 있습니다. 또한 서비스 지역을 단일 지점이 아닌, 클라우드 서비스 업체가 제공하는 세계의 데이터 센터를 활용할 있으므로 네트워크 트래픽에서도 자유로울 있습니다

하지만 단순히 Scale-out으로 해결되지 않는 문제도 여전히 많습니다. 예를 들어, 전자 상거래 사이트의 장바구니 페이지를 방문 평소 응답 시간이 5초가 걸린다고 가정하는 경우 이것은 서비스 인스턴스의 수를 늘린다고 해서 선형적으로 반응 시간이 줄어들지는 않습니다. , PaaS 해결해 있는 것은 일반적으로 유입 트래픽의 변동으로 인한 기존 서비스의 반응 시간을 유지해 주는 것입니다. 따라서 여전히 클라우드 환경에서도 유의미한 성능 문제가 발생하며 이런 문제의 원인을 찾기 위해 APM 역할이 필요하게 됩니다.

제니퍼소프트는 이러한 응용 프로그램의 환경 변화와 여전히 APM 필요할 있다는 요건에 따라 클라우드 환경에서의 APM 지원을 꾸준히 보완해 나가고 있습니다. 이미 자바 플랫폼의 AWS 대한 Elastic Beanstalk 지원을 추가했고 최근에는 Azure 환경에서 JENNIFER .NET 지원을 추가했습니다.

 

JENNIFER .NET 설치

가상 머신(VM) 상에서 구동하는 응용 프로그램은 기존의 On-premise 환경의 설치 방식과 다른 점이 없습니다. 하지만 PaaS 유형에서는 Sandbox 보호된 환경의 제약으로 인해 가상 머신과 같은 방식으로 설치할 없습니다. 이러한 설치 환경의 제약은 App Service 응용 프로그램들에 대한 부가 서비스를 제공하는 3rd-party 응용 프로그램의 생태계에 영향을 미치게 되는데, 마이크로소프트는 이에 대한 해법으로 확장(Web App Extension)” 환경을 제공하는 Kudu 서비스를 오픈 소스로 공개하고 Azure App Service 환경에 통합시켜 운영하고 있습니다. 그리고 JENNIFER .NET 바로 확장의 하나로 등록되어 있기 때문에 기존 사용자라면 언제든지 해당 확장을 앱과 연동할 있습니다.

현재 확장은 Azure 포탈의 콘솔 화면을 통해 “Extensions” 메뉴를 이용하면 자유롭게 설치 삭제할 있습니다.


[그림 1: 설치 대상이 되는 앱의 “Extensions” 메뉴]


만약 JENNIFER .NET 에이전트를 여러분들의 Web App 설치하고 싶다면 다음과 같이 Extensions 하위의 “Add extension” 메뉴로 JENNIFERSOFT에서 등록한 “JENNIFER .NET Agent” 선택해 추가하면 됩니다.


[
그림 2: 확장 목록 “JENNIFER .NET Agent” 선택]


 설치 후에는 JENNIFER .NET 에이전트가 JENNIFER 데이터 서버로 수집 데이터를 전송하기 위해 가지 설정이 필요합니다. 기존 설치 방식에서는 사용자 설정을 conf 파일에 지정했지만 Azure App Service 환경에서는 해당 App Service “Application settings” 메뉴로,


[
그림 3: 대상 앱의 환경 변수 설정 메뉴]

1 같은 환경 변수를 설정해야만 합니다.

Figure 1 에이전트 구동을 위한 환경 변수 설정

APP SETTING NAME

VALUE

ARIES_AZURE

1

ARIES_DOMAIN_ID

[ID]

ARIES_RESOLVE_MODULE

v2

ARIES_SERVER_ADDR

[주소]

ARIES_SERVER_PORT

[포트]

COR_ENABLE_PROFILING

1

COR_PROFILER

{6C7CAF0F-D0E5-4274-A71B-6551761BBDC8}

COR_PROFILER_PATH32

D:\home\SiteExtensions\JenniferNetAgentExtension\bin\AriesProfiler.dll

COR_PROFILER_PATH64

D:\home\SiteExtensions\JenniferNetAgentExtension\bin\AriesProfiler64.dll


1 설정 중에서 사용자 환경에 따라 달라지는 값은 “ARIES_DOMAIN_ID”,

 “ARIES_SERVER_ADDR”, “ARIES_SERVER_PORT”이며 나머지 값들은 변경하지 않고 그대로 설정해야 합니다.

이후 앱을 재시작하면 대시 보드에 해당 인스턴스를 대표하는 ID 동적으로 할당되어 나타나고 Scale-out 설정에 따라 인스턴스의 수가 자동으로 늘고 주는 것을 확인할 있습니다.