AOP란?

406호 정수가 신입으로 프로젝트를 진행하고 있습니다.

그러던 어느날, 성희 팀장님을 통해서 ‘반장님, 지금 개발중인 서비스 처리 속도좀 로그로 남겨주세요!’ 라는 부탁을 받았습니다.

반장 정수학생은 부탁받은 요구사항을 이행하기 위해서 본인이 만들고 있는 서비스 로직에서 처리 속도를 찍어볼 메소드를 개발해 처리 속도가 잘 찍히는걸 확인합니다.

기분이 좋은 정수학생은 팀장님께로 달려갑니다. ‘팀장님! 기능 작업 완료했습니다!’ 라고 컨펌을 받습니다.

성희 팀장은 아주 긍정적인 검토안을 정수학생한테 전달하면서 우리 서비스 전체에도 각 처리속도를 찍어주세요 라고 다시 부탁합니다.

정수학생은 본인이 만들어 낸 메소드를 각 기능별 서비스 로직에 하나하나씩 약 2만개쯤 넣을쯤에 의문을 갖습니다.

<aside> 💡 ‘서비스 로직에서 제일 중요한 로직은 본래의 기능이 제일 중요하고 지금 내가 작성하는 로직은 옵션( 부가 기능 )이 추가되는게 아닐려나?’

’그럼 이걸 하나의 묶음으로는 처리가 불가능한건가?’

</aside>

하는 생각을 하게 됩니다. 그렇게 정수학생은 위와 같은 고민을 해결하기 위해서 구글링을 시작합니다.

여기서, 시간을 측정하고 권한을 체크하는 등의 기능은 옵션과 같은 부가기능으로 일종의 인프라 로직이라고 하는데, 이 인프라 로직은 애플리케이션 전 영역에서 나타날 수 있고, 중복코드를 만들어 내 개발의 효율성을 저하시키고 유지보수가 힘들어 질 수 있습니다.

이러한 인프라 로직은 아래처럼 하나의 관심사를 가질 수 있는데 이런 관심사들의 중복이 횡단으로 나타나는데, 이것을 가르켜 ‘ 횡단 관심사(Cross-Cutting Concern) ‘ 라고 함.

처리속도측정 처리속도측정 처리속도측정 처리속도측정
비즈니스로직 비즈니스로직 비즈니스로직 비즈니스로직
처리내용로깅 처리내용로깅 처리내용로깅 처리내용로깅
로그인 기능 회원가입 기능 게시판 목록 게시판 등록 …….

이런 횡단 관심사를 통해서 프로그래밍하는 것이 AOP 라고 한다.

✅ 간단하게 맛보기