개발 관련 책 읽기(46)
-
단위 테스트 목적
✅ 아래 내용들에 대해서 알아보자 - 단위 테스트를 하는 이유 - 테스트 코드 맛보기(with Junit5) 단위 테스트를 하는 이유 단위 테스트를 하는 이유는 여러가지가 있지만 그중 뽑자면 아래와 같다고 생각한다 기능을 개발하였고 그것이 예상한대로 작동하는지 알고 싶을때 시스템에 작성한 변경사하을 문서화하여 나뿐만아니라 다른사람들에게도 이해하도록 하고 싶을떄 코드를 변경하였을때 그것으로 기존 동작이 제대로 작동하는지 확인하고 싶을때 시스템의 동작을 이해하고 싶을때 추후 TDD 적용을 위해..? 테스트 코드 맛보기(with. Junit5) @FunctionalInterface public interface Scorable { int getSCore(); } public class ScoreCollecti..
2023.05.17 -
애그리거트
✅ 아래 내용들에 대해서 알아보자 - 애그리거트 - 애그리거트 루트 - 트랜잭션 범위 애그리거트 애그리거트(aggregate, 집합)는 연관된 엔티티와 밸류 객체를 개념적으로 하나로 묶은 것이다. 그림으로 같이 보자. 아래 그림을 보면 주문, 분류, 상품, 리뷰, 결제, 회원 등으로 개념적으로 나눈 것을 볼 수 있다. 애그리거트로 단위로 분류하게 되면 복잡한 도메인을 이해,관리하기 쉽고 수많은 객체들을 애그리거트 단위로 묶어서 바라보면 상위 수준에서 도메인 모델 간의 관계를 파악하기가 용이하다. 그리고 모델을 이해하는데 도움을 줄 뿐만 아니라 일관성을 관리하는 기준이 된다. 그로 인해 복잡도가 낮아지고 도메인 기능을 확장하고 변경하는데 필요한 노력도 줄어들게 된다. 애그리거트는 관련된 모델을 하나로 모았..
2023.05.15 -
DDD 아키텍처
✅ 아래 내용들에 대해서 알아보자 - 도메인이란? - DDD 아키텍처 - DIP 도메인이란 도메인이란 소프트웨어로 해결하고자 하는 문제영역을 의미한다. 온라인 서점으로 예를 들면 상품 조회, 구매, 결제, 배송등의 기능이 해당된다. 쉽게 이야기하면 기능별로 쪼갠다고 이해하면 좋을 것 같네요 ㅎ Order라는 주문 클래스가 있다고 가정하겠습니다. 기존의 서비스 로직에서 해당 로직들을 처리하는 프로세스와 다르게 주문 클래스에 비즈니스 로직을 위임함으로써 도메인에 종속된 로직들은 Order객체에 위임하고 있다. (DDD는 도메인 클래스에 연관된 로직을 넣는다는 느낌? ㅎㅎ) 기존 서비스 레이어에 로직을 실행하던 방식 public class OrderService { private final OrderRepos..
2023.04.29 -
모던 자바스크립트 Deep Dive - 9
✅ 아래 내용들에 대해서 알아보자 - 프로토타입 프로토타입 JS는 프로토타입 기반으로 상속을 구현하여 불필요한 중복을 제거한다. 다음 코드를 보자 아래 코드 실행 시 JS에서는 인스턴스 생성 시 동일한 메서드를 중복으로 생성하여 비효율적인 방식으로 생성한다. function Circle(radius) { this.radius = radius; this.getArea = function () { return Math.PI * this.radius ** 2; } } const circle1 = new Circle(1); const circle2 = new Circle(2); /** * Circle 생성자 함수는 인스턴스 생성할 때마다 동일한 동작하는 getArea 메서드를 중복 생성하고 모든 인스턴스가 중복..
2023.04.10 -
7장, 8장 - 파이프, 영속화
✅ 아래 내용들에 대해서 알아보자 - 파이프 - 영속화 파이프 파이프는 요청이 라우터 핸들러로 전달되기 전에 요청 객체를 변환할 수 있는 기회를 제공한다. 파이프는 보통 2가지 목적으로 사용한다 변환: 입력 데이터를 원하는 형식으로 변환, ex) /users/user/1내의 경로 매개변수 문자열 '1'을 number로 변환 유효성 검사: 입력 데이터가 사용자가 정한 기준에 유효하지 않은 경우 예외 처리 @nest/common 패캐지에 여러 내장 파이프가 존재한다 ValidationPipe ParseIntPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe DefaultValuePipe ParseIntPipe 예시 async findOne( @Param('id', new ..
2023.04.06 -
5, 6장 - 모듈/동적 모듈
✅ 아래 내용들에 대해서 알아보자 - 모듈 - 동적 모듈 - dotenv 직접 사용해 보자 - @nestjs/config 직접 사용해 보자 모듈 모듈은 여러 컴포넌트를 조합하여 좀 더 큰 작업을 수행할 수 있게 하는 단위를 말한다. 예를 들어 주문, 유저, 채팅 모듈 등.. Nest에서는 애플리케이션이 실행되기 위해 하나의 루트 모듈이 존재하고 이 루트 모듈은 다른 모듈들로 구성된다. 이렇게 모듈을 나누는 이유는 모듈 내의 응집도를 높이고 모듈 간의 결합도를 나눠 추후 MSA 아키텍처 분리할 수 있다는 장점이 있다. @Module 데커레이터를 사용하여 Modulemetadata를 인수로 받는다. 모듈은 순환 종속성(참조)이 발생할 수 있기 프로바이더처럼 주입해서 사용할 수 없다. @Module({ imp..
2023.04.05