NestJs(23)
-
Jest를 활용한 유닛 테스트
서론 유닛 테스트는 단순한 기능 검증을 넘어 시스템 안정성과 코드 품질을 보장하는 중요한 요소입니다. 이번 프로젝트에서는 전체 서비스의 다양한 기능에 대해 Jest를 사용하여 유닛 테스트 코드를 작성하였고, 이를 통해 테스트 커버리지를 17.3% 향상시켰습니다. 이 블로그에서는 Jest를 활용한 유닛 테스트를 어떠한 이유로 작성하게 되었는지에 대한 배경을 공유합니다. 왜 테스트 코드를 작성했는가?프로젝트에서 작성한 테스트 코드는 주요 로직, 에러 처리, 비동기 로직, 그리고 보조 기능들까지 모두 포함되어 있습니다. 다음은 테스트 코드를 작성하며 중점적으로 작업한 이유들입니다:핵심 로직 검증서비스의 주요 로직을 철저히 검증하기 위해 각 기능별로 최소 3~4개의 테스트를 작성했습니다.예: TTS API 호..
2024.12.11 -
AWS Polly vs Google Text-to-Speech
서론인턴으로 일하면서 처음으로 TTS API 개발 프로젝트를 맡게 되었습니다. 회사에서는 기존에 사용하던 AWS 서비스와의 연계성, 비용 효율성 등을 고려해 AWS Polly와 Google TTS 두 가지 플랫폼을 검토했습니다. 최종적으로 저는 AWS Polly를 선택했는데, 그 이유와 과정, 그리고 결과에 대해 소개하고자 합니다. 1. AWS Polly를 선택한 이유TTS 플랫폼 선택의 주요 기준은 비용 절감, 품질, 그리고 기존 시스템과의 통합성이었습니다. AWS Polly는 다음과 같은 이유로 Google Cloud TTS에 비해 우위를 점했습니다:기존 AWS 인프라와의 연계성회사의 대부분 서비스가 AWS에서 운영되고 있었기 때문에 AWS Polly는 기존 시스템과 쉽게 통합할 수 있었습니다...
2024.12.11 -
axios Ngrok와 통신하면서 발생한 문제
서론프로젝트에서 서버 비용 문제로 인해 빠른 테스트를 위해 개발 과정에서 Ngrok을 사용하기로 결정하였습니다. 그러나 Ngrok을 통한 통신 과정에서 에러가 발생하였습니다. 프론트엔드에서 서버로 API 요청을 보냈으나 요청한 값 대신 이미지와 같은 에러가 발생하였습니다. 백엔드에서는 204 상태 코드와 OPTIONS 요청이 발생하였고, 이를 통해 원인을 분석하였습니다. 원인 분석204 상태 코드와 OPTIONS 요청이 발생하는 조건은 다음과 같습니다:GET, HEAD, POST 요청이 아닌 경우Custom HTTP Header가 존재하는 경우유저 에이전트가 자동으로 설정한 헤더예: Connection, User-Agent (en-US) 등Fetch 명세에서 “forbidden header name”..
2024.10.26 -
NestJS cache-manager 사용하기
캐싱을 통한 성능 개선 1. cache?캐싱은 데이터의 복사본을 임시 저장소에 저장하여, 동일한 데이터에 대한 요청이 있을 때 더 빠르게 응답할 수 있도록 하는 기술입니다. 이를 통해 데이터베이스의 부하를 줄이고, 응답 속도를 개선할 수 있습니다. 2. 캐싱의 필요성 성능 향상: 데이터베이스 쿼리의 수를 줄여 응답 속도를 개선합니다. 비용 절감: 데이터베이스의 부하를 줄여 서버 비용을 절감할 수 있습니다. 사용자 경험 개선: 빠른 응답 속도로 사용자 만족도를 높입니다. 3. 캐싱 구현 방법NestJS를 사용하여 캐싱을 구현하는 방법을 소개합니다. 3.1. 캐시 모듈 설치npm install @nestjs/cache-manager cache-manager 3.2. 캐시 모듈 설정app.modul..
2024.10.03 -
[NestJS] google-cloud-text-to-speech vs AWS Polly 차이점 & 사용법
서론최근 텍스트 음성 변환(TTS) 기술은 고객 지원 시스템 등에서 자연스러운 음성 경험을 제공하며 빠르게 발전하고 있습니다. Google Cloud Text-to-Speech와 AWS Polly는 대표적인 클라우드 기반 TTS 서비스로, 각자의 강점과 특징이 있어 프로젝트에 적합한 서비스를 선택하는 것이 중요합니다. 본 글에서는 이 두 서비스의 특징과 차이점을 비교하고 간단한 사용법을 안내합니다. Google Cloud Text-to-SpeechGoogle Cloud Text-to-Speech는 **Google Cloud Platform(GCP)**에서 제공하는 텍스트 음성 변환 서비스로, 딥러닝 기반의 WaveNet 기술을 사용하여 자연스러운 음성을 생성합니다. 이 서비스는 220개 이상의 다양한..
2024.10.01 -
[NestJS] Postman auth에 토큰 보내기
서론백엔드에서 socket.io를 Postman으로 테스트하는 도중, socket.io는 handshake에서 headers로 토큰을 보낼 수 있지만, 구글링을 통해 auth에 토큰을 보내야 한다는 것을 확인했습니다. 이를 바탕으로 auth에 토큰을 어떻게 보낼 수 있는지 조사해 보았습니다. getUserIdFromSocket(client: Socket): number | null { const authHeader = client.handshake.auth.token; const token = authHeader && authHeader.toLowerCase().startsWith("bearer ") ? authHeader.substring(7) // "Bearer "..
2024.08.07