AOP(Aspect-Oriented Programming)
2026년 5월 17일
-
AOP(Aspect-Oriented Programming)는 코드에서 여러 부분에 걸쳐서 반복되는 공통 관심사를 분리하고 중앙에서 관리할 수 있게 하는 프로그래밍 기법이다.
-
AOP는 우리말로 관점 지향 프로그래밍이라고 한다.
-
따라서 이를 통해 코드의 모듈(Module)성을 향상시키고 흩어진 관심사를 응집시키는 것을 말한다.
-
NestJS에서는 인터셉터(Interceptor)를 통해 AOP의 개념을 적용시킨다.
AOP의 역할
- 하지만 만약 특정 클래스(class)들에서 공통적으로 사용하는 기능이 있고, 심지어 비즈니스 로직과 관련이 없거나 부가적인 기능일 때, 각각의 클래스(class)마다 해당 기능을 파편화 시켜 넣는건 비효율적이다.

- 따라서 AOP는 이걸 하나의 책임을 지는 기능으로 묶는 뒤에 (중요한건 이 '관점'에 대해서만 책임을 지도록 응집화를 해야함) 공통 기능을 사용할 각각의 클래스(class), 모듈(Module)에 덮어씌워서 사용하는 것이다.
프록시 객체
- 프록시 객체는 JavaScript 내장 객체이다.
- 다른 객체의 기본 동작을 사용자 정의 동작으로 수정할 수 있게 해준다
- 로깅이나 인증 및 에러 처리 등을 구현할 수 있다
헬퍼 객체 헬퍼 객체는 특정 작업을 수행하는 메서드만 입맞에 맞게 정의를 하고 이를 통해 코드의 재사용성을 높일 수 있다. → 즉, 공통 기능을 모듈화하고 이를 여러 부분에서 호출할 수 있음.