모듈 로깅하기

Journey log·2025년 2월 16일
0

지난 1년간 플랫폼 팀에서 일하며 모듈 제품 로깅하는 업무를 맡았다.

모듈이란? 여러 종류의 서비스를 만들다보면 제품마다 공통적으로 필요한 기능들이 있다.

이런 기능의 동작을 일관된 경험으로 제공하도록 모듈을 만든다면? 제품팀에서는 플랫폼팀에서 이미 만들어놓은 모듈을 적용함으로써 적은 비용으로 안정적인 제품을 만들 수 있다. 유저 입장에서는 여러 서비스를 사용하더라도 동일한 모듈을 만나게 될테니 일관된 경험을 할 수 있다.

이렇듯 모듈은 장점이 많으니 무엇이든지 모듈화면 좋을 것 같지만, 플랫폼 팀 입장에서는 여러 고민이 든다. 안정적이고 일관된 제품을 만들기 위해서 정책은 어떻게 단순화하면 좋을까? 어디까지 커스텀을 허용할까? (A팀의 요구사항이 앞으로 다른 팀에서도 필요할까?) 등등..

앱로그를 정의하는 입장에서도 어디까지 로그를 남길 것인지, 이후 로그 관리는 어떻게 해야할지 고민이 되었다. 오늘은 모듈 데이터를 분석하는 상황을 가정하고 어떤 점을 고민하며 모듈 앱로그를 정의하고 관리했는지 정리했다.

식별 key 값 정의하기

모듈은 여러 제품에서 사용한다. 그래서 특정 서비스 A의 모듈 데이터를 보고 싶다면, 모듈이 사용된 위치를 식별하기 위한 id 값을 꼭 남겨야한다.

우선 서비스와 모듈 관계가 1:1 인지 확인한다. 만약 서비스마다 모듈이 최대 1개만 노출된다면 service_id (서비스 식별값)을 key 로 남길 수 있을 것이다.

하지만 하나의 서비스에서 여러 위치에서 모듈을 노출시키는 경우도 많다. 이런 경우 모듈을 식별할 값을 새로 정의한다. 서버 개발자와 논의하여 제품에서 사용하는 key 값을 앱로그에도 동일하게 사용하면 좋다. 되도록이면 서버 개발자가 생성한 디멘젼 테이블의 값을 그대로 사용하면 가장 좋다. 앱로그와 테이블을 동일한 key 값으로 바로 join 해서 볼 수 있어 활용하기 좋고 추후 값을 관리하기도 좋기 때문이다.

플랫폼마다 로그가 동일한 방식으로 남는가

모듈에서 제공하는 플랫폼은 크게 3가지가 있었다. 안드로이드 화면, iOS 화면, Web 화면.

앱로그를 사용하는 사람이 누굴까? 제품팀 사람들이다. 그들은 제품을 출시후 데이터 빠르게 확인해서 제품 개선 지점을 파악하려고 한다. 그리고 모듈은 그 퍼널중 일부분이다. 그런데 모듈 앱로그가 플랫폼마다 다르게 남는다면 데이터를 조회하고 분석하는 과정에 비효율을 초래할 것이다. 그래서 '플랫폼마다 동일한 방식으로 로그가 남는가'를 중요하게 생각하고 모든 플랫폼마다 로그 QA를 진행했다.

물론 100% 동일하게 남지는 않는다. 예를 들어 이탈 동작 로그가 다를 수 있다. 안드로이드는 우측 하단에 백버튼이 있고, iOS는 백스와이프로 이탈할 수 있는 등 이탈 방식 자체가 달라서 어쩔 수 없는 부분도 있다. 하지만 퍼널 전환율에 사용되는 로그만큼은 동일한 방식으로 남도록 관리했다.

로그 이슈 재발 방지를 위해 모니터링

모듈은 로그 QA를 완료했더라도 코드 리팩토링 과정이나 특정 서비스 환경에서 언제든지 이슈가 발생 가능하다.

모듈 제품을 출시 후 여러 팀으로부터 로그 이슈를 제보받았다. 초기에는 이슈 로그를 대체해서 볼 수 있는 방법을 제공하는 등 일회성 대응에 머물렀다. 하지만 시간이 지나고 보니 반복되는 이슈들이 몇 가지 있었다. 이런 중요 로그 이슈를 감지하는 슬랙봇 얼럿을 만들어 모니터링을 구축하기 시작했다. 이로인해 적어도 동일한 이슈가 재발할 때 바로 개발자분들과 확인하여 문제를 신속하게 해결할 수 있게 되었다.

마무리하며

모듈 로그가 없던 시절과 대비해서 지금 가능해진 것은?

  • 사용자가 모듈에서 어떤 문구를 보고, 그중 어떤 버튼을 클릭했는지, 어떤 방식으로 이탈했는지 등등 퍼널 전환율을 볼 때 중요한 로그들은 일관된 기준으로 자동으로 남게 되었다.
  • 특정 위치에 뜨는 모듈의 지표를 확인하고 싶을 때 표준화된 key 값으로 데이터를 조회 가능해졌다.
  • 서비스가 달라도, 플랫폼이 달라도(Android, iOS, web) 로그가 동일한 방식으로 남게되었다.
  • 개별 제품팀에 속한 데이터 직군의 로그 QA시간이 줄어들었다.

다음 글에서는 모듈 앱로그를 마트화하고 대시보드를 만들어 제품팀에 공유하는 과정에서 들었던 고민을 정리해보겠다.

profile
DEEP DIVER

0개의 댓글