오늘은 자잘한 업무를 처리하느라 마이그레이션 작업을 진행하지 않으려고 한다.
MoM을 진행하는 동안 업무일 기준으로 하루에 하나의 포스트를 작성하고자 하기 때문에 오늘은 회사의 제도 중 하나를 소개해보고자 한다. 마침 이번주에는 내가 On-Call이라 활동을 진행중이기도 하다.
LINE의 서버 개발 부서들은 On-Call이라는 시스템을 가지고 있다.
On-Call의 사전적인 의미를 찾아보면 다음과 같다.
If a worker such as a doctor is on call, he or she is available to work or make official visits at any time when needed:
간단하게 이야기해보면 필요한 상황에 바로 업무 대응을 할 수 있는 준비상태를 의미한다. 당직이나 당번이 이에 해당한다고 볼 수 있고, 백엔드 개발자들이 주로 사용하는 의미는 업무시간 외에 서비스에 문제가 발생하거나 알람 등이 발생할 때 이를 먼저 판단하고 처리하는 역할 정도로 볼 수 있을 것 같다.
그렇다면 우리 팀에서는 어떻게 제도를 운영하고 있을까?
일단 한명이 1주일간 On-Call을 진행한다. 그리고 아래의 사항들을 수행하고 있다.
- 매일 아침 Server Daily Report를 확인 하고 문제가 의심되는 로그를 분석해서 문제를 해결하거나 위임한다
- 문자, 메일, 메신저, 슬랙으로 전달되는 시스템 WARN, ERROR, FATAL 로그, 각종 알람을 확인하고 간단한 분석을 대화방에 공유한다
- 날마다 쌓이는 다양한 로그들을 확인 후 로그의 레벨 조절하거나 메시지를 개선하는 등의 로그 개선 작업을 진행한다
- 슬랙의 사내 문의 채널에 질문이 등록되면 먼저 확인해서 처리 혹은 위임한다
팀 별로 역할이 조금씩은 다를 수 있겠지만 LINE의 서버 개발 부서들은 대부분 비슷한 제도를 수행하고 있다고 볼 수 있을 것이다.
다양한 업무를 하는 것으로 볼 수 있겠지만, 핵심은 다음의 두 가지다.
- On-Call 기간 동안 다양한 경로로 시스템의 안정성을 모니터링
- 모니터링 결과 이상 신호가 감지되면 1차 확인 및 처리 후 공유
24시간 서비스를 제공하는 메신저의 특성상 다양한 분서들이 모니터링을 진행하는데 서버 개발자들이 직접 봐야할 부분들을 서로의 시간을 나누어서 진행함으로써 나머지 인원들이 좀 더 개발과 휴식에 집중할 수 있도록 한다고 볼 수 있다.
문제를 파악하는 것과 그에 대한 1차 조치를 취하기 위해서는 시스템의 전반을 이해하고 어떤 신호들이 존재하는지, 상황에 따른 대처 방법들은 어떤 것이 있는지를 알아야 한다. 따라서 팀에 합류한지 얼마 되지 않은 인원들은 기존 멤버와 함께 On-Call을 진행하는 등의 과정을 통해서 적응에 필요한 시간을 가지고 있다.
On-Call 업무에 대한 회고를 정기적으로 진행하면서 효율성을 높이기 위한 방법들을 찾고 있으며, 만들어둔 On-Call 매뉴얼도 지속적으로 개선하고 있다.