brunch

You can make anything
by writing

C.S.Lewis

by 신현묵 Aug 02. 2017

Whatap PHP APM의 가치

PHP APM의 주요 기능 소개

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


거기에 가격도 최저 1년 서버당 10만원의 비용으로 운용이 가능한 방법도 있습니다. 

와탭 모니터링의 취지는 '오픈소스보다 싸고 빠르게'가 모토이니까요.


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


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


첫 번째, Transaction 모니터링


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


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


기본적으로 와탭 PHP APM은 Page 처리 시의 흐름을 기준으로 지연 지점을 빠르게 찾게 해줍니다.

다음의 그림을 보시면 좀 더 명확하게 이해가 되실 것입니다.

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

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


두 번째. PHP에서 구현된 SQL 모니터링


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


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


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


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


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


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


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


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


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


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


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


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


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


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


PHP 개발에 APM을 한번 써보시지 않겠습니까?


더군다나 와탭은 개발자에게 정말 도움이 되는 툴을 지향하고 있습니다.

와탭홈페이지에도 공개되어있는 내용이지만... 살짝 따로 설명드립니다.



SaaS형태로 PHP APM을 지원받으신다면... 8 core 기준으로 1년 사용료가 최대 2백만원 정도입니다.

아니면, 아예 설치를 하시고 수집서버를 직접 운영하신다면 서버당 1년 10만원으로도 제공됩니다.

( 별도의 설치지원등 유지보수 비용이나 기술지원 비용은 별도입니다... )


PHP개발시에 만나는 수 많은 문제들을 해결하기 위해서 '전문가'를 고용하는 것과 비교한다면 비할 수 없는 가격이죠.


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

http://whatap.io


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari