필터
필터란?
Spring Boot에서 필터(Filter)는 HTTP 요청 및 응답을 가로채서 특정 작업을 수행하기 위해 사용됨.
필터는 주로 보안, 로깅, 인증, 권한 부여, 데이터 압축, 데이터 변환, 캐싱 등의 목적으로 사용되며, 요청이 컨트롤러에 도달하기 전에 또는 응답이 클라이언트에 전달되기 전에 특정 로직을 실행할 수 있게 함.
필터가 필요한 이유
- 공통 작업 처리: 애플리케이션 전반에 걸쳐 공통적으로 수행되어야 하는 작업을 중앙에서 처리할 수 있음. 예를 들어, 모든 요청에 대해 CORS 처리, 로깅, 요청 및 응답의 인코딩 설정 등을 필터에서 처리할 수 있음.
- 보안: 인증 및 권한 부여와 같은 보안 관련 작업을 처리할 수 있음. 요청이 실제 컨트롤러에 도달하기 전에 인증된 사용자만 접근할 수 있도록 필터에서 요청을 차단하거나 리디렉션할 수 있음.
- 요청 및 응답 변환: 요청 데이터 또는 응답 데이터를 가로채서 변환하거나 추가적인 처리를 할 수 있음. 예를 들어, 응답 데이터를 압축하거나 JSON 데이터를 특정 형식으로 변환하는 작업을 필터에서 수행할 수 있음.
- 데이터 검증 및 조작: 필터를 통해 요청 데이터의 유효성을 검증하거나 불필요한 데이터를 제거할 수 있음. 이러한 작업은 컨트롤러의 책임을 줄이고, 재사용 가능성을 높여줌.
- 글로벌 에러 핸들링: 애플리케이션 전반에 걸친 에러 처리를 필터에서 수행할 수 있음. 특정 에러가 발생하면 전역적으로 필터에서 처리하도록 구성할 수 있음.
Filter는 한 개만 존재하는 것이 아니라 이렇게 여러 개가 Chain 형식으로 묶여서 처리될 수 있음.
로깅
로깅을 왜 할까?
- 1. 디버깅 및 문제 해결
- 에러 추적: 애플리케이션에서 발생하는 오류나 예외를 로그에 기록하면, 어떤 상황에서 문제가 발생했는지 추적할 수 있음. 로그를 통해 오류의 원인을 파악하고, 이를 신속하게 해결할 수 있음.
- 실시간 문제 해결: 운영 중인 애플리케이션에서 실시간으로 발생하는 문제를 파악할 수 있음. 예를 들어, 특정 기능이 제대로 동작하지 않는 경우 로그를 확인해 어떤 부분에서 문제가 발생했는지 즉시 대응할 수 있음.
- 시스템 성능 분석: 로그 데이터를 분석하면 애플리케이션의 성능을 모니터링할 수 있음. 어떤 요청이 오래 걸리는지, 병목 현상이 발생하는지, 리소스 사용량이 어떤지 등을 로그를 통해 확인할 수 있음.
- 애플리케이션 상태 모니터링: 서버의 상태, 애플리케이션의 가용성, 데이터베이스 연결 상태 등을 지속적으로 모니터링하기 위해 로그를 사용함. 이를 통해 시스템이 정상적으로 작동하고 있는지 확인할 수 있음.
- 접근 기록: 누가 언제 어떤 데이터에 접근했는지 기록하는 것은 보안의 중요한 부분임. 이를 통해 권한이 없는 사용자가 시스템에 접근하려 했던 시도를 파악하거나, 중요한 데이터에 대한 접근 로그를 남겨 감사 기록으로 사용할 수 있음.
- 침입 탐지: 로그를 통해 의심스러운 활동이나 잠재적인 보안 위협을 감지할 수 있음. 예를 들어, 비정상적인 로그인 시도나 특정 패턴의 공격을 로그로 기록해 보안 침입을 빠르게 인지할 수 있음.
- 사용 패턴 이해: 로그를 분석하면 사용자가 애플리케이션을 어떻게 사용하는지 알 수 있음. 어떤 기능이 가장 많이 사용되는지, 사용자들이 어떤 경로를 통해 애플리케이션을 탐색하는지 등을 파악할 수 있음.
- 기능 개선: 사용자 행동에 대한 이해를 바탕으로 애플리케이션의 특정 기능을 개선하거나, 사용자 경험을 최적화하는 데 로그 데이터를 활용할 수 있음.
- 법적 요구사항 준수: 특정 산업에서는 로그를 일정 기간 동안 보관해야 하는 법적 요구사항이 있음. 예를 들어, 금융 서비스나 의료 분야에서는 트랜잭션 기록, 사용자 접근 기록 등을 일정 기간 동안 보관해야 함.
- 감사 준비: 로그는 외부 감사 또는 규제 기관의 요청에 대비해 시스템의 활동을 기록하는 데 필수적임.
- 예측 유지보수: 로그를 통해 시스템의 패턴을 분석하고, 향후 발생할 수 있는 문제를 예측할 수 있음. 이를 통해 사전에 조치를 취해 시스템 중단이나 성능 저하를 방지할 수 있음.
- 운영 인사이트 제공: 로그 데이터는 시스템의 다양한 측면에 대한 인사이트를 제공하여 운영 효율성을 높일 수 있음.
로깅된 데이터는 어디서 확인을 보통 할까?
로깅된 데이터는 설정에 따라 콘솔, 파일, 데이터베이스, 중앙화된 로그 관리 시스템, 또는 클라우드 기반 서비스에 저장될 수 있음.
각 방법에 따라 로그를 확인할 수 있는 방법이 다르며, 개발 단계에서는 콘솔이나 파일 로그를 주로 사용하고, 운영 환경에서는 파일, 데이터베이스, 또는 중앙화된 시스템을 통해 로그를 관리하고 모니터링함.
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] RequestEntity (0) | 2024.08.30 |
---|---|
[Spring] [Memo] 메서드, 변수 명 선택, 중복된 @Transactional 처리, Pagenation 시 추가 데이터 압축 등 추가 Tips (1) | 2024.08.30 |
[Spring] JWT 다루기 (0) | 2024.08.24 |
[Spring] JWT 란? (0) | 2024.08.24 |
[Spring] 인증과 인가, 쿠키와 세션 (0) | 2024.08.24 |