티스토리 뷰

프로그래밍 기초/CS

AOP에 대하여

StartCoriny 2024. 4. 17. 04:56

AOP - 관점(관심) 지향 프로그래밍

■ Aspect Oriented Programming의 축약어이다.

■ 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화 하여 재사용 할수 있도록 지원.

■ OOP에서 바라보던 관점을 다르게 하여 부가기능적인 측면에서 보았을때 공통된 요소를 추출.

■ 가로(횡단)영역의 공통된 부분을 잘라냈다고 하여, 크로스컷팅(Cross-Cutting)이라고도 부름.

 

 

역할

  - 인프라, 부가기능의 모듈화

    ° 모니터링, 로깅, 동기화, 오류검사 및 처리, 성능 최적화(캐싱)에 사용됨.

    ° 그 외의 각각 모듈들의 주 목적 외에 필요한 부가적인 기능에 사용.

 

aop를 사용하는 이유

→ oop에선 공통된 기능을 재사용하는 방법으로 상속이나 위임을 사용하지만

    전체 애플리케이션에서 여기저기 사용되는 기능(ex - 로그)들은 상속이나 위임으로 처리하기에는 깔끔한 모듈화가

    어렵기 때문.

  

장점

  - 애플리 케이션 전체에 흩어진 공통기능이 하나의 장소에서 관리되어 유지보수가 좋다.

  - 핵심로직과  부가기능의 명확한 분리로, 핵심 로직은 자신의 목적 외에 사항들에는 신경쓰지 않는다.

 

nest에서의 AOP(가로채기)

Middleware

    - request객체, Response객체 및 애플리케이션의 요청-응답 주기에 대한 제어를 제공.

    ex) 인증 미들웨어를 작성하여 요청에 대한 인증 및 권한 부여를 처리

Interceptor

    - 요청 처리 전후에 실행된느 중간 처리단계

    - 요청이 컨트롤러에 도달하기 전에 요청을 가로채거나, 응답을 가로채고 수정할수 있다.

    ex) 로깅 인터셉터를 작성하여 각 요청의 성능을 모니터링하고 로깅할수 있다.

 

즉, 요청의 인증, 로깅, 예외 처리등의 횡단 관심사를 분리하여 중복 코드를 최소화하고 유지보수성을 향상 시킬수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함