AOP를 배우기 전에, AOP가 왜 필요한지를 상황극 비슷한 설명을 통해 알려주신 회차이다.
가정
다음과 같은 상황을 가정해보자.
나는 신입 개발자인데, 상사가 갑자기
각 기능이 수행되는 데 걸리는 시간(ms 단위)을 기능별로 싹 다 알고 싶다고 요청한다.
내가 알고 있는 기초적인 실행시간 측정 방법은
시간측정을 하고 싶은 부분의 시작지점에서 현재시간을 ms 단위로 한 번 재고,
부분이 끝나는 지점에서 현재시간을 ms 단위로 한 번 더 재서
그 둘의 차를 구하는 것이다.
지금 우리 팀이 개발 중인 프로그램의 핵심 기능은 총 100가지이다.
나는 밤을 새서 100가지 부분의 시작지점과 끝 지점에 일일이 시간측정 코드를 추가해야 한다...
얼마나 답답한 상황인가?
프로그램의 실제 핵심 기능들의 코드와 시간을 재려고 넣어둔 코드가 서로 한 덩어리로 섞여, 유지 보수가 매우 힘들어진다.
게다가 다른 방식으로 실행시간을 측정하고 싶어진다면 특정 부분의 코드로 찾아들어가 매우 번거롭게 수정해야 한다.
AOP가 필요한 이유
프로젝트에는 핵심 로직들만 있는 것이 아니다. 위의 예시에서 말한 소요시간 측정과 같이, 그 외의 관심 사항도 존재한다.
이런 관심 사항들을 공통 관심 사항(cross-cutting concern)이라 부른다는 것 같다.
핵심 로직들은 핵심 관심 사항(core concern)에 속한다.
공통 관심 사항과 핵심 사항을 구분하여 효율적으로 관리하는 것이 AOP라고 한다. 그것이 무엇인지는 다음 회차에서 배운다.
'스프링 공부 > 인프런 김영한 스프링 입문 노트정리' 카테고리의 다른 글
인프런 김영한 스프링 입문 강의 후기 (0) | 2022.08.19 |
---|---|
7-2. AOP 적용 (0) | 2022.08.19 |
6-6. 스프링 데이터 JPA (1) | 2022.08.01 |
6-5. JPA (0) | 2022.08.01 |
6-4. 스프링 JdbcTemplate (0) | 2022.07.31 |