turin's blog

만들고, 터지고, 기록합니다

풀스택, Flutter, 서버 운영, SEO, 배포 삽질을 실제 프로젝트 기준으로 정리합니다. 검색해서 들어온 사람이 바로 쓸 수 있는 체크리스트와 명령을 남기는 게 목표입니다.

1175published
8topics
kopractical notes

자주 다루는 주제

주제별로 빠르게 훑어보기

웹 개발350Next.js283서버 운영165Docker110API80TypeScript58DB50Flutter39

전체 글

운영 중 부딪힌 문제를 검색 의도에 맞춰 정리

TypeScript

TypeScript 타입 에러는 한 곳이 아니다

API 응답 타입이 맞지 않아서 터지는 TypeScript 에러. 그 원인이 항상 명백한 곳에 있지는 않다.

·2분 읽기
Docker1분 읽기

배포 직전 Dockerfile 한 번 더 보는 것들

같은 Dockerfile도 프로덕션 환경에서는 전혀 다르게 동작한다. 배포 전 체크리스트.

계속 읽기 →
웹 개발1분 읽기

UNIQUE 제약 위반은 항상 예상 밖에서 터진다

데이터베이스의 UNIQUE 제약이 모르는 사이에 깨지는 상황과, 그걸 디버깅하는 차근차근한 과정.

계속 읽기 →
웹 개발1분 읽기

작은 이상 신호는 로그에 먼저 보인다

서버 운영 중 장애가 터지기 전에 꼭 있는 조용한 경고들. 그걸 놓치지 않는 방법.

계속 읽기 →
웹 개발1분 읽기

트랜잭션 처리는 배포할 때 처음 의심해야 할 곳

로컬에선 잘 작동하던 DB 트랜잭션이 운영 환경에서 갑자기 실패하는 경험. 그때마다 확인해야 할 것들을 정리했다.

계속 읽기 →
API1분 읽기

API 응답 캐싱으로 인한 문제를 디버깅할 때

캐싱은 성능을 높여주지만, 그만큼 디버깅을 어렵게 만든다. 구분할 수 있어야 한다.

계속 읽기 →
Next.js1분 읽기

Next.js 정적 생성 문제를 진단할 때 먼저 볼 로그

Next.js의 정적 생성은 빌드 타임에 일어나므로, 빌드 로그가 가장 중요한 정보다.

계속 읽기 →
웹 개발1분 읽기

푸시 알림으로 인해 앱이 느려졌을 때 확인 순서

앱이 느려졌다는 건 원인이 다양할 수 있다. 체계적으로 범위를 좁혀가야 한다.

계속 읽기 →
Next.js1분 읽기

React에서 빈 상태 처리 때문에 막힐 때

빈 상태는 단순해 보이지만, 여러 조건이 얽혀 있으면 디버깅이 복잡해진다.

계속 읽기 →
Docker1분 읽기

docker-compose 배포 후 데이터가 사라졌을 때 디버깅하기

Docker 컨테이너에서 데이터가 사라지는 문제는 대부분 볼륨 마운트나 이미지 태그 때문이다.

계속 읽기 →
TypeScript1분 읽기

TypeScript에서 이벤트 타입을 안전하게 바꾸는 법

이벤트 타입을 리팩터링할 때 한 번에 모든 파일을 고치면 뭐가 문제인지 알 수 없다.

계속 읽기 →
웹 개발1분 읽기

Play Console에서 에뮬레이터와 실기기 동작이 다를 때

모바일 앱은 에뮬레이터와 실제 기기에서 다르게 동작한다. 차이를 좁혀가려면 체계적으로 접근해야 한다.

계속 읽기 →
TypeScript1분 읽기

TypeScript 타입 가드를 다룰 때 문제 해결 기준

타입 가드는 런타임 검사인데, 타입 정의와 실제 로직이 맞지 않으면 버그가 숨어든다.

계속 읽기 →
TypeScript1분 읽기

TypeScript에서 이벤트 타입이 빌드에서만 에러날 때

이벤트 타입 문제는 대부분 로컬 개발 환경과 빌드 환경의 차이에서 비롯된다.

계속 읽기 →
TypeScript1분 읽기

환경변수 타입을 다룰 때 타입 단언이 늘어나는 이유

환경변수는 런타임에 결정되므로, 처음부터 타입을 정확하게 정의하지 않으면 나중에 타입 단언만 늘어난다.

계속 읽기 →
웹 개발1분 읽기

낙관적 업데이트를 운영 중에 다시 보기

낙관적 업데이트는 편하지만, 배포 후 문제가 터졌을 때는 화면만으로는 원인을 알기 어렵다.

계속 읽기 →
TypeScript1분 읽기

TypeScript에서 날짜 타입 리팩터링할 때 확인해야 할 것

날짜 관련 버그를 쫓을 때는 타입 정의부터 실제 응답까지 체계적으로 비교하는 게 핵심이다.

계속 읽기 →
서버 운영2분 읽기

서버 로그를 읽고 문제를 추적하기

서버 문제를 해결할 때는 로컬 개발 환경과 운영 환경의 차이를 염두에 두고 로그와 시스템 상태를 함께 봐야 한다.

계속 읽기 →
API2분 읽기

API 연동 중 빌드 시간이 갑자기 길어질 때

빌드 시간이 예상보다 오래 걸리면, 보통 API 호출이 병렬이 아닌 직렬로 처리되거나 타임아웃이 없어서다.

계속 읽기 →
TypeScript2분 읽기

TypeScript에서 optional과 null을 구분해서 타입 에러 없애기

TypeScript의 타입 에러는 복잡해 보이지만, 대부분 optional(?)과 null/undefined를 헷갈렸거나 타입 가드를 빠뜨린 경우다.

계속 읽기 →
API2분 읽기

외부 이벤트 API 응답이 예상과 다를 때

이벤트 기반 API를 다룰 때 응답 형식이 갑자기 바뀌거나 필드가 누락되면, 먼저 실제 응답을 직접 확인해야 한다.

계속 읽기 →
Next.js2분 읽기

Next.js 배포 후 캐시 때문에 오래된 콘텐츠가 보일 때

배포 후 브라우저나 CDN 캐시로 인해 변경사항이 보이지 않으면, 버전 관리와 캐시 헤더를 점검해야 한다.

계속 읽기 →
서버 운영2분 읽기

서버 배포 후 로컬에서는 없던 에러가 날 때

프로덕션 환경의 에러는 보통 환경 변수, 데이터베이스 상태, 또는 빌드 설정이 다를 때 나타난다.

계속 읽기 →
Next.js2분 읽기

React 페이지네이션에서 로그인이 풀릴 때

페이지를 넘길 때 갑자기 로그인이 풀리거나 데이터가 초기화되는 문제는 보통 상태 관리나 이벤트 흐름 문제다.

계속 읽기 →