홈시리즈개발 의뢰

© 2026 정기창. All rights reserved.

본 블로그의 콘텐츠는 CC BY-NC-SA 4.0 라이선스를 따릅니다.

☕후원하기라벤더 프로젝트소개JSON Formatter러닝 대기질개인정보처리방침이용약관환불 규정

© 2026 정기창. All rights reserved.

콘텐츠: CC BY-NC-SA 4.0

☕후원하기
라벤더 프로젝트소개|JSON Formatter|러닝 대기질|개인정보처리방침|이용약관|환불 규정

정기창 · 풀스택 개발자 · 라벤더 프로젝트 대표

매일 쓰고, 매일 빌드합니다.

NestJS 백엔드와 Next.js 프론트엔드를 하나의 모노레포에서 운영하며 겪은 시행착오, 그리고 AI를 개발 워크플로우에 녹이며 배운 것을 기록합니다.

시리즈로 읽기→라벤더 프로젝트
최신 글

밤에만 실패하는 테스트 — 같은 커밋이 낮에는 통과했습니다

CI 게이트가 밤 9시 42분에 실패했고, 같은 커밋이 오후에는 통과했습니다. 낮에 도는 CI 가 숨은 전제가 된 테스트 8건, 밤에는 초록인데 아무것도 재지 않던 테스트, MySQL 세션 시계로 고친 과정을 정리했습니다.

2026. 10. 22.

e2e 테스트 시간의 39%는 ALTER TABLE 이었습니다 — MySQL 하네스의 정리 비용 줄이기

MySQL e2e 테스트 시간의 39%가 정리 함수의 ALTER TABLE AUTO_INCREMENT 였습니다. 통계 캐시를 건너뛰어 필요한 표만 되돌리고, 연결은 COM_RESET_CONNECTION 으로 비워 다시 써서 로컬 381초를 205.5초로 줄인 과정과 한계를 정리했습니다.

2026. 10. 21.

vitest 격리를 파일마다 고르기 — 상태를 남기는 스펙만 격리했습니다

vitest의 기본 격리는 테스트 파일마다 모듈을 다시 읽습니다. 소스를 읽어 상태를 남기는 스펙만 격리에 두고 나머지를 isolate: false로 옮긴 분류기와 거짓 통과를 막는 표지, extends 함정, 8코어 CI 측정 결과를 한계와 함께 정리합니다.

2026. 10. 21.

TypeScript 7을 타입 검사에만 쓰기 — 빌드와 lint는 5.x에 남겨 둔 이유

TypeScript 7은 API 없이 나와 lint와 next build에는 쓸 수 없습니다. pnpm 모노레포에서 타입 검사 명령만 7로 옮기고 나머지는 5.x에 둔 구성과 peer 함정, 검증 방법, 8코어 CI 26초가 6초가 된 측정을 정리했습니다.

2026. 10. 20.

CI 46분이 8.5분이 되기까지 — 러너 교체와 코드 개선을 갈라서 잰 기록

릴리스마다 46분 걸리던 CI 게이트가 8.5분이 됐습니다. 그중 34.5분은 러너 교체였고 코드로 줄인 몫은 2.5분 남짓입니다. 실행마다 1.5배 다른 러너 속도와 5% 규칙, 더해지지 않는 개선까지 측정 기록을 정리했습니다.

2026. 10. 19.

Cloudflare Stream 도입기 4: 영상 버전과 단계별 운영 전환

영상 제공자를 바꾸면 기존 진도와 수료증의 의미도 다시 확인해야 합니다. 제공자·영상 버전·발급 근거를 분리하고, 스키마 확장과 서버 환경변수, 커밋 단위 배포를 준비한 과정을 정리합니다. 테스트별 검증 범위와 실제 영상 검수, 학습 기록과 동의 기반 GA4 분석의 경계도 다룹니다.

2026. 10. 18.

Cloudflare Stream 도입기 3: 시청 구간으로 계산하는 진도와 수료

영상의 마지막 위치만으로는 실제 학습 진도를 판단하기 어렵습니다. 시청 구간의 합집합, 관측 시간과 요청 순번, 배속·탐색 처리, 토큰 갱신 중 저장과 로그아웃의 경쟁 조건을 다룹니다. 모든 회차 100%라는 수료 정책을 서버에서 판정하는 방법과 모의 테스트의 검증 범위를 정리합니다.

2026. 10. 17.

Cloudflare Stream 도입기 2: 서명 URL과 재생 권한의 경계

유료 강의의 재생 권한을 학생 인증·수강권·영상 버전과 연결했습니다. RS256 서명 URL의 claim, 서버 전용 키 관리, 15분 만료와 재발급, 공급자 보호 설정 검증을 살펴봅니다. 로그아웃 이후 남는 토큰의 유효 범위와 서명 URL이 보장하지 않는 영역도 구체적으로 정리합니다.

2026. 10. 16.

Cloudflare Stream 도입기 1: 영상 전달 구조와 시청 비용 계산

유료 온라인 강의를 Cloudflare Stream으로 전환하며 영상의 저장·인코딩·전달 경로를 구분했습니다. HLS와 적응형 스트리밍의 원리, 애플리케이션 서버와 CDN의 역할, 저장·전달 분량에 따른 비용 계산, 학습 진도와 과금 사용량이 달라지는 이유를 구현을 바탕으로 정리합니다.

2026. 10. 15.

macOS에서 APK를 빌드하고 설치하기 — 서명·ADB·실기기 검증

macOS에서 관리자 APK를 빌드하고 Android 기기에 설치한 과정을 정리했습니다. JDK·SDK·Gradle의 역할, release 서명 키 관리, 충전과 ADB 연결의 차이, adb reverse를 이용한 로컬 검증을 다룹니다. 에뮬레이터 테스트와 실제 휴대폰에서 확인한 범위를 구분해 기록했습니다.

2026. 10. 14.
<이전12345...35>다음