본문 바로가기
728x90

Node js36

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.
PrismaClientInitializationError: Unable to require(`/app/node_modules/.prisma/client/libquery_engine-linux-musl.so.node`). 오류 해결방법 위와 같은 오류를 보았다면!https://hub.docker.com/layers/library/node/18-alpine3.20/images/sha256-7000d2e73f938c4f62fdda6d398d7dffd50e6c129409ae2b1a36ccebf9289ffe?context=repo https://hub.docker.com/layers/library/node/18-alpine3.20/images/sha256-7000d2e73f938c4f62fdda6d398d7dffd50e6c129409ae2b1a36ccebf9289ffe?context=repo hub.docker.com dockerfile 수정하면 된다!!node:18-alpine 부분을!! node 버전 20으로!!  [예시]FROM --pl.. 2024. 12. 15.
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.
2. 요구사항 분석 및 ERD 설계 요구사항 분석현업에서 개발을 진행할 때 요구사항 분석 과정 없이 바로 개발부터 진행하는 주니어 개발자들이 눈에 많이 보입니다. 개발 이후 막히거나, 기획쪽 수정될 내용을 뒤늦게 찾게되면, 기존 개발했던 로직들을 전반적으로 수정해야해서 개발 시간을 더 달라는 개발자들이 있습니다. 그럴때 저는 반대로 질문합니다.요구사항 분석 제대로 하셨나요?개발 전에 충분히 알 수 있었던 내용으로 보입니다만? 개발자 중 어떤 개발자는 질적으로도 속도로도 잘하는 개발자가 있는 방면, 어떤개발자는 코드 리뷰에도 수정될 부분이 많이 발생하고 개발시간도 느리게 개발하는 사람들이 있어요. 그런데 그 중 원인을 분석해보면, 요구사항분석을 개발전에 진행했냐? 안했냐로 구분되기도 합니다. 요구사항 분석 제대로 하기 : 무엇을 개발할 지를.. 2024. 12. 6.
1. Nest js 기본 (간략하게 집고 넘어가보자) Nest js 란?: 카밀 미슬리비에츠가 개발한 "node js 의 웹 프레임워크"로, WAS framework 인 Express 또는 Fasity 기반으로 OOP를 지향하며, 개발이 가능 하다.  Node js 란? (대부분 이미 알겠지만!): Javascript 의 런타임 환경으로 서버 사이드 개발을 지원 함  Node js 의 주요 특징은?  1) 비동기 단일 쓰레드(여러 I/O를 병렬적으로 처리가능, 고성능 서버 구축)  2) NPM(Node Package Manager) 를 이용하여 다양한 라이브러리를 쉽게 설치 및 사용 가능  3) 빠른 처리속도(가볍다, 필요한 것만 설치해서 사용가능)    4) 모듈화  5) 이벤트 기반   6) Javascript 기반  설치는? (version: LTS(.. 2024. 12. 5.
0. [과정을 들어가면서] 과정소개 0. 강의제작 배경 및 학습목표 - 국내에는 Nest강의가 Spring 에 비해 상대적으로 적음. - 많은 주니어 개발자들이 CRUD 등의 간단한 기능은 잘사용하는것으로 보이나, DB lock, redis, Kafka 와 연계하는 응용부분은 추가설명이 필요했음 - Nest 개발자 중에 TypeORM 기반이 아닌 실무에 적합한 Prisma 에 대한 이해도가 부족한 개발자들이 다수 보였음강의 이후 실무에 최대한 빠른 적응! or 레벨업! 1. Nest js 개발 관련 기본사항 1) Nest 장점 2) ERD 설계 3) 개발 architecture 4) OOP(Object-Oriented Programming) & FP(Functional Progra.. 2024. 12. 4.
type vs interface ( type 과 interface 차이 ) 객체의 상속 [interface]extends 키워드를 이용해서 상속받을 수 있다.(interface 는 상속을 통해 확장)interface 시험 { 점수: number; 등급: number;}interface 과목 extends 시험 { //시험 으로 부터 상속받아 과목에 추가 과목명: string;}const 중간고사: 과목 = { 점수: 99, 등급: 1, 과목명: '코딩'} [type]& 기호를 이용해서 확장성 있게 사용할 수 있다.(type 은 교차 타입을 통해 확장)type 시험 = { 점수: number, 등급: number}type 과목 = 시험 & { 과목명: string}const 중간고사: 과목 = { 점수: 99, 등급: 1, 과목명: '코딩'}  선언 병합(.. 2024. 11. 26.
nest js docker 배포 하기 (nestjs) FROM node:18RUN mkdir -p /var/app WORKDIR /var/app COPY . . RUN npm iRUN npm run build EXPOSE 3000 CMD [ "node", "dist/main.js" ] node version 의 경우 원하는것으로 바꿔주면 되고,좀 더 빠르게 빌드하고 싶으면  아래와 같이 alpine 버전으로 변경해주면 된다.FROM node:18-alpine 2024. 11. 24.
Nest js Test Container 구성!! feat. Mysql 최근 대세(?)로 부각한, 테스트 주도 개발을 하기위해서는,,테스트 코드 작성이 필수 이다. (단위테스트, 통합테스트, e2e 테스트 등) 다만, 여기서 테스트 수행 시 DB가 항상 접속이 되어있어야 할까?는 다소 의문스러운 영역이긴하다왜? 독립적인 구성에서의 테스트가 이루어 져야하기 때문이다.예를 들면, Kafka 를 도입해서 사용중인데, Kafka 가 항상 있어야만 테스트를 돌릴수 있는가?라는 상황이면, github action 내에서 push 시점에서 테스트코드를 돌리기가 힘들것이다.(물론, 배포 후 cypress 등을 이용한 e2e테스트는 다를 수 있다.) 결론적으로는 B/E 단에서 독립적인 테스트 환경이 보장되냐 안되냐가 중요한 것이다.(서론이 다소 길었다.) 자, 그럼 독립적인 환경보장을 하기.. 2024. 11. 23.
TypeORM vs Prisma nest 를 사용하게되면서, TypeORM이라는 ORM 을 처음접했었다.사용을 하면서 실망을 상당히 많이한 npm 중 하나로 기억된다. 이번 글은 typeORM 과 이를 대처가능한 Prisma에 대한 비교글로 시작하려 한다.우선 구글링만 살짝해보아도 그동안 얼마나 많은 사람들이 두개의 ORM 을 비교하여선택했는지를 알 수 있다.심지어 Prisma 공식 사이트에서도 두개의 npm 을 비교한 글이 있는데 (https://www.prisma.io/docs/orm/more/comparisons/prisma-and-typeorm)내용을 요약해보면, typeORM은 전통적인 ORM 이고 Prisma는 여러측면에서 기존의 문제점을개선했으니, Prisma를 사용하는 것이 더 좋다이다. 그럼 어떤 측면에서 사용성이 좋아.. 2024. 8. 22.
About "nest js" based on past experience "One of great framework that has been used by many node developers in South Korea since around 2020"I am currently mentoring junior developers to give inforamtion how to utilize nest js into their service. It will be finished soon, but I would like to talk about the good point for now from nest js and the improvement point to be developed from nest js. As one of the feature of nest js microseriv.. 2024. 8. 21.
Nest js , MSA 기본 구조 설계 Nest를 써본지도 언 2년이 넘은듯 한다..net core 포함 .net, Java spring 으로 작업을 하다가 Python(Django), node(express)도여러차례 써볼일이 생겼지만, 스타트업으로 넘어오면서 Backend 쪽은 node 위에 nest js를 사용하게 될 일이 많아졌다. 오늘부터 한동안은 최근 핫한 MSA 구조에 대해 이야기 해보고 Nest 기반으로 어떻게 MSA 를 구축할 것인가를 써보겠다.아래 사이트는 (Source: https://scalablescripts.com) 에서 구조를 가져온 부분인데 기본을 설명하기 가장 적절해 보여 캡쳐하였다.  위의 그림대로 Client는 react 든, angular든, vue든 상관이 없다. API url이 정해지면 서비스에 맞도록 .. 2022. 10. 3.
728x90