WhaTap PHP Application Monitoring의 가치

 PHP Application Monitoring의 주요 기능 소개

와탭 랩스에서 추가적으로 출시되는 PHP Application Monitoring이 그 윤곽이 드러나고 있습니다. 현재 소규모로 클로우즈 베타 테스트를 진행하고 있는데 그 모습을 살짝 소개드립니다.

Whatap PHP Application Monitoring 주요 기능으로는 다음의 3가지로 정리해서 소개드릴 수 있겠습니다.

크게 Transaction 모니터링, PHP 내부에 구현된 SQL-query 모니터링, PHP구현 시의 Error와 Exception 모니터링이 가능합니다. 이 3가지는 PHP 개발자들에게 영원한 숙제로 여겨지는 영역들이죠.

 

“첫번째, Transaction 모니터링”

프로파일링 이미지

기본적으로 PHP는 사용자( 웹 요청 )에 따라서 Transaction이 시작되고 그 종료까지의 SQL, Error, Exception 등의 정보에 대한 처리 흐름을 순서대로 진행됩니다. 이 과정들을 MRI찍듯이 스냅샷을 찍어서 프로파일링이 가능합니다. 각 단계별 동작 시간을 시각화시켜서 보이기 때문에 문제가 발생하는 부분을 명확하게 파악할 수 있습니다.

매우 당연하게 이 내용들은 Cube에 저장되어지고, 수집기간동안 보관되기 때문에 오류가 발생한 시점이나 성능상의 문제가 있었던 시점을 알고 있다면 빠르게 과거의 상황을 확인할 수 있습니다.

기본적으로 와탭 PHP APM은 Page 처리 시의 흐름을 기준으로 지연 지점을 빠르게 찾게 해줍니다. 다음의 그림을 보시면 좀 더 명확하게 이해가 되실 것입니다.

hitmap 이미지

HITMAP을 통해서 각각의 사용자 호출에 대한 트랜잭션을 기준으로 동작이 완료된 시간에 따라서 느리게 동작되는 Transaction을 선별할 수 있으며 해당 URL과 상세한 프로파일링을 통해서 어떤 URL이나 어떤 PHP 소스 영역에 느린 트랜잭션이 있는지 손쉽게 확인이 가능합니다.

그리고, 문제가 있거나 느리다고 생각되는 트랜잭션의 프로파일링을 추적해서 들어가면 어떤 단계에서 느리게 동작되는지를 확인할 수 있습니다. 위의 그림에서는 Slow Query가 가장 문제라고 ‘빨간색’으로 지적되고 있습니다.

 

“두번째, PHP에서 구현 된 SQL 모니터링”

PHP는 Database 연결 및 쿼리의 속도가 빠른 것이 장점입니다. 그래서, Database와 연결하여 결과를 가공하고, 그 내용을 출력하는 기능이 많은 경우에 적합합니다. 다만, 그래서. Slow-Query에 매우 취약합니다. 정말 DBMS의 기능에 의존적이죠.

그러므로, SQL 처리 속도와 흐름을 파악하는 것이 매우 중요합니다.

대부분의 PHP에서의 성능은 SQL을 얼마나 잘 ~~ 모니터링하느냐가 관건의 핵심입니다.

특히나 불필요하게 중복되는 쿼리이거나, For 문장을 통해서 반복적으로 호출되는 쿼리 등을 찾아서 튜닝할 수 있도록 쿼리의 흐름이나 정보들을 시각화하여 제공합니다.

또한 Report 등의 기능을 사용하면 수집된 쿼리 등의 호출 빈도와 평균 처리시간 등을 확인하여 빈도가 높은 쿼리를 매우 빠르게 선별할 수 있습니다.

작업 현장 이미지

위의 그림을 보면 두 개의 쿼리가 반복되고 있습니다. 동일한 내용이죠. 실제, 작업현장에서는 10여 개 이상이 한 번에 동일하게 호출되거나 실제 동작 시간이 소모되는 경우도 발견됩니다.

중복된 쿼리를 찾는 것은 성능 향상에 매우 도움이 되죠. 특히 개발 중인 상태에서는 이런 현상은 매우 빈번하게 발생되며 이 문제만 잡는 것으로도 성능 향상이 되는 경우도 많습니다.

SQL 처리 빈도를 보여주는 이미지

위의 그림은 SQL의 처리 빈도와 평균 처리시간 등을 빠르게 확인할 수 있도록 통계로 만든 것입니다. PHP로 개발된 서비스에서 전체적으로 사용되는 SQL 등을 한눈에 빠르게 확인할 수 있습니다.

특히, RDS기반으로 PHP 개발을 한다면 이 방법은 정말 빠르게 성능을 최적화시켜주게 됩니다.

 

“세번째, PHP 개발 시에 무심코 넘기게 되는 Error와 Exception 모니터링”

PHP 개발 시에 사용자의 Error Handler가 있는 경우에도 중요한 오류이지만, 내부적으로 Exception을 처리하고 무시하도록 넘기는 경우가 빈번합니다.

이런 경우에 해당 오류 내용들을 빠르게 프로파일링 할 수 있습니다. 특히나, 내가 아닌 다른 사람이 만들어 놓은 PHP소스이거나, 기존의 PHP소스를 인수인계받았다면 Error와 Exception모니터링은 꼭 한번 거치게 되는 작업이 됩니다.

에러를 보여주는 이미지

위의 그림처럼, 빠르고 쉽게 에러의 내용들을 간단하게 확인할 수 있습니다.

PHP 개발 시에 이 3가지의 주요한 관점으로만 접근해도, 개발이 수월해질 뿐 아니라 기존의 PHP 유지보수에도 매우 효과적으로 대응이 가능합니다.

PHP 개발에 Application Monitoring을 한번 사용해보시지 않겠습니까?

지금 와탭에 가입하시면 그 여유로움을 느낄 수 있게 됩니다. 단! 현재는 PHP가 클로우즈 베타 서비스(2017년 7월 말) 기준입니다. 별도 지원이 필요하시다면 도입문의로 요청해주셔도 됩니다.

PHP Application Monitoring 사용해보기