Hello, blog visitors
Three fresh topics every day
Check out the newest posts!
Looking back to grow forward
Sharing real-world service issues I've faced and the experience gained from solving them
— 태성쌤 친필 사인 —올해 초 우연히 보게 된 영화를 계기로 세웠던 목표가 있다. 바로 한국사 시험에 합격하고 경주로 여행을 간다는 목표인데, 시험에 합격했다는 사실보다 역사 속 인물들을 공부하면서 가르침을 얻고, 내 삶을 대하는 태도가 또 조금은 바뀌게 된 것 같아서 기분이 좋다. 사실 최근 갑작스럽게 새로운 프로젝트에 투입되면서 경주 여행은 힘들겠구나 생각하고 있었는데, 마침 울산으로 출장을 가게 되어 겸사겸사 하루 먼저 여행을 왔다. 자취 시작한지 한달도 안돼서 멀리 떠나게 된 게 슬프지만, 피할 수 없다면 즐겨야지...—
1. 문제 상황 NestJS 프로젝트 개발 중 코드를 수정했음에도 불구하고 dist 폴더 내의 결과물이 갱신되지 않거나 심지어 dist 폴더 자체가 생성되지 않는 현상을 겪었다. nest start --watch 모드를 사용 중임에도 변경사항이 반영되지 않아 매번 수동으로 폴더를 지우고 다시 실행해야 하는 번거로움이 발생했다. 2. 원인 분석 이 문제의 핵심 원인은 TypeScript의 증분 빌드(Incremental Build) 메커니즘과 그 결과물인 tsconfig.tsbuildinfo 파일에 있었다. 증분 빌드란?모든 파일을
최근 NestJS를 활용해 관리자 CMS 프로젝트를 진행하던 도중 백엔드 설계 시 고유 ID 값으로 BigInt를 사용할 때 발생할 수 있는 치명적인 자바스크립트 정밀도 유실 문제에 대해 알게 되었다. 당장 내 코드에서 에러가 나지 않더라도 서비스가 커져 ID 값이 커지는 순간 문제가 될 수 있기 때문에 왜 자바스크립트에서 큰 숫자를 다룰 때 문자열 처리가 필수인지 정리해보자. 1. 자바스크립트 숫자의 한계: IEEE 754 표준 자바스크립트는 정수(Int)와 실수(Float)의 구분 없이 모든 숫자를 64비트 부동 소수점(Doub
1. 문제 상황 기존에 사용하던 GitHub Actions 구성은 다음과 같았다. name: Deploy to Raspberry Pi on: push: branches: [ main ]jobs: deploy: name: Deploy via SSH runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0
1. 문제 상황 기존 프론트엔드(Next.js) 서버의 사이트맵 생성 로직은 백엔드의 게시글 목록 API를 활용하고 있었다. 이 과정에서 몇 가지 문제가 발생했다. 응답 지연 및 타임아웃: 페이징 기반 API를 사용함에 따라 전체 데이터를 불러오기 위해 순차적인 HTTP 요청이 발생했고 데이터 양에 비례해 응답 시간이 증가함 검색엔진 크롤링 실패: Googlebot과 달리 네이버의 Yeti 봇은 응답 대기 시간이 일정 수준을 초과할 경우 연결을 강제로 종료하여 사이트맵 수집에 실패하는 현상 확인 리소스 낭비: 사이트맵 생성에 불필요