프론트엔드의 로그 설정기 -1 : 사용자 행동 로그
사내에 적극적으로 안정적인 시스템 개발과 운영을 위해서 데이터독을 추진하였고, 이에 대한 결과로 로그에 대한 관심도 많아져서 겸사겸사 정리해본다.
글 목차
1. 로그?
2. 구체적으로 어떤 활동과 이벤트를 기록하는가?
3. 기록한건 어디다 쓰는가?
4. 프론트엔드에게 로그가 중요할까?
5. 의미있는 로그?
6. 사용자 행동 로그 남기려면? (feat 유저스토리)
7. 로그에 포함될 정보와 포함되면 안될 정보?
8. 맺음
1. 로그(log)?
로그(log)는 컴퓨터에서 일어나는 모든 종류의 활동, 이벤트를 기록한 것이다.
2. 구체적으로 어떤 활동과 이벤트를 기록하는가?
어플리케이션의 상태, 실행된 작업, 발생한 오류, 시스템 경고, 트랜잭션(데이터베이스 상태 변화 수행 작업 단위) 정보 등 다양한 데이터를 기록한다.
3. 기록한건 어디다 쓰는가?
1. 문제해결을 위한 디버깅 : 에러 발생시 어느지점에서 발생했는지 확인
2. 성능 지표 관리 모니터링 : 작업에 소요된 시간 측정
3. 이상 행동 모니터링 : 비정상적이거나 올바르지 못한 접근을 모니터링할 수 있다.
4. 법적 증거 : 로그는 데이터 보호 및 프라이버시 관련 법률의 법적 요구사항을 충족하는데 쓰이기도 한다.
5. 비즈니스 (+마케팅) : 사용자 행동을 분석하여 비즈니스 용도로 활용한다.
4. 프론트엔드에게도 로그가 중요할까?
이건 어디까지나 내 사견에 불과하다
처음에 로그라고 했을때 그렇게 생각했었다. 프론트엔드에게도 로그가 중요한가?
이 생각의 근간은 사실 로그가 뭔지는 알지만 그닥 중점적으로 배워본적도없거니와 취준생이기도 했고 내가 한 것들은 기술에 대한 배움의 연속이였기때문이라고 생각한다.
근데 적용하면서 느낀 건 로그에는 프론트엔드고 백엔드고 상관이없다고 생각한다.
단지 각각이 사용하는 목적이 조금 다를 뿐.
5. 의미있는 로그 ?
개인적으로 기록은 꼭 소프트웨어 로깅이 아니더라도 사람으로써 각자의 삶에 큰 도움이 된다고 본다.
기록학이라는 게 명시적으로 없었던 때부터도 일기의 중요성과 돌아보는 삶의 중요성을 알려주는 사례는 더없이 많다.
하지만 뭣 모를 시절 초등학생의 일기가 그렇듯 매일 날씨가 맑고 매일 먹은것만 기록해선 아주 의미있는 기록이라고 할 수는 없을것이다.
그럼에도 불구하고 날씨맑음과 매일 먹은것에대한 기록의 연속조차 아주 무의미한 활동 이라고 치부하기도 어려운게
기록 자체만으로도 의미있는것은 매일 날씨가 맑다는 일기를 내가 귀찮아도 몇일 지속했는지, 매일 뭘 먹었는지 알 수 있고 통계를 낼 수있다는것이다.
그래서 로깅에는 필수적으로 통계가 필요하다고 생각한다.
나는 이미 데이터독이라는 시스템을통해서 통계자체가 필요충족된 상황이라 통계를 내기 위한 자체 시스템은 필요없지만.
좀 더 유의미한 지표를 뽑아내고, 통계를 내기위해 고민함은 개발자로써 작은 정보많으로도 큰 시너지를 낼 수 있을것이다.
나는 이러한 생각들을 통해서 의미있는 로그란 무엇인가 생각해봤고
결과적으로 사용자 행동에 의미있는 로그는 유저스토리와 커플링된 로그라고 생각했다.
혹시 개개인의 삶에 기록을 어떻게 남겨야될지 어떤 기록할지 고민된다면 사진으로 첨부해둔 거인의 노트라는 책을 한 번 읽어보길 추천한다.
6. 사용자 행동 로그 남기려면? (feat 유저스토리)
이전 생스타트업 생존기에도 몇번 언급은 되었을 것 같은데
나는 기획이 넘어오면 그걸 유저스토리로 한 단계 정제시키고 인수조건을 적는 작업을 진행 한다.
스토리라는 형태로 변환하면서 어떻게 보면 어렵게 다가갈 모든 내용들이 쉽게 변환되기도하고 전달되는 내용도 명확해지고 설계도 비교적 쉬워지기 때문에 늘 하는 작업이며,
유저스토리를 적으면서 주로 고려하는 사항은 다음과 같다.
1. 어떤 유저가 뭘 원하고 어떤 행동으로 인해서 그 가치를 충족할 수 있는지
: as a , i want, so that 을 적는다. 추가로 기획에서 의도한 사항이 무엇인지 도 더불어 생각해보고 물어보기도한다
2. 사용자 여정
: 해당 유저가 어떤 여정을 통해서 1의 가치를 충족하는지 작성 한다.
3. 인수조건
: 백엔드와 프론트엔드는 어떤 기능을 완성시켜야되며 어떤 사항들이 완료되야 이 작업의 완수, 미완수를 판별하는가. 추가적으로 고려해야되거나 개발적으로 있어야될것은 무엇인지 작성한다.
아주 처음 사용자 스토리 맵 만들기 라는 책을 읽을때에는 하나하나 스스로 질문해보고 이것으로 뭔가를 얻으며 뭘하는지 에 대한 작업을 해보기도 했었는데 이작업도 유의미하다고 생각한다. (물론 시간이 있다면...)
유저스토리야 말로 이미 유저에게 전달하는 의미있는 기능 에 대한 한차례의 정리가 끝난 상태이기 때문에 로깅과 브라우저 테스트에는 유저스토리 단계에서 작성한 사용자 여정 에 중점을 맞춘 로깅을 진행하면 되겠다고 생각했다.
그래서 유저스토리를 활용하여 우리 프로덕트에 맞는 중요 행동에 대해서 정의하고 세부 로깅을 시작했다.
7. 로그에 포함될 정보와 포함되면 안될 정보?
로그에 포함될 정보로는 무엇이 좋을까? 나는 로그 구성은 처음임으로 다음과 같은 정보를 추가했다.
1. 로그에 대한 설명
2. 로그에 대한 이벤트 타입 이벤트 타입의 경우에는 유저스토리의 카테고리로 잡았으며 행동을 1.로그에대한 설명에 적었다
3. (로그인했다면) 사용자의 멤버 아이디
4. 현재 실행환경
5. 현재 실행버젼
6. 발생시간 은 넣으려고 했으나 어짜피 데이터독 기록에 남아서 빼기로했다.
포함하면 안될 정보는 다음과 같다.
- 개인 식별 정보(PII)
- 사용자 금융 정보
- 사용자 인증 정보 (토큰등등)
- 사용자 건강 정보
- 보안 관련 정보 (코드의 보안을 노출하는 정보)
- 중복정보 (그러나 중복정보는 있어도 큰 문제는 없다. 일반적으로 로그가 적은것보다는 많은게 좋다)
8. 맺음
로깅은 참 가성비 좋은 활동이라고 생각한다.
삶에서의 기록을 남기는것도 마찬가지이고.
조사하고 공부하고 적용하고 그 자체에 정말 큰 행복을 느끼는 요즘이다.
아직 성능최적화를 위한 로그 등등이 많이 남아있으니 좀 더 본격적으로 로그 세팅을 이행하지않을까 기대된다.
참고 자료
GPT4
사용자 스토리 맵 만들기
https://m.yes24.com/Goods/Detail/67033238
로그 관리 모범 사례 (뉴렐릭) / 로그에 포함될 정보와 포함되면 안될 정보
https://newrelic.com/kr/resources/white-papers/log-management-best-practices