← 모든 글

multimodal 데이터로 만든 운영 대시보드

텍스트 로그, 수치 지표, 이미지 캡처를 하나의 운영 대시보드에 통합하면서 겪은 설계 고민과 결과를 공유합니다.

왜 “multimodal”이 필요했나

처음 운영 대시보드를 만들 때는 숫자만 보여주면 된다고 생각했다. 요청 수, 오류율, 응답 시간. 흔한 구성이다. 그런데 실제 운영을 하다 보면 숫자만으로는 “왜 그런 숫자가 나왔는지”를 모른다는 사실을 자꾸 마주쳤다.

오류율이 갑자기 올라갔을 때, 그 시각에 어떤 배포가 있었는지 로그에서 찾아야 했다. 특정 UI 흐름에서 이탈이 늘었을 때, 그 화면이 실제로 어떻게 보였는지 스크린샷을 따로 찾아야 했다. 데이터가 분리되어 있으니 현상을 이해하는 데 시간이 걸렸다.

통합 방식

우리가 만든 대시보드는 세 가지 데이터 유형을 같은 타임라인에 놓는다.

수치 지표는 시계열 그래프로 표시한다. 이건 일반적인 방식과 같다. 다른 건 그 타임라인 위에 배포 이벤트와 주요 로그 메시지를 같이 올린다는 것이다. 그래프의 이상 구간에 마우스를 올리면 그 시각 전후의 로그 요약이 뜬다.

세 번째 유형인 이미지는 특정 UI 단계의 자동 캡처다. 특정 플로우의 완료율이 임계치 이하로 떨어지면 해당 시점의 화면을 저장한다. 대시보드에서 그 수치를 클릭하면 그 캡처를 볼 수 있다. 숫자가 내려갔을 때 화면이 어떤 상태였는지를 사후에 확인할 수 있다.

만들면서 결정한 것들

데이터를 통합한다는 건 스키마를 통일한다는 뜻은 아니다. 각 유형의 데이터는 원래 형식 그대로 저장한다. 통합은 타임라인 인덱스 레이어에서 이루어진다. 각 이벤트에 타임스탬프와 카테고리 태그를 달고, 대시보드가 그걸 기준으로 정렬해서 보여준다.

이 방식을 택한 이유는 원본 데이터를 변형하지 않으면 나중에 새로운 유형의 데이터를 추가하기 쉽기 때문이다. 실제로 처음에는 로그 텍스트와 수치 두 가지만 연결했고, 이미지 캡처는 두 달 후에 추가했다. 인덱스 레이어만 수정하면 됐다.

실제 효과

운영 중 이상 감지 후 원인 파악까지 걸리는 시간이 줄었다. 예전에는 여러 도구를 열어서 같은 시각대를 각각에서 찾아야 했다면, 이제는 하나의 화면에서 시각을 기준으로 맥락을 한 번에 볼 수 있다.

다만 이미지 캡처는 저장 비용이 있어서 보존 기간을 7일로 제한했다. 임계치를 어디에 잡느냐에 따라 캡처가 너무 많이 쌓이거나 필요한 순간에 없는 경우가 생겨서, 임계치 설정을 몇 번 조정했다.

— by slecs