관점 지향 프로그래밍 (AOP, Aspect-Oriented Programming)
관점 지향 프로그래밍(AOP) 는 횡단 관심사를 분리하여 모듈성을 증가시키는 것을 말한다.
백엔드 애플리케이션이 갖춰야 할 요구사항 중에는 로깅, 보안, 트랜잭션 같은 애플리케이션 전반에 걸쳐 제공해야 하는 공통 요소들이 있는데 이러한 요소들을 횡단 관심사(cross-cutting concern) 이라고 한다.
소스 코드에서 횡단 관심사를 분리하지 않으면 비즈니스 로직과 횡단 관심사 코드가 섞여 코드가 이해하기 어렵게 되고 모듈로서의 응집도가 떨어지게 된다.
AOP 의 대표적인 컴포넌트는 인터셉터가 있다.
인터셉터는 서버로 들어오는 요청과 나가는 응답 객체를 가로채서 변경이 가능하다. 이를 이용하여 로깅을 할 수 있다.
예외 필터를 사용하여 어느 코드에서는 발생하는 에러를 잡아 일관적인 예외 처리 로직을 구현할 수 있다.
NestJS 에서는 데커레이터를 활용하여 AOP 를 적용한다.
참고 사이트 & 함께 보면 좋은 사이트
본 포스트는 한용재 저자의 NestJS로 배우는 백엔드 프로그래밍을 기반으로 스터디하며 정리한 내용들입니다.