728x90 Node js/Nest js 강의 내용21 6-2 비관적락을 이용한 동시성 제어(with Prisma) 1. 개발한 소스에 동시성 테스트 실시 1000명의 사용자가 10초 내 30개의 재고상품이 있는 상품을 구매할 수 있는 동시성(부하테스트)를 실행한 결과이다.서비스 로직을 보면,const result: boolean = await this.prisma.$transaction(async (tx) => {로 트랜젝션 단위를 보장하고 있는데, 이러한 구조로 인해 일부 동시성 이슈가 나타나지 않는것이다.좀더 자세히 설명하면?? 1) 트랜잭션 사용 : prisma.$transaction 내에서 여러 DB 작업을 묶어서 원자적으로 처리할 수 있는데, 트랜잭션이 끝날 때까지 중간에 다른 요청이 개입할 수 없다. 트랜잭션이 성공적으로 커밋되기 전에는 데이터 변경이 실제로 반영되지 않기 때문에, 두 사용자.. 2025. 1. 27. 6-1 서비스 로직 완성 주문하기 서비스 로직(장바구니 기반) 1) 장바구니 정보 조회 2) 장바구니에 담긴 상품 정보 조회(재고량, 가격, 판매유무 등) 3) 주문상세 정보 생성 4) 주문 정보 생성 5) 장바구니 정보 삭제 기타) 적절한 곳에서 validation 필요 2025. 1. 27. 5-2. repository 완성 ( with Prisma ) 1. 개발해야할 repository 리스트! 1) 카트 추가하기 2) 카트 조회하기 3) 주문하기 4) 주문내역확인하기 5) 상품 조회하기 6) 상품 재고 차감하기 2. Prisma의 transaction const result: boolean = await this.prisma.$transaction(async (tx) => { const products = await this.productRepository.getProductByIds(productIds, tx); await this.orderDetailRepository.createOrderDetail(detailWithOrderNo, tx) } async createOrderDetail(cre.. 2024. 12. 6. 5-1. prisma 기본 1. 왜 Prisma 인가? : https://www.prisma.io/docs/orm/more/comparisons/prisma-and-typeorm Prisma ORM vs TypeORM | Prisma DocumentationLearn how Prisma compares to TypeORM.www.prisma.io TypeORMPrisma종합기존의 ORM으로, 데이터베이스 테이블을 클래스 모델로 매핑최신화된 ORM으로, 기존 ORM에서 발생하는 문제(복잡한 모델 인스턴스, 비즈니스 로직과 저장 로직의 혼합, 타입 안정성 부족 등)를 해결객체관리entity 객체의 관리를 통해 DB 와 mappingPrisma 스키마로 데이터 모델 관리프로그램밍 측면객체 지향 프로그래밍(OOP) 기반더 간결하고.. 2024. 12. 6. 4. controller & service정리 1. 불필요한 Controller 및 Service 코드 제거 - Default로 생성된 불필요한 코드 제거 2. Controller 및 Service 에서 사용할 DTO 정의 - controller 의 DTO 와 service 의 DTO를 분리해보기! - prisma의 entity를 DTO로 변환해서 return 3. 2번의 작업을 하는이유! 1) 책임의 분리 : Controller와 Service는 각기 다른 역할을 수행하는데, DTO를 분리하면 각 레이어가 서로의 책임을 명확히 할 수 있다. 2) 유연성 및 확장성 : Controller와 Service에서 DTO를 분리하면, 특정 레이어에 변경이 생겼을 때 다른 레이어에 영향을 미치지 .. 2024. 12. 6. 3. Nest 프로젝트 생성 및 예상 아키텍처 1. 설치 (1) 설치 명령어(기존에 설치하지 않은 경우에만) (pnpm 을 권장드리나, yarn이나 npm 이 편할 경우 사용해도 됨) pnpm i -g @nestjs/cli (강의 내용은 npm i -g @nestjs/cli@10.4.8 버전 기반)nest new commerce nest 명령어를 사용하여, nest 프로젝트를 생성해보자 또는 git clone 으로 Nest 프로젝트 시작가능git clone https://github.com/nestjs/typescript-starter.git project(cd project)yarn install (pnpm 사용해도 됨) (2) 빌드 명령어npm run build or yarn build or pnpm.. 2024. 12. 6. 이전 1 2 3 4 다음 728x90