마이크로소프트의 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 설정에 따라 인스턴스의 수가 자동으로 늘고 주는 것을 확인할 수 있습니다.
'APM, 제니퍼' 카테고리의 다른 글
제니퍼소프트, K-DA(한국데이터허브 얼라이언스) 3차 회원사가 되었습니다. (0) | 2020.05.28 |
---|---|
제니퍼(JENNIFER) 애플리케이션의 성능을 최적의 상태로 유지하세요. (0) | 2020.05.20 |
제니퍼(APM 솔루션)사용자 교육 안내 _제니퍼소프트 (0) | 2020.03.23 |
제니퍼소프트 공공솔루션마켓 2019 콘퍼런스 전시 참여 후기 (0) | 2019.07.29 |
제니퍼소프트, 공공솔루션마켓 2019 전시 참여합니다. (0) | 2019.04.12 |
제니퍼 파이썬(Python) 베타 테스터 모집! (0) | 2018.08.13 |
제니퍼(JENNIFER) 자동 스택트레이스(Auto Stacktrace) 사용하기 (0) | 2018.07.26 |
츄잉,제니퍼를 통해 드라마틱한 성능 개선 효과를 얻다_ 제니퍼 도입 사례 인터뷰 (0) | 2017.12.07 |
APM, 제니퍼(JENNIFER)5 기능 소개 (0) | 2017.09.12 |
제니퍼소프트, 국내 기업 유일하게 가트너 매직쿼드런트 APM 분야 첫 진입 (0) | 2017.07.24 |