티스토리 뷰
AOP - 관점(관심) 지향 프로그래밍
■ Aspect Oriented Programming의 축약어이다.
■ 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화 하여 재사용 할수 있도록 지원.
■ OOP에서 바라보던 관점을 다르게 하여 부가기능적인 측면에서 보았을때 공통된 요소를 추출.
■ 가로(횡단)영역의 공통된 부분을 잘라냈다고 하여, 크로스컷팅(Cross-Cutting)이라고도 부름.
역할
- 인프라, 부가기능의 모듈화
° 모니터링, 로깅, 동기화, 오류검사 및 처리, 성능 최적화(캐싱)에 사용됨.
° 그 외의 각각 모듈들의 주 목적 외에 필요한 부가적인 기능에 사용.
aop를 사용하는 이유
→ oop에선 공통된 기능을 재사용하는 방법으로 상속이나 위임을 사용하지만
전체 애플리케이션에서 여기저기 사용되는 기능(ex - 로그)들은 상속이나 위임으로 처리하기에는 깔끔한 모듈화가
어렵기 때문.
장점
- 애플리 케이션 전체에 흩어진 공통기능이 하나의 장소에서 관리되어 유지보수가 좋다.
- 핵심로직과 부가기능의 명확한 분리로, 핵심 로직은 자신의 목적 외에 사항들에는 신경쓰지 않는다.
nest에서의 AOP(가로채기)
Middleware
- request객체, Response객체 및 애플리케이션의 요청-응답 주기에 대한 제어를 제공.
ex) 인증 미들웨어를 작성하여 요청에 대한 인증 및 권한 부여를 처리
Interceptor
- 요청 처리 전후에 실행된느 중간 처리단계
- 요청이 컨트롤러에 도달하기 전에 요청을 가로채거나, 응답을 가로채고 수정할수 있다.
ex) 로깅 인터셉터를 작성하여 각 요청의 성능을 모니터링하고 로깅할수 있다.
즉, 요청의 인증, 로깅, 예외 처리등의 횡단 관심사를 분리하여 중복 코드를 최소화하고 유지보수성을 향상 시킬수 있다.
'프로그래밍 기초 > CS' 카테고리의 다른 글
시간 복잡도와 공간 복잡도 (0) | 2024.06.19 |
---|---|
Stateful과 Stateless (1) | 2024.04.19 |
IoC 와 DI에 대하여 (0) | 2024.03.05 |
객체지향 프로그래밍 설계 5원칙이란? (0) | 2024.03.04 |
동시성문제와 격리수준에 대해서 (0) | 2024.02.20 |