깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 여기저기 흩어진 오류 처리 코드 때문에 실제 로직을 파악하기 거의 불가능해지게 된다는 의미다. 이는 깨끗한 코드라 부르기 어렵다. 오류 코드보다 예외를 사용하라 오류코드를 사용하면 로직과 오류처리가 뒤섞인다. 오류가 발생하면 예외를 던지는 편이 낫다. 호출자 코드가 더 깔끔해진...
[객체지향의 사실과 오해] Chapter1-협력하는 객체들의 공동체
실세계의 모방이라는 개념은 아쉽게도 객체지향의 기반을 이루는 철학적인 개념을 설명하는데 적합하지만, 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기엔 적합하지 않다. 대다수의 개발자들은 객체지향 애플리케이션이 실세계를 모방해야 한다는 설명을 전혀 납득하지 못한다. 객체지향의 목표는 실세계를 모방하는...
[도메인주도개발시작하기] Chapter11-CQRS
11. 1 단일 모델의 단점 주문 내역 조회 기능을 구현하려면 여러 애그리거트에서 데이터를 가져와야 한다. Order 에서 주문 정보를 가져와야 하고, Product 에서 상품 이름을 가져와야 하고, Member 에서 회원 이름과 ID를 가져와야 한다. 조회 화면 특성상 조회 속도가 빠를수록 좋은데 여러 애그리거트의 데이터가 필요...
[도메인주도개발시작하기] Chapter10-이벤트
10.1 시스템 간 강결합 문제 쇼핑몰에서 구매를 취소하면 환불을 처리해야 한다. 이때 환불 기능을 실행하는 주체는 주문 도메인 엔티티가 될 수 있따. 도메인 객체에서 환불 기능을 실행하려면 다음 코드처럼 환불 기능을 제공하는 도메인 서비스를 파라미터로 전달바독 취소 도메인 기능에서 도메인 서비스를 실행하게 된다. public clas...
[도메인주도개발시작하기] Chapter9-도메인 모델과 바운디드 컨텍스트
도메인 모델과 경계 처음 도메인 모델을 만들때 빠지기 쉬운 함정이 도메인을 완벽하게 표현하는 단일 모델을 만드는 시도를 하는 것이다. 1장에서 말한 것처럼 한 도메인은 다시 여러 하위 도메인으로 구분되기 떄문에 한 개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하면 모든 하위 도메인에 맞지 않는 모델을 만들게 된다. 예...
[AWS] Lambda 개요
출처 https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-%EB%9E%8C%EB%8B%A4Lambda-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC
[JWT] JWT 저장소 위치
액세스 토큰은 프로그램상 자바스크립트 로컬 변수에 저장하고, http 헤더에 bearer 토큰으로 담아서 매 요청마다 보내도록 하자. 액세스 토큰을 쿠키에 담으면 CSRF 공격에 취약해진다. 즉, 해커가 내 인증정보를 활용해서 서버에 나인것처럼 속여서 요청을 보낼 수 있게 된다. 로컬스토리지는 사용...
[도메인주도개발시작하기] Chapter8-애그리거트 트랜잭션 관리
애그리거트와 트랜잭션 한 주문 애그리거트에 대해 운영자는 배송 상태로 변경할 때 사용자는 배송지 주소를 변경하면 어떻게 될까? 아래 이미지는 발생할 수 있는 다양한 경우 중 한 가지를 시간 순서로 표시한 것이다. 운영자 스레드와 고객 스레드는 개념적으로 동일한 애그리거트지만 물리적으로 서로 다른 애그리거트 객체를 사용한다. ...
[도메인주도개발시작하기] Chapter7-도메인 서비스
여러 애그리거트가 필요한 기능(도메인 서비스가 필요한 이유) 도메인 영여그이 코드를 작성하다보면 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 대표적인 예가, 결제 금액 계산 로직인데 아래와 같은 사항들을 고려볼 수 있다. 상품 애그리거트 : 구매하는 상품의 가격. 또는 상품에 따라 추가되는 배송비 ...
[도메인주도개발시작하기] Chapter6-응용 서비스와 표현 영역
표현 영역과 응용 영역 응용 영역과 표현 영역은 사용자와 도메인을 연결해주는 매개체 역할을 한다. 응용 영역의 책임 응용 영역은 실제 사용자가 원하는 기능을 제공한다. 표현 영역의 책임 응용 서비스가 요구하는 형식으로 사용자 요청을 변환 응용 서비스를 실행 한 후 실행 결과를 사용자에 알맞은 형식으로 응답 사용자와의...