brunch

Grafana와 잔

걸리버 개발기

by 해숭이

차나 커피 따위의 음료를 따라 마시는 데 쓰는 작은 그릇을 잔이라고 부른다. 음료는 그 자체로 형태를 가지지 않는 액체지만 고체인 잔에 따르면 비로소 형태가 생긴다. 형태가 생긴 음료는 양을 가늠할 수 있기도 하다. 한 잔, 두 잔, 우리는 잔의 형태를 빌려 음료의 섭취를 조절할 수 있게 된다.



프로그래밍의 세계에서는 셀 수 없는 정보들이 흐르고 있다. 이 정보의 흐름(Data Stream)이 가공을 거치지 않을 경우 너무나 기계 친화적이고 장황하여 인간이 활용하기 어렵다. 마치 잔에 담긴 음료처럼 정보의 흐름을 정해진 형태로 나누어 바라볼 수 있다면, 인간은 정보의 흐름을 가늠하고 조절하여 새로운 통찰을 얻을 수 있다. Grafana Labs에서 제공하는 Grafana는 서버의 상태와 관련된 정보의 흐름을 분할하여 축적하고 시각화하는 프로그래밍 세계의 잔이다.


grafana-logo-200x100.png https://grafana.com


Grafana를 통한 분석은 위기 상황에 빛을 발한다. 어플리케이션이 성장하다보면 유저 및 매출 확보를 위한 마케팅의 일환으로 이벤트를 진행하곤 한다. 특정 시각 이후 선착순으로 버튼을 클릭한 사용자들에게 무료 바우처를 제공한다는 식이다. 이러한 이벤트를 앞둔 개발자들은 여러 화면에 각종 로깅, 모니터링 툴을 켜두고 설레는 마음으로 기다리곤 한다. 애지중지 하던 상용 환경에 대량의 트래픽을 쏟아부어 성능 테스트를 해볼 수 있는 몇 안되는 기회이기 때문이다.



이벤트가 시작되면 기존에는 아무런 문제 없이 동작되던 로직들에서 버그가 뻥뻥 튀어나오곤 한다. 보통 이러한 상황에서의 제보는 사용자가 직면한 현상에 대한 간략한 설명에 그치는 경우가 많다. 빵 부스러기를 찾아 집에 돌아갈 길을 찾는 헨젤과 그레텔의 마음으로, 사용자가 직면하는 현상을 일으키는 원인을 찾아야 한다. 현상을 유발한 정보의 흐름을 역으로 한발 한발 거슬러 올라가는 일은 분명 쉬운 일은 아니다.



이러한 상황에서 Grafana와 같은 메트릭 수집 및 시각화 도구가 큰 도움이 되곤 한다. 호랑이는 죽어서 가죽을 남기고, 버그는 살아서 이상한 지표들을 남긴다. 예를 들어 다른 서버에 연결된 커넥션의 숫자가 증가하다가 더이상 증가하지 않는 모습이 보인다던가, 반복적으로 특정한 응답 시간이 관측되고 그 이상의 응답 시간이 보이지 않는 식이다. 개발자는 제보된 현상과 함께 나타난 이상 현상을 빠르게 포착하고, 이 모두를 아우르는 가설을 제시하여 문제를 재현하고 해결하는 존재이다.


dashboard.png Grafana의 대시보드에서는 CPU 사용량과 같은 메트릭을 효과적으로 파악할 수 있다.


Grafana Labs는 서버 자체의 하드웨어적인 지표 뿐만 아니라 아니라, 프로그램의 소프트웨어적인 지표마저도 시각화할 수 있는 dashboard를 제공하고 있다. Grafana 사용자는 미리 수집해놓은 지표들을 바탕으로 직접 자신의 필요에 맞는 dashboard를 생성할 수 있으며, 임계점을 넘을 경우 알람을 제공하도록 설정해둘 수도 있다. 무엇보다 이 모든 것은 무료로 제공되기에 많은 개발자가 자신의 필요로 만든 dashboard를 다른 개발자도 사용할 수 있도록 제공하고 있기도 하다. 결국 Grafana는 정보의 흐름이라는 잡을 수 없는 액체를, 담고 측량하여 활용할 수 있도록 만든 잔이라고 볼 수 있겠다. 좋은 잔에 음료를 담아 마시면 그 내용물이 더욱 맛있고 청량하게 느껴지곤 한다. 와인은 와인잔, 순두부는 뚝배기에, 그리고 프로그램은 Grafana에 담아야 맛이 좋다.

keyword
작가의 이전글디자인 패턴과 4인방