Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

요구사항 추가 본문

인프런/[인프런] 스프링 핵심 원리 - 고급

요구사항 추가

Seung__ 2021. 11. 23. 21:53

1. 기존 요구사항


  • 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력
  • 애플리케이션의 흐름을 변경하면 안됨
  • 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨
  • 메서드 호출에 걸린 시간
  • 정상 흐름과 예외 흐름 구분
  • 예외 발생시 예외 정보가 남아야 함
  • 메서드 호출의 깊이 표현
  • HTTP 요청을 구분
  • HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야
  • 트랜잭션 ID (DB 트랜잭션X)

 

 

 

2. 단점..


  • 하지만 이 요구사항을 만족하기 위해서 기존 코드를 많이 수정해야 한다. 
  • 코드 수정을 최소화 하기 위해 템플릿 메서드 패턴과 콜백 패턴도 사용했지만, 
  • 결과적으로 로그를 남기고 싶은 클래스가 수백개라면 수백개의 클래스를 모두 고쳐야한다. 
  • 로그를 남길 때 기존 원본 코드를 변경해야 한다는 사실 그 자체가 개발자에게는 가장 큰 문제로 남는다.

 

 

 

3. 요구사항 추가


  • 원본 코드를 전혀 수정하지 않고, 로그 추적기를 적용.
  • 특정 메서드는 로그를 출력하지 않는 기능
    • 보안상 일부는 로그를 출력하면 안된다.
  • 다음과 같은 다양한 케이스에 적용할 수 있어야 한다.
    • v1 - 인터페이스가 있는 구현 클래스에 적용
    • v2 - 인터페이스가 없는 구체 클래스에 적용
    • v3 - 컴포넌트 스캔 대상에 기능 적용
  • 가장 어려문 문제는 원본 코드를 전혀 수정하지 않고, 로그 추적기를 도입하는 것이다. 
  • 이 문제를 해결하려면 프록시(Proxy)의 개념을 먼저 이해해야 한다.

'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글

Proxy Pattern - 예제코드 1  (0) 2021.11.23
Proxy, Proxy Pattern, Decorator Pattern  (0) 2021.11.23
Proxy Pattern - V3  (0) 2021.11.23
Proxy Pattern - V2  (0) 2021.11.23
Proxy Pattern - V1  (0) 2021.11.23
Comments