no image
외래키를 사용해야 할까
한 NestJS 강의를 보며 놀랐던 부분이 있다. 강의에서 커머스 서비스에 대한 스키마를 설계 중이였는데 다른 테이블의 ID를 외래키로 설정하지 않는 것이였다. 설정하지 않은 이유는 성능 오버헤드였다. 당황스러운 마음에 처음엔 이해가 되지 않았지만 잠시 생각해보니 그 이유를 알 수 있었다. 외래키는 무결성을 보장할 수 있는 다른 테이블의 기본키이다. 종종 개발을 하다보면 이 외래키(무결성 제약)로 인해 개발자 입장에서 불편한 일을 겪곤 한다. 외래키 설정 시 Hard Delete 를 고려해 casacade, restrict 를 고민하기도하고 때때론 특정 데이터를 수정해야 할 때 고민을 하게 만든다. 나는 지금까지 이런 일은 소위 개발자가 겪어야 할 당연한 일이라고 생각했다. 여기까진 당연한 일이 맞다..
2025.04.10
no image
[NestJS] Sharp를 이용한 이미지 포맷 최적화 (to webp)
작업 배경이번에 라멘로드 에 리뷰 기능을 개발하게 되었습니다.   리뷰 기능이 추가됨에 따라 S3 요금 걱정도 하게 되었습니다. S3에서 이미지를 불러오고 업로드할 때 용량 걱정이 되더라구요. 물론 사용자가 적어서 비용이 발생하더라도 크진 않겠지만.. 고민을 하던 도중, 라멘로드 프론트엔드 팀원 중 한분께서 webp 포맷을 적용해보는 건 어떠냐고 말씀주셨습니다. 최근 웹에서 이미지를 다운로드 받을 때 webp 로 다운로드되는 경우가 있어서 짜증나는 마음에 webp 를 알고있었는데, 이미지 용량 최적화에 뛰어난 포맷이라고 알려주시더라구요.  또, 최근 많은 기업이 최적화를 목적으로 이미지 파일을 webp 로 저장한다는 사실도 알게 되었습니다. (ex. 구글, 무신사 등)  이런 배경에서 비용 절감 + 최적..
2025.03.21
no image
NestJS 11 업데이트 살펴보기
2025년 1월 22일 NestJS 11 버전 업데이트가 공지되었습니다.  로거 기능 추가, 마이크로서비스 트랜스포터 개선, 어플리케이션 속도 향상, Express / Fastify v5 지원 등이 이번 업데이트의 메인 포인트입니다. 1. 로거 업그레이드NestJS 의 기본 로거인 ConsoleLogger 가 이제 중첩 객체, 배열에 대한 더 나은 포맷팅을 제공하고 Map / Set 자료구조를 지원합니다. 또한 이번 로거 업데이트에 JSON 로깅 기능이 추가되었습니다. 이제 JSON 형식으로 로그를 출력할 수 있습니다.  아래 구성을 통해 JSON 형식 로깅을 설정할 수 있습니다. const app = await NestFactory.create(AppModule, { logger: new Consol..
2025.01.31