스프링/스프링 핵심 원리 - 고급편 36

4. 로그추적기 V1 프로토타입

이런 식으로 나오게 할 생각 인 듯 @Slf4j public class TraceId { private String id; private int level; public TraceId(){ this.id = createId(); this.level = 0; } private String createId(){ return UUID.randomUUID().toString().substring(0,8); } private TraceId(String id, int level){ this.id = id; this.level = level; } public TraceId createNextId(){ return new TraceId(id, level + 1); } public TraceId createPreviou..

3. 요구사항 분석

로그 추적기 시나리오 기존에 있던 거대한 프로젝트의 로그 추적기를 만드는 것 이다. 운영에 필요한 로그 추적기를 만드는 것이다. - 최근 병목이 발생하는 상황 - 어떤 부분에서 병목이 발생하는지, 어디서 예외가 발생하는 지 기존엔 개발자가 발생한 부분을 어렵게 찾아서 로그를 하나하나 직접 만들어 남겼다. 로그를 미리 남겨둔 다면 손쉽게 찾을 것. 이 부분을 개선하고 자동화. 요구사항 모든 public 메서드의 호출과 응답 정보를 로그로 출력 애플리케이션 흐름을 변경하면 안됨 (예를 들어 로그남기는 로직에서 예외가 발생해도 비즈니스 로직은 정상동작 해야 함) 메소드 소요 시간 정상 흐름과 예외 흐름 구분 (로그를 약간 다르게 출력) 메서드 호출의 깊이를 표현 함. (컨트롤러 -> 서비스 --> 리포지토리 ..

2. 예제 만들기

@Repository @RequiredArgsConstructor public class OrderRepositoryV0 { public void save(String itemId){ if(itemId.equals("ex")){ throw new IllegalStateException("예외 발생!!"); } sleep(1000); } private void sleep(int millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { throw new RuntimeException(e); } } } 단지 예시이다. 실용 코드로썬 의미가 없고, ex시에 예외를 뿜게 하는거고, 그 외엔 1초 기다렸다가 정상적으로 저장되었다는 일종의 가상..

1. 강의 소개

스프링의 깊이 있게 이해 하려면, 3가지 개념을 알아야 한다. 스프링 핵심 디자인 패턴 동시성 문제와 쓰레드 로컬 스프링 AOP 스프링 기술들은 대부분 다음의 패턴들로 만들어 짐 템플릿 메서드 패턴 전략 패턴 템플릿 콜백 패턴 프록시 패턴 데코레이터 패턴 동시성 문제와 쓰레드 로컬 웹서버는, 동시에 여러 클라이언트에서 요청을 받을 수 있다. 이 동시 요청을 처리하기 위해 멀티쓰레드를 사용한다. 스프링은, 쓰레드 로컬이라는 개념으로 동시성 문제를 해결함. 스프링 AOP https://qwefdg3.tistory.com/89 21강. AOP Aspect Oriented Programming 측면 지향 프로그래밍 공통관심사항과 핵심관심사항 분리 뭔가 좀 함수마다 공통사항? 예를들어 모든 함수의 실행시간을 측정..