전체 글

오늘의 기록

    [DDD Start] 응용 서비스와 표현 영역

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr 표현 영역과 응용 영역 ✅ 표현 영역 표현 영역은 사용자의 요청을 해석한다. 그리고 응용 서비스를 실행한다. ✅ 응용 영역 실제 사용자가 원하는 기능을 제공한다. ✅ 표현 -> 응용 응용 서비스의 메서드가 요구하는 파라미터와 표현 영역이 사용자로부터 전달받은 데이터는 형식이 일치하지 않기 때문에, 표현 영역은 응용 서비스가 요구하는 형식으로 사용자 요청을 변환한다. @PostMapping("/member/join") public ModelAndView join(Htt..

    [DDD Start] 스프링 데이터 JPA를 이용한 조회 기능

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr 시작에 앞서 ✅ CQRS 명령 모델과 조회 모델을 분리하는 패턴이다. -> 도메인 모델은 명령 모델로 주로 사용된다. 이 장에서 설명할 정렬, 페이징, 검색 조건 지정과 같은 기능은 주로 조회 기능에 사용된다. -> 즉, 이 장에서 살펴볼 구현 방법은 조회 모델을 구현할 때 주로 사용한다. 검색을 위한 스펙 ✅ 검색 조건이 복잡할 때 목록 조회와 같은 기능은 다양한 검색 조건을 조합해야 할 때가 있다. -> 이럴 때 사용할 수 있는 것이 스펙(Specification..

    [자바 최적화] 성능 테스트 패턴 및 안티패턴

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 성능 테스트 유형 ✅ 성능 테스트를 기획하는 요령 모든 성능테스트는 그 목표가 명확해야 한다. -> 테스트로 확인하고 싶은 정량적 질문 리스트와, 그 테스트가 대상 애플리케이션 입장에서 중요한 이유를 생각해보자. 지연 테스트 ✅ Latency test: 종단 트랜잭션에 걸리는 시간은? 가장 일반적인 성능 테스트다. -> '고객이 트랜잭션을 얼마나 오래 참고 ..

    [자바 최적화] 하드웨어와 운영체제

    [자바 최적화] 하드웨어와 운영체제

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 최신 하드웨어 소개 ✅ 최신 하드웨어 지식 1990년대 이후, 애플리케이션 개발자 세상은 대부분 인텔 x86/x64 아키텍처 위주로 돌아갔다. 이 장에서는 이를 포함해 그간 발전된 여러 가지 CPU 기술들을 알아볼 것이다. 메모리 ✅ CPU와 메모리의 갭 CPU를 구성하는 트랜지스터는 처음에 클록 속도(clock speed)를 높이는데 쓰였다. 하지만, 클록..

    [DDD Start] 리포지터리와 모델 구현

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr JPA를 이용한 리포지터리 구현 모듈 위치 ✅ 리포지터리 위치 리포지터리 인터페이스는 애그리거트와 같이 도메인 영역에 속하고, 리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속한다. 리포지터리 기본 기능 구현 ✅ 기본 기능 ID로 애그리거트 조회하기 애그리거트 저장하기 public interface OrderRepository { Order findById(OrderNo id); void save(Order order); } @Repository public cl..

    [자바 최적화] JVM이야기

    [자바 최적화] JVM이야기

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 인터프리팅과 클래스로딩 ✅ 인터프리팅 JVM은 스택 기반의 해석 머신이다. -> 어떤 메서드의 호출 스택, 혹은 일부 결과를 스택에 보관하며, 이 스택의 맨 위에 쌓인 값들을 가져와 계산한다. -> 인터프리터는 스택의 위에서부터 옵코드(명령)를 하나씩 순서대로 처리하는 'while 루프 안의 switch문'이다. ✅ 클래스로딩 JVM이 클래스 파일을 실행하기..

    PK: UUID vs Auto Increment

    UUID UUID는 범용 고유 식별자이다. 물론 무조건 유일을 보장하지는 않지만, UUID는 범위가 10의 38승이기 때문에 실질적으로 거의 유일하다고 볼 수 있다. 장점 분산 시스템에서 적절하다. (auto increment에서 설명) DB 환경에 독립적이다. (어떤 DB를 사용하든 uuid 생성 함수를 사용하면 된다) 단점 성능에 저하를 일으킨다 → 검색의 효율을 위해 id를 정렬한다면? UUID는 엄청 큰 문자열이기 때문에 정렬하는 비용이 생각보다 많이 든다. 사람이 보기 힘들다. Auto Increment 1부터 시작해서 데이터가 추가될 때마다 자동으로 숫자를 늘려가는 방식이다. +) 물론 타입을 조심해야 한다. 데이터가 21억 건이 넘어가면? → Integer로는 부족하다. 장점 빠르다. 눈에 ..

    [DDD Start] 애그리거트

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서www.hanbit.co.kr 애그리거트✅ 애그리거트복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들려면,상위 수준에서 도메인 모델을 조망할 수 있는 방법이 필요한데,이 방법이 바로 애그리거트다.-> 관련 객체를 하나의 군으로 묶어 준다.-> 단순한 구조: 도메인 기능을 확장하고 변경하는데 필요한 노력이 줄어든다. ✅ 어떻게 나눠야 할까?1. 동일한 라이프 사이클ex) 주문 애그리거트를 만드려면, Order, Orderer, ShippingInfo와 같은 객체를 함께 생성해야 한다.2. 변경 주체보..