AOP(Aspect-Oriented Programming)는 코드에서 여러 부분에 걸쳐서 반복되는 공통 관심사를 분리하고 중앙에서 관리할 수 있게 하는 프로그래밍 기법입니다.
이를 통해 코드의 모듈성을 향상시키고 중복을 줄일 수 있다.
AOP라는 개념이 Nest.js에서만 통용되는 것은 아닙니다. 기본적인 JavaScript에서는 프록시 객체나 헬퍼 객체들로 이러한 개념을 구현할 수 있다.
집을 짓는다고 생각해봅시다. 각 방에는 문이 필요합니다.
전통적 프로그래밍 방식
AOP 방식
로깅이나 인증, 에러 처리와 같은 기능들은 사실 어플리케이션에서 계속 공통적으로 필요로 하는 기능들입니다.
이러한 기능들을 각각의 코드 블록에 반복해서 작성하는 것은 비효율적이고 에러를 유발할 수 있습니다!