CQRS 3

CQRS를 NestJs에서 사용예시

doc https://docs.nestjs.com/recipes/cqrs CQRS 단순한 CRUD (Create, Read, Update, Delete) 애플리케이션의 흐름은 다음과 같이 설명할 수 있습니다 컨트롤러 계층은 HTTP 요청을 처리하고 작업을 서비스 계층에 위임합니다. 서비스 계층은 대부분의 비즈니스 로직이 담겨있는 곳입니다. 서비스는 레포지토리/DAO를 사용하여 엔티티를 변경하거나 영속화합니다. 엔티티는 값을 담는 컨테이너로서, 세터와 게터를 갖고 있습니다. 이러한 패턴은 일반적으로 소규모 및 중규모 애플리케이션에는 충분하지만, 더 크고 복잡한 애플리케이션에는 최적의 선택이 아닐 수 있습니다. 이런 경우 CQRS(Command and Query Responsibility Segregatio..

CQRS 2023.07.21

CQRS패턴 사용예시

CQRS(Command Query Responsibility Segregation) 패턴을 PostgreSQL에서 사용하는 예시를 들어보겠습니다. 일반적으로 이 패턴은 읽기 및 쓰기 작업을 분리하여 성능을 개선하고 복잡성을 줄입니다. 스키마 우선, 다음과 같이 상품을 저장하는 테이블이 있다고 가정 CREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, price DECIMAL(10, 2) NOT NULL, quantity INT NOT NULL ); 쓰기 모델 (Command) INSERT INTO products (name, price, quantity) VALUES ('Product A', 100.00, 50); 읽기 모델..

CQRS 2023.07.21

CQRS패턴

CQRS패턴 CQRS(Command Query Responsibility Segregation) 패턴은 복잡한 비즈니스 시스템에서 데이터를 효율적으로 관리하기 위해 개발된 것입니다. 이 패턴은 이름에서 알 수 있듯이, 커맨드(명령)와 쿼리(조회)라는 두 가지 별도의 책임을 갖는 서비스를 분리하게 됩니다. CRUD패턴은 일관성을 유지하는데 초점을 맞추지만, 이로인해 복잡성과 확장성 문제가 발생할 수 있습니다. 대용량 데이터를 처리하거나 복잡한 트랜잭션을 수행할 때 CRUD 방식은 성능 저하나 로직을 어렵게 만들 수 있기때문입니다. 이런문제를 해결하기 위해 CQRS패턴이 생겨났습니다. CQRS패턴 이점 1. 확장성: 서비스가 성장하고 변화하는데 따라 쿼리와 커맨드를 별도의 서비스로 분리함으로써 각각의 성능과..

CQRS 2023.07.21