공부한 것 꼭꼭 씹어먹기

프로그램 개발과 모니터링(monitoring) 도구의 종류 본문

소소한 개발 지식

프로그램 개발과 모니터링(monitoring) 도구의 종류

젤라솜 2022. 10. 29. 17:51
반응형

 

앱이나 웹 등의 소프트웨어를 개발할 때 사용하는 모니터링 도구를 알아보겠습니다. 모니터링 도구는 프로그램을 다 만든 후에도 사용할 수 있겠지만 테스트 과정에서도 사용할 수 있습니다. 만약 결함이 발생했을때 어디서 그 결함이 발생하였고 원인은 무엇인지 편리하게 찾아볼 수 있기 때문입니다.

 

 

Application(프로그램) Monitoring

애플리케이션을 모니터링 하는 도구는 APM(Application Performance Monitoring)이라고 합니다. 요청을 처리하는 과정에서 어떤 method를 사용하였는지, 각 method에서 처리에 소요된 시간과 CPU 처리 시간등을 계산해 주고, 1초당 몇 건의 요청을 처리하는지도 계산해 줍니다. 코드 레벨에서의 프로그램 러닝 과정을 모니터링 해준다고 볼 수 있습니다. 만약 특정 요청을 했는데 병목 현상이 발생한다면 어떤 method에서 시간이 많이 걸리는지, 혹은 CPU 처리에 쓰이는 리소스가 높은지 등을  찾아내어 병목 현상이 발생한 지점을 알 수 있게 됩니다. 

 

 

Middleware Monitoring

미들웨어는 보통 미들웨어 자체에 모니터링 기능이 있습니다. 애플리케이션의 로직이 아닌 미들웨어의 수행 상태에 대한 모니터링이라고 할 수 있지요. 예를 들어, 톰캣을 쓰는 경우 어플리케이션을 구동하는데 쓰이는 스레드 수, 동시 접속 사용자, 클러스터링 구성 상태 등의 정보를 알 수 있게 됩니다. APM을 사용하고 있다면 APM에서 미들웨어의 정보도 같이 모니터링 해주기 때문에 별도의 미들웨어 모니터링 도구는 설치하지 않아도 됩니다.

 

 

Java Virtual Machine Monitoring

자바로 만든 어플리케이션이라면 자바의 가상 머신인 JVM이 가지고 있는 모니터링 도구에서 많은 정보를 알 수 있습니다. 

메모리 사용 현황은 JVM에서만 알 수 있는 정보이기 때문에 더욱 중요합니다. 가비지 컬렉션이 언제 발생했는지와 소요되는 시간, JVM의 현재 메모리 상황 등을 알 수 있고, 현재 수행중인 스레드가 각각 어떤 작업을 하고 있는지 등을 실시간으로 알 수 있는데요. JConsole이라는 도구를 통해 JVM의 상세한 모니터링이 가능합니다. 병목현상이 발생할 경우 어떤 위치에서(어떤 코드에서) 발생했는지 알 수 있기 때문에 유용합니다. 지난번 프로젝트에서 이 JConsole을 활용하여 사전에 테스트하고 모니터링을 했더라면... 많은 실수를 줄였을텐데 하는 아쉬움이 듭니다.

 

 

Infrastructure Monitoring

인프라스트럭처 모니터링은 곧 하드웨어 인프라에 대한 모니터링을 말합니다. 이것은 OS에서 제공하는 기본 도구나 장비 제공 업체를 통해 제공되는 모니터링 도구를 이용하는데요. 디스크 IO, 메모리, CPU 등은 서버 OS에 설치되어 있는 기본 도구로 모니터링이 가능합니다. 예를 들어, 어플리케이션을 테스트 하는 중에 시스템이 느려지거나 멈추는 경우가 있을 수 있습니다. 애플리케이션의 코드 레벨, 미들웨어 레벨 및 JVM의 JConsole을 통해서도 문제의 원인을 발견하지 못했을 경우가 발생할 수 있겠는데요. 서버OS의 메모리 사용률이나 리소스 관리 메뉴를 통해 인프라에 문제의 원인이 있는 것은 아닐지 유추해 볼 수 있습니다. 또한, 문제가 발생하지 않았더라도 애플리케이션을 최적화 하여 품질을 높이기 위해서는 하드웨어적인 부분도 잘 모니터링을 해야 합니다 

 

 

 

오늘은 간단하게나마 프로그램 개발에 있어서 사용할 수 있는 모니터링 도구에 대한 개념을 알아봤습니다. 항상 개발하기 급급해서 제대로 테스트하지 못한 적도 많고 모니터링은 더욱 시스템 운영 후로 미뤘던 적이 많은데요. 앞으로 맡을 프로젝트에는 시간 분배를 잘 해서 최대한 런칭 전에 모니터링을 통한 테스트를 완료해야겠습니다.

반응형
Comments