2023.02.15 TIL 횡단 관심사? AOP? #나중에 개발방법론에 자세히 써보기
2023. 2. 15. 22:20ㆍ카테고리 없음
728x90
알게 된 점
AOP?
AOP는 Aspect Oriented Programming, 즉 관점 지향 프로그래밍이란, 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임
여기서 중복되는 로직들을
모듈화 하여 관리하는것
횡단 관심사(Cross-cutting Concerns)란?
출처 - 위키백과
다른 관심사에 영향을 미치는 프로그램의 애스펙트이다. 이 관심사들은 디자인과 구현 면에서 시스템의 나머지 부분으로부터 깨끗이 분해되지 못하는 경우가 있을 수 있으며 분산(코드 중복)되거나 얽히는(시스템 간의 상당한 의존성 존재) 일이 일어날 수 있다.
여기서 관심사 = 하나의 기능이나 모듈
계좌이체, 입출금, 이자 계산을 핵심 관심으로 보고
로깅, 보안, 트랜잭션 (핵심 관심에 들어가야 할 기능들 = 횡단 관심)이라고 한다
그럼 기능 구현을 할때
계좌이체의 로깅
입출금의 로깅
이자계산의 로깅
계좌이체의 보안
입출금의 보안
이자계산의 보안
계좌이체의 트랜잭션
입출금의 트랜잭션
이자계산의 트랜잭션
을 구현 하기보단
로깅이면 로깅, 보안이면 보안, 트랜잭션이면 트랜잭션으로 구분을 해서 구현을 해놓고
각각 로직에 맞게 쓰면 코드가 좀더 깨끗하지 않을까 해서 나온것이 AOP 인것 같다
횡단 관심사 : 다수의 모듈에 공통적으로 나타나는 부분
핵심 관심사 : 모듈별로 다르게 나타나는 부분
코드 = 핵심 관심사 + 횡단 관심사