전체 글(136)
-
Crypto와 Crypto-JS 선택 과정과 성능 비교
내가 이 글을 쓰게 된 이유암호화 기능을 구현할 때 어떤 라이브러리를 선택해야 할지 고민하게 되었습니다. Node.js 환경에서 기본 제공되는 Crypto 모듈과, 브라우저에서도 손쉽게 사용할 수 있는 Crypto-JS가 주요 후보였습니다. 이 글에서는 두 라이브러리를 비교하고, 최종적으로 왜 Crypto-JS를 선택했는지에 대해 다뤄보려 합니다. Crypto와 Crypto-JS 소개Crypto란?Crypto는 Node.js에 기본 내장된 암호화 모듈로, 다양한 암호화 알고리즘을 제공하여 서버 측 암호화 작업에 최적화되어 있습니다. 주로 데이터 암호화, 디지털 서명 생성, 해시 처리 등을 위한 API를 제공합니다.Crypto-JS란?Crypto-JS는 JavaScript 기반 암호화 라이브러리로, 브라..
2025.01.20 -
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 -
Docker와 Ngrok을 활용
1. 서론현재 온라인 사이드 프로젝트를 진행 중이며, DevOps 환경이 아직 구축하지 못해, 하지만 프론트엔드와의 통신을 위해 Docker와 Ngrok을 활용하여 외부에서 접근할 수 있는 환경을 설정하는 방법을 공유하고자 합니다. NestJS 애플리케이션을 Docker 컨테이너에서 실행하고, Ngrok을 통해 외부 IP를 사용할 수 있도록 만드는 과정을 설명합니다. 2. Dockerfile 작성2.1 Dockerfile 기본 구조NestJS 애플리케이션을 위한 Dockerfile을 작성하는 것이 첫 번째 단계입니다. 아래는 기본적인 Dockerfile 예시입니다.# Base imageFROM node:18.20.4-alpine# # Create app directoryRUN mkdir -p /var/a..
2024.10.12 -
NestJS cache-manager 사용하기
캐싱을 통한 성능 개선 1. cache?캐싱은 데이터의 복사본을 임시 저장소에 저장하여, 동일한 데이터에 대한 요청이 있을 때 더 빠르게 응답할 수 있도록 하는 기술입니다. 이를 통해 데이터베이스의 부하를 줄이고, 응답 속도를 개선할 수 있습니다. 2. 캐싱의 필요성 성능 향상: 데이터베이스 쿼리의 수를 줄여 응답 속도를 개선합니다. 비용 절감: 데이터베이스의 부하를 줄여 서버 비용을 절감할 수 있습니다. 사용자 경험 개선: 빠른 응답 속도로 사용자 만족도를 높입니다. 3. 캐싱 구현 방법NestJS를 사용하여 캐싱을 구현하는 방법을 소개합니다. 3.1. 캐시 모듈 설치npm install @nestjs/cache-manager cache-manager 3.2. 캐시 모듈 설정app.modul..
2024.10.03