book

    [DDD Start] 도메인 서비스

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr 여러 애그리거트가 필요한 기능 ✅ 어떤 애그리거트에 로직을 추가해야 할까? 도메인 영역의 코드를 작성하다 보면, 한 애그리거트로 기능을 구현할 수 없을 때가 있다. ex) 결제 금액 계산 로직에 필요한 애그리거트 상품 애그리거트: 상품의 가격 주문 애그리거트: 상품 별 구매 개수 할인 쿠폰 애그리거트: 쿠폰별로 지정한 할인 금액 회원 애그리거트: 회원 등급에 따른 추가 할인 -> 이런 경우 억지로 특정 애그리거트에 구현하게 되면 애그리거트를 복잡하게 만든다. 도메인 ..

    [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이 클래스 파일을 실행하기..

    [DDD Start] 애그리거트

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