개발/Node.js, TypeScript5 [NestJS] Prisma Transaction 들어가며오늘은 NestJS + Prisma 조합의 애플리케이션에서 데이터베이스 트랜잭션(Transaction)을 구현하는 방법을 알아보겠습니다. 데이터베이스 트랜잭션은 DBMS에서 사용되는 더 이상 쪼갤 수 없는 작업의 최소 단위입니다.예를 들어 주문-결제 로직이 상품 수량 업데이트 → 유저 정보 업데이트 → PG API 호출 → 결제 상태 업데이트 이렇게 작성되어있는데, PG API 호출 단계에서 예외가 발생해 종료되었다고 했을 때 아무런 처리가 되어있지 않다면 데이터 일관성이 깨지게됩니다. (상품, 유저 테이블은 결제 완료 처리가 반영되었는데 결제 테이블은 반영되지 않음)이런 경우 상품, 유저, 결제 테이블 업데이트를 하나의 트랜잭션으로 묶어서 처리할 수 있습니다. 이 글에서는 nestjs-cls/t.. 2025. 3. 2. [NestJS] 로컬에서 스크립트 실행하기 (feat. nestjs-command) 들어가며 백엔드 개발을 하다보면 데이터베이스 스키마가 변경되어 마이그레이션을 수행하거나, 데이터를 수동으로 조작해야 하는 경우가 종종 발생합니다. 이러한 작업을 수행할 때 데이터베이스에 직접 SQL 쿼리(Raw Query)를 실행할 수도 있고, 프로젝트의 코드베이스를 활용해 스크립트를 작성하고 실행하는 방법도 있습니다.Raw Query 방식은 실수가 발생할 위험이 있고, 반복적으로 수행해야하는 작업인 경우 DB 스키마나 비즈니스 로직이 변경될 때마다 별도로 반영해야하는 불편함이 있습니다. 그래서 저는 ORM과 기존의 비즈니스 로직을 활용할 수 있는 스크립트 방식을 더 선호합니다.NestJS는 의존성 주입(Dependency Injection, DI) 방식으로 동작하기 때문에, Service나 Reposi.. 2025. 2. 16. [NestJS] 마이크로서비스와 하이브리드 애플리케이션 구성하기 마이크로서비스(Microservice) 아키텍처란?마이크로서비스 아키텍처는 하나의 애플리케이션을 여러개의 독립적으로 배포 가능한 작은 서비스로 나누고, 이들 사이의 결합을 느슨하게 유지하는 소프트웨어 아키텍처 방식입니다.기존의 모놀리식(Monolithic) 아키텍처와 비교했을 때, 서비스별 코드의 규모가 작고 개별적으로 배포할 수 있다는 점이 큰 장점입니다. 이러한 특성 덕분에 서비스 확장성과 유지보수에 용이하며, 최근에는 대규모 애플리케이션을 운영하는 많은 조직에서 마이크로서비스 아키텍처를 도입하는 것을 볼 수 있습니다.이번 글에서는 NestJS에서 마이크로서비스 아키텍처를 구성하는 방법을 알아보고, 각 마이크로서비스에서 API 서버와 내부 서비스간 통신을 함께 운영하는 하이브리드 애플리케이션(Hybr.. 2025. 2. 2. [Node.js] 인앱결제 서버 개발기2 (구글 플레이스토어) 지난 시간에 이어, 이번 글에서는 안드로이드 구글 플레이스토어 인앱결제를 지원하는 서버 구현에 대해 이야기해보겠습니다. 참고) Google Play 결제 시스템 개요 공식문서 사전 준비 Google play server API 호출을 위해서는 Access Token을 발급 받아야합니다. Access Token 발급에 필요한 JWT 생성을 위해 서비스 계정을 만들고 private key를 준비해보겠습니다! 참고) Google Play Developer API 공식문서 Google Cloud 프로젝트에 개발자 계정 연결 및 연결된 프로젝트에 Google Play Developer API 사용 설정 1. Google Play Console 로그인 2. 설정 > API 액세스 > 프로젝트 생성 / 연결 > Go.. 2023. 7. 23. 이전 1 2 다음