AOP(Aspect Oriented Programming)란?

soso·2023년 10월 5일

AOP(Aspect Oriented Programming)란?

AOP은 소프트웨어 개발에서 모듈화된 관심사(Concern)를 분리하고 모듈 간의 결합도를 줄이기 위한 프로그래밍 패러다임이다.
AOP는 주로 비즈니스 로직과는 다른, 횡단 관심사(cross-cutting concerns)를 처리하는 데 사용된다.
즉 객체를 핵심관심횡단관심으로 구분하여 처리하는 프로그래밍 기법이다.
(출처:https://itwiki.kr/w/%EA%B4%80%EC%A0%90_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)

  • 핵심관심(Core Concerns, Primary Concerns): 핵심 업무 로직을 수행하는 기능
  • 횡단관심(Cross-cutting Concerns): 핵심 기능을 도와주는 부가적인 기능(로깅, 보안 등)

용어

(출처:https://itwiki.kr/w/%EA%B4%80%EC%A0%90_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)

장점과 단점

장점

1. 모듈성 향상
AOP는 관심사의 분리를 통해 모듈성을 향상 시킨다.
핵심 비즈니스 로직과 횡단 관심사가 분리되므로 각 모듈은 더 작고 응집력 있게 설계될 수 있다.

2. 중복 제거
AOP를 사용하면 횡단 관심사를 여러 모듈에서 중복해서 구현하는 것을 방지할 수 있다.
예를 들어, 보안과 로깅 코드를 모든 메서드에 반복해서 삽입하는 것 대신에, AOP를 사용하여 한 곳에서 관리가 가능하다.

3. 유지보수 용이성
AOP를 사용하면 횡단 관심사의 변경이 쉬워진다.
예를 들어, 로깅 수준을 변경하거나 보안 정책을 업데이트하는 경우, AOP를 통해 이러한 변경을 한 곳에서 처리할 수 있다.

4. 재사용성
AOP를 사용하면 횡단 관심사를 재사용할 수 있다.
한 번 구현한 관심사를 다른 모듈에 쉽게 적용할 수 있다.

단점

1. 복잡성
AOP를 적용하면 코드의 복잡성이 증가할 수 있다.
특히, 적절한 Pointcut을 정의하고 Aspect를 설정하는 것이 복잡할 수 있다.

2. 암묵적인 동작
AOP를 사용하면 코드의 동작이 암묵적으로 변경될 수 있다.
Aspect를 적용하는 동작이 명시적으로 보이지 않을 수 있기 때문에 예상치 못한 동작이 발생할 수 있다.

3. 디버깅 어려움
AOP를 사용한 코드의 디버깅은 어려울 수 있다.
Aspect를 통해 적용된 동작이 코드의 어느 지점에서 실행되는지 명확히 알기 어려울 수 있다.

4. 성능 저하
AOP를 사용하면 약간의 성능 저하가 발생할 수 있다.
Aspect를 적용하는 과정이 추가적인 처리를 필요로 하기 때문.
특히, 너무 많은 Aspect가 적용되면 성능에 미치는 영향이 커질 수 있다.

profile
오늘의 기록

0개의 댓글