12 Logging BEST Practices in 12 minutes
로그는 애플리케이션의 문제를 파악하고 해결하는 데 필수적입니다. 하지만 비효율적이고 구조화되지 않은 로깅은 문제를 더 복잡하게 만들 수 있습니다. 이 영상에서는 효율적이고 효과적인 로깅을 위한 12가지 베스트 프랙티스를 다룹니다. 1. 목표를 가진 로깅 * 무작위로 로그를 남기기보다는, 애플리케이션의 목표, 중요 작업, KPI를 기준으로 로그를 작성해야 합니다. * 예: 단순히 "에러 발생"이 아닌, 충분한 컨텍스트를 포함한 메시지를 남깁니다. 2. 로깅 레벨 사용 * Info: 일반적인 상태(성공적인 로그인, 트랜잭션 완료). * Warning: 경고 상태(지연된 프로세스). * Error: 주요 문제(데이터베이스 연결 실패). * Fatal: 치명적인 문제(시스템 다운). 3. 구조화된 로깅 * 단순 텍스트 로그 대신 JSON 형식과 같은 구조화된 형식을 사용합니다. * 구조화된 로그는 검색, 필터링, 분석에 더 효과적입니다. 4. 유용한 정보 포함 * 로그에는 누가, 무엇을, 어디서, 왜를 포함합니다. * 예: 사용자 ID, 요청 ID, 시스템 상태, 에러 스택 트레이스. 5. 로그 샘플링 * 높은 트래픽 시스템에서는 모든 로그를 저장하지 말고 샘플링을 통해 비용을 절감합니다. * 예: 성공 로그는 20%만 저장하고, 에러 로그는 모두 저장. 6. Canonical 로그라인 사용 * 단일 로그에 모든 주요 정보를 요약하여 기록합니다. * 예: 요청 시작부터 종료까지의 흐름을 한 줄로 요약. 7. 중앙집중형 로깅 * 로그를 한 곳으로 집계하여, 여러 서비스의 로그를 한눈에 볼 수 있도록 설정합니다. * 문제의 상호 영향을 빠르게 파악 가능. 8. 로그 보존 정책 설정 * 최근 로그는 빠르게 접근할 수 있도록 유지하고, 오래된 로그는 저비용 스토리지로 이전합니다. * 예: 디버그 로그는 7일, 에러 로그는 90일, 보안 로그는 1년 보관. 9. 보안 유지 * 로그에는 민감한 정보(비밀번호, 신용카드 번호 등)를 남기지 않도록 필터링과 암호화를 적용합니다. * 암호화: 전송 중 및 저장 시. * 접근 제어: 권한에 따라 로그 접근 제한. 10. 효율적인 로그 관리 * 성능에 영향을 최소화하려면 효율적인 로깅 라이브러리 사용, 샘플링, 별도 디스크에 로그 저장 등을 고려합니다. * 예: 최신 로깅 도구를 사용해 성능 저하를 줄임. 11. 로그와 메트릭 구분 * 로그는 디버깅용, 메트릭은 실시간 모니터링용으로 사용합니다. * 메트릭을 통해 에러 발생 빈도를 파악하고 알림을 설정. 12. 정기적 검토와 개선 * 로그 전략은 고정적이지 않습니다. 애플리케이션과 팀의 변화에 따라 로깅 방식을 주기적으로 검토하고 개선해야 합니다. https://www.youtube.com/watch?v=I2mWnh66Bkg