2024.03.08 TIL - AOP

김민석·2024년 3월 11일
0

TIL

목록 보기
48/78

AOP

AOP(Aspect-Oriented Programming)는 코드에서 여러 부분에 걸쳐서 반복되는 공통 관심사를 분리하고 중앙에서 관리할 수 있게 하는 프로그래밍 기법입니다.

  • 이를 통해 코드의 모듈성을 향상시키고 중복을 줄일 수 있다.

  • AOP라는 개념이 Nest.js에서만 통용되는 것은 아닙니다. 기본적인 JavaScript에서는 프록시 객체나 헬퍼 객체들로 이러한 개념을 구현할 수 있다.

프록시 객체

  • 프록시 객체는 JavaScript 내장 객체
  • 다른 객체의 기본 동작을 사용자 정의 동작으로 수정할 수 있게 해줌
  • 로깅이나 인증 및 에러 처리 등을 구현할 수 있음

헬퍼 객체

  • 공통 기능을 모듈화하고 이를 여러 부분에서 호출할 수 있다.

전통적 프로그래밍 방식과의 비교

집을 짓는다고 생각해봅시다. 각 방에는 문이 필요합니다.

  • 문은 집의 모든 방에 공통으로 필요한 것이므로 이는 "공통 관심사"입니다.

전통적 프로그래밍 방식

  • 각 방을 따로 만들고 각 방에 개별적으로 문을 설치합니다.
  • 만약 모든 문의 디자인을 바꾸려면 모든 방의 문을 각각 변경해야 합니다.

AOP 방식

  • 문을 설계하고 제작하는 작업을 별도의 공통 모듈에서 수행하고 이를 모든 방에 적용합니다!
  • 이렇게 하면 문의 디자인을 한 곳에서 변경하면 모든 방의 문이 자동으로 업데이트됩니다.

로깅이나 인증, 에러 처리와 같은 기능들은 사실 어플리케이션에서 계속 공통적으로 필요로 하는 기능들입니다.
이러한 기능들을 각각의 코드 블록에 반복해서 작성하는 것은 비효율적이고 에러를 유발할 수 있습니다!

profile
화이팅 화이팅

0개의 댓글