홈시리즈

© 2026 Ki Chang. All rights reserved.

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

☕후원하기소개JSON Formatter러닝 대기질개인정보처리방침이용약관

© 2026 Ki Chang. All rights reserved.

콘텐츠: CC BY-NC-SA 4.0

☕후원하기
소개|JSON Formatter|러닝 대기질|개인정보처리방침|이용약관

Obsidian으로 프로젝트를 구조적으로 관리하기

ERD, 플로우차트, 명세, 백로그를 Obsidian에서 통합 관리하고, Claude Code와 연동하여 프로젝트를 구조적으로 분해하는 방법을 정리했습니다.

2026. 1. 19.

요즘 고민하는 것 : 추상화

AI 시대에 추상화와 테스트 코드가 왜 더 중요해졌는지에 대한 고민. 자연어보다 인터페이스로 명세를 작성하고, 테스트로 검증하는 것이 더 정확하고 신뢰할 수 있다는 생각을 정리했습니다.

2026. 1. 18.

3,655개 테스트 케이스로 검증하는 정기결제 시스템

정기결제 로직 변경 후 모든 케이스의 정확성을 어떻게 증명할까요? 2년치 날짜와 5가지 결제 주기를 조합한 3,655개 테스트 케이스 설계와 자동화 검증 시스템 구축 경험을 공유합니다.

2026. 1. 17.

PHP에서 Time Travel 테스트 구현하기: 미래 시점 결제 시뮬레이션

정기결제 시스템을 테스트하기 위해 PHP에서 시간 조작 테스트를 구현한 경험. HTTP 헤더를 활용한 가상 시간 설정과 배치 시뮬레이션 방법을 정리했습니다.

2026. 1. 16.

월말 정기결제의 함정: 31일→28일→31일 문제 해결하기

1월 31일에 시작한 정기결제의 2월 결제일은? 월마다 다른 마지막 날짜로 인한 정기결제 시스템의 엣지 케이스와 "원래 의도 보존" 전략을 통한 해결 방법을 공유합니다.

2026. 1. 15.

NestJS에서 Drizzle ORM을 선택한 이유: TypeORM, Prisma와의 비교

새로운 SaaS 모듈에 MySQL을 도입하면서 TypeORM, Prisma, Drizzle ORM을 비교했습니다. 각 ORM의 장단점과 Drizzle을 선택한 이유를 실제 코드 예시와 함께 정리했습니다.

2026. 1. 14.

UNION ALL로 분산된 이벤트 로그 통합하기

여러 테이블에 분산된 이벤트 로그를 통합 타임라인으로 제공해야 했습니다. UNION ALL로 SQL 레벨에서 통합하고, TypeScript Discriminated Union으로 타입 안전성을 확보한 경험을 정리했습니다.

2026. 1. 13.

NestJS 슬로우 쿼리 자동 감지: 스택 트레이스 캡처부터 Slack 알림까지

슬로우 쿼리가 발생했을 때 SQL은 쉽게 알 수 있지만, 어디서 호출했는지는 파악하기 어렵습니다. Knex Proxy 패턴으로 호출 스택을 자동 캡처하고 Slack으로 알림받는 시스템을 구현했습니다.

2026. 1. 12.

TypeScript verbatimModuleSyntax 마이그레이션 실전 가이드

TypeScript 5.0의 verbatimModuleSyntax 옵션을 모노레포 프로젝트에 적용하면서 배운 것들을 정리했습니다. 타입과 값의 import를 명확히 구분하는 것이 왜 중요한지, 그리고 실제 마이그레이션 과정에서 마주친 패턴들을 공유합니다.

2026. 1. 11.
<이전1...789101112>다음