본문 바로가기

(19)
[자바성능튜닝이야기] 02, 03 02. 내가 만든 프로그램의 속도를 알고 싶다. 시스템의 성능이 느릴 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것. 애플리케이션의 속도에 문제가 있을 때 분석하기 위한 툴로는 프로파일링 툴이나 APM 툴이 있다. 구분특징 프로파일링 툴 (개발자용 툴)* 소스 레벨의 분석을 위한 툴. * 애플리케이션의 세부 응답 시간까지 분석할 수 있다. * 메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석할 수 있다. * 가격이 APM 툴에 비해 저렴하다. * 보통 사용자수 기반으로 가격이 정해진다. * 자바 기반의 클라이언트 프로그램 분석을 할 수 있다. APM (운영 환경용 툴)* 애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적. * 서버의 사용자 수나 리소스에 대한 모니터링..
[자바성능튜닝이야기] 01 디자인 패턴 꼭 써야 한다 [자바성능튜닝이야기] 01 디자인 패턴, 꼭 써야 한다 MVC 모델 Model, View, Controller View : 사용자가 결과를 보거나 입력할 수 있는 화면, 이벤트를 발생, 결과를 보여줌. Controller : 뷰와 모델의 연결자, 뷰에서 받은 이벤트를 모델로 연결하는 역할. Model : 뷰에서 입력된 내용을 저장, 관리, 수정하는 역할. 이벤트에 대한 실질적인 일을 하는 부분. J2EE 디자인 패턴 Pattern : a model, guide or set of instructions for making something 무엇인가를 만들기 위한 모델이나 가이드, 설명의 집합을 의미함. 즉, 시스템을 만들기 위해서 전체 중 일부 의미 있는 클래스들을 묶은 각각의 집합을 디자인 패턴이라고 생..
DDD 10장 이벤트 이벤트 이벤트의 용도와 장점 핸들러 디스패치와 핸들러 구현 비동기 이벤트 처리 주문을 취소 후 환불 처리하는 과정은? 주문 취소 + 환불 처리 결제 시스템은 외부에 존재하므로 외부의 환불 시스템 서비스를 호출하는데 문제가 2가지 있음. 외부 서비스가 정상이 아닐 경우 트랜잭션 처리를 어떻게 할 것인가? Q. 환불 기능을 실행하는 과정에서 익셉션이 발생했다면, 트랜잭션 롤백을 해야 할까? 커밋을 해야 할까? 외부의 환불 서비스를 실행하는 과정에서 익셉션이 발생하면 환불에 실패했으므로 주문 취소 트랜잭션을 롤백 하는 것이 맞는 것으로 보인다. 하지만, 반드시 트랜잭션을 롤백해야 하는 것은 아니다. 주문은 취소 상태로 변경하고 환불만 나중에 다시 시도하는 방식으로 처리할 수도 있다. 성능에 대한 것. 환불을 ..
[DDD START] 9장 도메인 모델과 BOUNDED CONTEXT 9장 도메인 모델과 BOUNDED CONTEXT 한 개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하게 되면 모든 하위 도메인에 맞지 않는 모델을 만들게 된다. 상품이라는 모델을 생각해보자. 카탈로그에서의 상품, 재고 관리에서의 상품, 주문에서의 상품은 이름만 같지 실제로 의미하는 것은 다르다. 카탈로그에서 물리적으로 한 개인 상품이 재고 관리에서는 여러 개 존재 할 수 있다. 회원 도메인에서는 회원이, 주문 도메인에서는 주문자가 될 수 있다. 하위 도메인마다 사용하는 용어가 다르기 때문에 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 한다. 모델은 특정한 컨텍스트(문맥)하에서 완전한 의미를 갖는다. 이렇게 구분이 되는 경계를 갖는 컨텍스트를 DDD에서는 BOUNDED CONTEX..
[UML DISTILLED 3판] 5장 클래스 다이어그램 : 고급 개념 5장 클래스 다이어그램 : 고급 개념(Class Diagrams : Advanced Concepts) 정적 오퍼레이션과 속성 UML에서는 인스턴스가 아닌 클래스에 적용되는 오퍼레이션이나 속성을 정적(static)이라고 부른다. 정적 속성은 클래스 다이어그램에서 밑줄이 그러진 속성으로 표시. 집합과 합성 하나의 클래스는 다른 많은 클래스의 컴포넌트가 될 수 있지만, 하나의 인스턴스는 단 하나의 소유자를 가져야 한다는 것. 집합(aggregation) 일부분이 되는 관계 파생 프로퍼티(derived property) 다른 값들을 기초로 계산할 수 있는 것. 인터페이스와 추상 클래스 추상 클래스(abstract class)란 직접 인스턴스화 될 수 없는 클래스. 대신 하위 클래스의 인스턴스를 생성한다. 전형적..
[UML DISTILLED 3판] 4장 시퀀스 다이어그램 교류 다이어그램(Interaction Diagram)은 어떤 행동 안에서 객체 그룹들이 어떻게 협력하는지를 설명한다. 그중 가장 많이 쓰이는 것이 시퀀스 다이어그램이다. 한 가지 시나리오에 대한 행동을 묘사 몇 개의 객체를 예로 들어서 유스 케이스 내에서 이 객체들 간에 전달되는 메시지를 표시 시퀀스 다이어그램은 각 참가자의 생명선(세로 방향으로 내려가는)을 보여 줌으로써 교류를 표현하고, 페이지 아래 방향으로 메시지의 순서를 표시한다. 각각의 생명선(lifeline)은 교류에서 참가자가 언제 활성인지를 보여주는 활성 막대(activation bar)를 가지고 있다. 하나의 유스 케이스 내에서 여러 객체의 행동을 보고 싶을 때 시퀀스 다이어그램을 사용해야 한다.
[DDD START] 8장 애그리거트 트랜잭션 관리 운영자와 고객이 동시에 한 주문 애그리거트를 수정할 때, 메모리 캐시를 사용하지 않을 경우 운영자 스레드와 고객 스레드는 같은 주문 애그리거트를 나타내는 다른 객체를 구하게 된다. 각자 주소를 변경하게 되면 애그리거트의 일관성이 깨진다. - 운영자가 배송지 정보를 조회하고 상태를 변경하는 동안 고객이 애그리거트를 수정하지 못하게 막는다. - 운영자가 배송지 정보를 조회한 이후에 고객이 정보를 변경하면 운영자가 애그리거트를 다시 조회한 후 수정하도록 한다. 선점잠금(Pessimistic Lock) - 먼저 애그리거트를 구한 스레드가 애그리거트 사용이 끝날 때까지 다른 스레드가 해당 애그리거트를 수정하는 것을 막는 방식. - 선점 잠금 기능을 사용할 때는 잠금 순서에 따른 교착 상태(deadlack)가 발생..
[UML DISTILLED 3판] 3장 클래스 다이어그램 3장 클래스 다이어그램 : 필수요소(Class Diagram : The Essentials) 클래스 다이어그램은 클래스의 프로퍼티(property), 오퍼레이션(operation), 객체들이 연결되는 방법에 적용되는 제약사항(constraints) 프로퍼티 (property) 클래스의 구조적인 특징을 나타냄. 프로퍼티는 단일 개념이지만 두 가지의 다른 표기법으로 나타냄 속성(attribute) 클래스 상자 안에 한 줄의 텍스트로 표시되는 프로퍼티. 연관(association) 두 클래스 사이의 실선으로 표시, 소스 클래스에서 타켓 클래스를 향함. 일반적으로 값타입에 속하는 날짜나, Boolean 값과 같은 작은 것에는 속성을 사용, 고객이나 주문 같은 더 중요한 클래스에 대해서는 연관을 사용함. 다중성(..