코딩 이래요래
AOP (Aspect Oriented Programming) 본문
지난 번에 AOP의 개념을 살짝 다루고, 실제로 진행하던 프로젝트 Mission에 살짝 적용해보고 정리했었다.
Spring Framework 핵심 개념
1. IoC (Inversion of Control) - 제어의 역전 즉, 객체의 생성, 초기화 등 개발자가 직접 제어하는 것이 아닌, 컨테이너가 대신 관리하는 개념 1-1. IoC 구조 ☑️ 기존의 의존성 주입// controllerpublic class User
kh-coding.tistory.com
AOP를 통한 서비스 계층 로그 분리
AOP를 적용해 로깅 코드 분리 리팩토링이전에 정리한 블로그 내용 중 AOP 개념을 정리한 적이 있는데, 그 당시에는 간단하게만 정리하고 넘어갔지만, 프로젝트 리팩토링을 통해 개념을 다시 정리
kh-coding.tistory.com
오늘은 Spring에서 AOP가 필요한 이유와 AOP를 활용한 실제 Application 개발 사례에 대해서 정리해보려 한다.
1. AOP가 필요한 이유 ?
Spring은 MVC 패턴으로 각 영역은(Controller, Service, Repository...) 자기 역할만 집중할 수 있도록 계층화 하여 유지보수와 테스트의 용이성을 높이는 장점을 가질 수 있다.
각 계층이 자신의 역할 외의 인증, 인가, 로깅 등의 기능까지 처리하면 코드가 복잡해지고 관리가 어려워 진다.
핵심 비즈니스 로직과는 별개인 공통 관심사들을 하나의 모듈로 분리하여 관리 하기위해 AOP가 필요하다.
2. 횡단 관심사의 분리
이러한 관심하는 비즈니스 로직과는 직접적으로 관련이 없지만 여러 계층에서 반복되는 코드로 등장한다. 이러한 로직을 각 계층에서 매번 수행하면 코드의 중복과 유지보수성을 저하시킨다.
3. AOP를 활용한 실제 애플리케이션 개발 사례
위클리 페이퍼에 이를 설명하라고 하는데, 실제로 어떤 애플리케이션이 개발될 때 AOP를 적용해서 공통 기능을 분리한 사례를 정확히 알 수 없을 것이다. 그래서 내가 사용했던 프로그램이 '이러한 기능을 AOP로 분리하지 않았을까?' 라는 생각을 중심으로 이야기해보려 한다.
지금 개발 공부를 시작하기 전에 6년정도 근무했던 회사에서 사용한 ERP를 예로 들어 설명하려 한다.
직급 별로 접근할 수 있는 페이지가 제한적이었기 때문에, 아마 인증/권한 체크 같은 기능은 핵심 로직과 분리돼 별도의 방식으로 처리되고 있었을 것 같다.
예를 들어, 관리자만 접근 가능한 인사관리 페이지나 급여 정보 페이지가 있었고, 일반 직원은 아예 버튼조차 노출되지 않았고 접근 자체가 제한돼 있었다.
당시엔 아무 생각 없이 사용했지만, 지금 공부한 관점으로 다시 생각해보면 그런 기능들이 AOP나 필터 같은 방식으로 분리되어 있었을 가능성이 높다고 느낀다.
'위클리 페이퍼' 카테고리의 다른 글
위클리 페이퍼 8주차 (3) | 2025.05.30 |
---|---|
위클리 페이퍼 - 7주차 (3) | 2025.05.25 |
@Controller vs @RestController (0) | 2025.05.13 |
Spring Boot에서 사용되는 다양한 Bean 등록 방법 (0) | 2025.04.29 |
Web Server ?? Web Application Server?? (0) | 2025.04.29 |