“Nestjs” 태그의 포스트
(7개)설문조사 폼 임시저장 기능 구현하기: SQLite와 MongoDB 하이브리드 아키텍처 (1)
설문조사용 폼 서비스에 임시저장 기능을 개발하며, MongoDB의 NoSQL 기반 대량 JSON 데이터 관리 방식이 고속·고빈도 데이터 송수신 요구사항에 적합하지 않음을 발견했습니다. 이 글에서는 이를 해결하기 위한 설계 과정과 아키텍처를 소개합니다.
설문조사 폼 임시저장 기능 구현하기: WebSocket 실시간 통신과 Kubernetes 세션 관리 (3)
HTTP 통신의 반복적 요청 부하를 해결하기 위해 WebSocket을 활용한 실시간 임시저장 기능을 구현했습니다. NestJS Gateway, Kubernetes 다중 Pod 환경에서의 세션 관리, Redis를 활용한 중앙 집중식 세션 저장 전략을 소개합니다.
설문조사 폼 임시저장 기능 구현하기: BullMQ를 활용한 백업 전략과 Graceful Shutdown (4)
휘발성 임시 저장 데이터의 일관성을 보장하기 위해 BullMQ의 repeatable job을 활용한 주기적 백업, 소켓 연결 해제 시 즉시 백업, Kubernetes Pod 종료 시 Graceful Shutdown을 통한 데이터 보존 전략을 구현했습니다.
AWS SES로 이메일 발송 시스템 구축하기: 대량 발송과 반송 처리 전략
AWS SES를 활용한 자동화된 이메일 발송 시스템을 구축했습니다. 대량 메일 발송, AWS SNS와 Lambda를 통한 반송/불만 처리, 블랙리스트 관리 등 실제 운영 환경에서 필요한 기능들을 구현한 과정을 공유합니다.
WebSocket API 문서화: AsyncAPI 커스텀 구현과 동적 스펙 생성 시스템
소켓 API 문서화를 위해 AsyncAPI를 도입했습니다. nest-asyncapi의 한계를 극복하기 위해 데코레이터 기반 메타데이터 수집과 동적 AsyncAPI 스펙 생성 시스템을 직접 구현한 과정을 공유합니다.
MongoDB 멀티 도큐먼트 트랜잭션: AsyncLocalStorage와 Mongoose 미들웨어 활용
MongoDB의 멀티 도큐먼트 트랜잭션을 Node.js에서 안전하게 구현하기 위해 AsyncLocalStorage와 Mongoose 미들웨어를 사용하는 방법을 설명하며, 자동 세션 관리, 재시도 메커니즘, 에러 처리 및 성능 최적화의 중요성을 강조합니다. 다양한 구현 방식을 비교하고, @Transactional 데코레이터를 통해 복잡한 비즈니스 로직을 안전하게 처리하는 방법을 제시합니다.
NestJS AOP로 Kafka Consumer 데코레이터 만들기
Kafka 메시지 처리를 위해 각 토픽마다 개별 컨슈머 그룹을 구성하고, 커스텀 데코레이터(@Consume)를 통해 컨트롤러의 특정 메서드를 Kafka Consumer로 등록하는 방법을 설명합니다. NestJS에서 데코레이터는 마킹, 조회, 등록의 3단계로 동작하며, 이를 통해 독립적인 오프셋 관리, 맞춤형 소비 로직, 리밸런싱 영향 최소화 등의 장점을 제공합니다.