Home
Youngho's Devlog
Cancel

[클린코드] Chapter9-단위 테스트

아주 예전 개발자들은 실제 코드가 돌아간다는 사실을 확인하고 테스트 코드를 버렸다. 하지만 지금 같은 경우엔 코드가 제대로 도는지 황긴하는 테스트 코드를 수 없이 작성하고, 모든 테스트 케이스를 통과한 후엔 실제 제품 코드와 같은 소스 패키지로 확실하게 묶는다. 하지만 많은 프로그래머들이 제대로 된 테스트 케이스를 작성해야 한다는 좀 더 ...

[클린코드] Chapter8-경계

시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 오픈 소스를 이용한다. 때로는 사내 다른 팀이 제공하는 컴포넌트를 사용한다. 어떤 식으로든 이 외부 코드를 우리 코드에 깔끔하게 통합해야만 한다. 이 장에선 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴본다. 외부 코드 사용하기 ...

[클린코드] Chapter7-오류 처리

깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 여기저기 흩어진 오류 처리 코드 때문에 실제 로직을 파악하기 거의 불가능해지게 된다는 의미다. 이는 깨끗한 코드라 부르기 어렵다. 오류 코드보다 예외를 사용하라 오류코드를 사용하면 로직과 오류처리가 뒤섞인다. 오류가 발생하면 예외를 던지는 편이 낫다. 호출자 코드가 더 깔끔해진...

[객체지향의 사실과 오해] 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-애그리거트 트랜잭션 관리

애그리거트와 트랜잭션 한 주문 애그리거트에 대해 운영자는 배송 상태로 변경할 때 사용자는 배송지 주소를 변경하면 어떻게 될까? 아래 이미지는 발생할 수 있는 다양한 경우 중 한 가지를 시간 순서로 표시한 것이다. 운영자 스레드와 고객 스레드는 개념적으로 동일한 애그리거트지만 물리적으로 서로 다른 애그리거트 객체를 사용한다. ...