Skip to Content
Infra & DevOps운영 로그는 어떻게 설계하고 봐야 하는가
☁️ Infra & DevOps2020년 3월 23일

운영 로그는 어떻게 설계하고 봐야 하는가

#e-commerce#commerce-platform#operations#logging#infra-devops
Series 3 · Operations / Tooling2 / 4Infra & DevOps
배치 흐름 위에서 운영 로그를 해석 가능한 단서로 보는 관점을 정리합니다. 다음 글에서는 운영자 관점의 세션 관리 도구화로 이어집니다.
이전 글: 배치 스케줄러다음 글: 어드민 세션 관리 기능

운영 로그를 읽을 때 함께 봐야 했던 운영 도구와 배치의 관계

운영 로그는 장애 대응과 실시간 관찰의 기본 도구였습니다. 문제는 로그를 많이 남기는 것 자체가 목적이 아니라, 필요할 때 해석 가능한 형태로 남기는 것이었습니다.

로그를 설계한다는 것

운영 로그를 설계할 때는 서비스 단위로 로그 관점을 다르게 가져가야 했습니다. site, api, admin, omni처럼 역할이 다른 서비스는 애초에 관찰해야 할 지점이 달랐기 때문입니다. 고객 요청을 다루는 흐름과 운영자가 쓰는 관리자 기능은 같은 기준으로 보면 안 됐습니다.

로그를 설계할 때 중요했던 건 다음과 같습니다.

  • 어디서 문제가 났는지 빠르게 좁힐 수 있는가
  • 운영자가 요청 흐름을 따라갈 수 있는가
  • 상시 로그량을 감당할 수 있는가
  • 필요할 때 더 많은 단서를 확보할 수 있는가

즉 로그는 단순 텍스트 출력이 아니라 운영용 인터페이스였습니다.

로그를 나중에 읽는 사람은 대부분 로그를 남긴 사람이 아닙니다. 운영자이거나, 다른 개발자이거나, 몇 달 뒤의 미래의 나일 가능성이 큽니다. 그래서 로그는 “지금 내가 찍기 편한 문자열”보다 “나중에 누가 봐도 흐름이 이어지는 단서”가 되어야 했습니다.

서비스별 로그 관점이 달랐던 이유

site는 사용자 경험과 직결되고, api는 시스템 간 호출과 연동 흐름이 중요하고, admin은 운영자 액션과 권한 흐름이 중요합니다. 같은 에러라도 어느 레이어에서 봤는지에 따라 의미가 달라집니다.

그래서 로그는 “모든 걸 한 군데에 많이 남기는 방식”보다, 서비스별 관점을 나누고 필요한 순간에 깊이를 조절하는 방식이 더 유효했습니다.

이 구분이 중요한 이유는, 문제를 좁히는 순서 자체가 달라지기 때문입니다. site에서 보이는 이상 징후가 꼭 site 레이어 문제라는 뜻은 아니고, api나 배치, 캐시, 연동 시스템의 문제일 수도 있습니다. 로그가 서비스별 관점으로 정리돼 있지 않으면 이런 흐름을 추적하기가 훨씬 어려워집니다.

운영 중 로그를 다루는 방식

상시로 디버그 로그를 많이 남기기는 어렵습니다. 그래서 필요한 순간에만 로그 레벨을 올려 더 많은 단서를 확보하는 방식이 중요해졌습니다. 이 지점은 다음 글에서 다룰 log4j 기반 런타임 동적 로그 레벨 조정 도구와 직접 연결됩니다.

결국 운영 로그 설계의 핵심은 두 가지 균형입니다.

  1. 평소에는 너무 무겁지 않게 유지할 것
  2. 필요할 때는 충분히 깊게 들어갈 수 있을 것

이 균형을 잡지 못하면 로그는 either 소음이 되거나, 반대로 아무 단서도 남기지 못하는 장식이 됩니다.

실제 운영을 돌리다 보면 TTL 적용 및 간헐적 발생 메모리 수정 같은 문제가 같이 따라옵니다. 운영 로그는 단지 에러를 기록하는 용도가 아니라, 메모리 문제나 세션 최적화처럼 당장 눈앞에서 재현되지 않는 문제를 다시 좁혀갈 수 있게 해주는 단서여야 했습니다. 그래서 로그 설계와 운영 도구화는 따로 떨어진 주제가 아니라 같은 축에 있었습니다.

다음 글에서는 어드민 세션 관리 기능이 왜 필요했는지를 통해 운영 도구화 관점을 이어서 정리합니다: 어드민 세션 관리 기능은 왜 필요했는가

Last updated on