오늘의 기록

    [자바 최적화] GC 로깅, 모니터링, 튜닝, 툴

    [자바 최적화] GC 로깅, 모니터링, 튜닝, 툴

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr GC 로깅 개요 GC 로깅 켜기 ✅ GC 스위치 -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps Flag Effect -Xloggc:gc.log GC 이벤트에 로깅할 파일을 지정한다. -XX:+PrintGCD..

    [DDD Start] 도메인 모델과 바운디드 컨텍스트

    [DDD Start] 도메인 모델과 바운디드 컨텍스트

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr 도메인 모델과 경계 ✅ 모델은 도메인마다 의미가 다를 수 있다 도메인을 완벽하게 표현하는 단일 모델은 구현하기 어렵다. ex) 상품 모델 카탈로그 도메인, 재고 관리 도메인, 주문 도메인에서 상품 모델이 의미하는 것은 다르다. -> 도메인마다 다른 용어를 사용하는 경우도 있다. (카탈로그 도메인 - 상품, 검색 도메인 - 문서) 이처럼 한 개의 모델로 모든 하위 도메인을 표현할 수 없다. -> 하위 도메인마다 모델을 만들어야 한다. -> 그리고 각 모델은 명시적으로 ..

    [DDD Start] 애그리거트 트랜잭션 관리

    도메인 주도 개발 시작하기 책 정리 도메인 주도 개발 시작하기 실제 업무에 도메인 주도 설계(DDD)를 적용할 수 있도록 기본적인 DDD의 핵심 개념을 익히고 구현을 통해 학습할 수 있도록 구성한 DDD 입문서 www.hanbit.co.kr 애그리거트와 트랜잭션 ✅ 동시에 한 애그리거트 수정 ex) 하나의 주문 애그리거트에 대해 운영자는 배송 상태로 변경하는 동시에, 고객은 배송지 주소를 변경하면? 고객은 배송 상태인 주문 애그리거트의 배송지 주소를 변경할 수 없기 때문에, 일관성이 깨지는 문제가 발생하지 않도록 하려면 다음 두 가지 중 하나를 해야 한다. 운영자가 배송지 정보를 조회하고 상태를 변경하는 동안, 고객이 애그리거트를 수정하지 못하게 막는다. (선점 잠금) 운영자가 배송지 정보를 조회한 이후..

    [자바 최적화] 가비지 수집 고급

    [자바 최적화] 가비지 수집 고급

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 트레이드오프와 탈착형 수집기 ✅ GC의 트레이드오프 개발자는 가비지 수집기 선정 시 다음 항목을 충분히 고민해야 한다. 중단 시간 처리율 중단 빈도 회수 효율 중단 일관성 -> 애플리케이션의 특징에 따라 이러한 트레이드오프와 관심사를 면밀히 검토해야 한다. -> 또한, GC는 탈착형 서브시스템으로 취급되기 때문에, 각 JVM 구현체와 애플리케이션의 특징에 따..

    [자바 최적화] 가비지 수집 기초

    [자바 최적화] 가비지 수집 기초

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 마크 앤 스위프 ✅ 마크 앤 스위프: GC의 기본 알고리즘 할당 리스트를 순회하면서 마크 비트(mark bit)를 지운다. 할당 리스트: 할당됐지만, 아직 회수되지 않은 객체 리스트 마크 비트: 객체가 실제로 사용 중인지 표시 GC 루트부터 살아 있는 객체를 찾는다. 이렇게 찾은 객체마다 마크 비트를 세팅한다. 할당 리스트를 순회하면서 마크 비트가 세팅되지 ..

    [자바 최적화] 마이크로벤치마킹과 통계

    [자바 최적화] 마이크로벤치마킹과 통계

    자바 최적화 책 정리 자바 최적화(Optimizing Java) | 벤저민 J. 에번스 - 교보문고 자바 최적화(Optimizing Java) | 자바 애플리케이션 성능을 한 단계 높여줄 튜닝 이야기성능 튜닝은 실험과학이다. 추측과 구전 튜닝에 의존할 일이 아니다. 이 책은 복잡한 기술 스택을 다루는 중/고 product.kyobobook.co.kr 자바 성능 측정 기초 ✅ 자바 벤치마크는 어려워 우리의 목표는 벤치마크로 공정한 테스트를 하는 것 -> 가급적 시스템의 어느 한 곳만 변경하고 다른 외부 요인은 벤치마크 안에 두고 통제하고자 함 그러나 자바 코드 실행은 JIT 컴파일러, 메모리 관리, 그 밖의 서브 시스템과 완전히 떼어넣고 생각할 수 없다. -> 이처럼 자바 런타임시의 변동 요인을 고려하며 ..

    [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..