inblog logo
|
개발 하는 하구리
    NestJSOOP

    관점 지향 프로그래밍 (Aspect-Oriented Programming, AOP)

    NestJS에서 사용되는 AOP 개념에 대해 알아보자.
    Nov 03, 2023
    관점 지향 프로그래밍 (Aspect-Oriented Programming, AOP)
    Contents
    관점 지향 프로그래밍이란?NestJS에서의 AOPReferences
    관점 지향 프로그래밍은 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 관점 지향 프로그램이은 새로운 프로그래밍 패러다임이 아니라, 객체 지향 프로그래밍 (OOP)의 개념을 더욱 보완, 확장해주는 개념이다.
    notion image

    관점 지향 프로그래밍이란?

    핵심이 되는 기능을 하는 모듈들이 정상적으로 동작할 수 있도록 각 핵심 모듈마다 작성되어야 하는 로직들이 있다 (로깅, 보안, 트랜잭션 등). 이를 하나의 공통 모듈로 구분하여 핵심 모듈 밖에서 필요한 시점에 호출하여 실행되도록 한다. 따라서 AOP에서는 관심의 분리 (Seperation of Concerns) 라는 개념을 이해하고 있는 것이 중요하다.
    • 핵심 관심 (Core Concern): 계좌이체, 입출금, 이자 계산 로직 등
    • 횡단 관심 (Crosscut Concern): 유효성 검사, 로깅, 보안 등
    이 그림을 보면 핵심 관심을 관통하여 횡단 관심들이 관여하고 있는 것을 볼 수 있다.
    이 그림을 보면 핵심 관심을 관통하여 횡단 관심들이 관여하고 있는 것을 볼 수 있다.

    NestJS에서의 AOP

    Intecepter & Exception Filter

    AOP가 적용된 대표적인 컴포넌트로는 인터셉터 (inteceptor)가 있다. 인터셉터는 서버로 들어오는 요청과 서버에서 나가는 응답 객체를 중간에 가로채서 변결할 수 있다. 예시로는,
    • 요청 객체에 포함된 정보들을 이용하여 로깅 구성
    • snake_case로 작성된 응답 객체의 키를 camelCase로 변경
    또한 예외 필터 (exception filter)를 이용하여 어느 코드에서든 발생하는 에러를 잡아서 일괄적인 예외 처리 로직을 구성할 수도 있다.

    Decorator

    특정 컴포넌트에만 적용할 때에는 데코레이터를 사용하며, 원하는 데코레이터를 커스터마이징하여 사용할 수 있다.

    References

    관점 지향 프로그래밍
    관점 지향 프로그래밍
    https://ko.wikipedia.org/wiki/관점_지향_프로그래밍
    OOP (객체지향), AOP(관점지향)
    OOP(Object Oriented Programming, 객체지향 프로그래밍) : 모든 데이터를 현실에 빗대어 객체로 다루는 프로그래밍 기법. 객체지향 언어의 5가지 특징은 다음과 같다. 1 ) 캡슐화 (Encapsulation) : 데이터와 함수를 하나로 묶는다. 데이터의 세부 내용이 객체 은닉된다. 즉, 데이터 변경으로 인한 에러가 줄어들고, 객체들간에 데이터를 자세히 알 필요가 없으므로 코드가 단순해진다. 객체와 함수의 재사용이 쉽다. 2 ) 정보은닉 (Information Hiding) : private으로 선언한 데이터는 자기 자신을 통해서만(setter, getter) 접근 가능하다. 각 객체간의 수정이 다른 객체에 미치는 영향을 최소화 한다. 외부 객체의 직접 접근을 막아 프로젝트 확장 시..
    OOP (객체지향), AOP(관점지향)
    https://greendreamtrre.tistory.com/601
    OOP (객체지향), AOP(관점지향)
    ebook-product.kyobobook.co.kr
    https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000005150435
    Share article

    개발 하는 하구리

    RSS·Powered by Inblog