Obsidian으로 프로젝트를 구조적으로 관리하기
ERD, 플로우차트, 명세, 백로그를 Obsidian에서 통합 관리하고, Claude Code와 연동하여 프로젝트를 구조적으로 분해하는 방법을 정리했습니다.
ERD, 플로우차트, 명세, 백로그를 Obsidian에서 통합 관리하고, Claude Code와 연동하여 프로젝트를 구조적으로 분해하는 방법을 정리했습니다.
AI 시대에 추상화와 테스트 코드가 왜 더 중요해졌는지에 대한 고민. 자연어보다 인터페이스로 명세를 작성하고, 테스트로 검증하는 것이 더 정확하고 신뢰할 수 있다는 생각을 정리했습니다.
정기결제 로직 변경 후 모든 케이스의 정확성을 어떻게 증명할까요? 2년치 날짜와 5가지 결제 주기를 조합한 3,655개 테스트 케이스 설계와 자동화 검증 시스템 구축 경험을 공유합니다.
정기결제 시스템을 테스트하기 위해 PHP에서 시간 조작 테스트를 구현한 경험. HTTP 헤더를 활용한 가상 시간 설정과 배치 시뮬레이션 방법을 정리했습니다.
1월 31일에 시작한 정기결제의 2월 결제일은? 월마다 다른 마지막 날짜로 인한 정기결제 시스템의 엣지 케이스와 "원래 의도 보존" 전략을 통한 해결 방법을 공유합니다.
새로운 SaaS 모듈에 MySQL을 도입하면서 TypeORM, Prisma, Drizzle ORM을 비교했습니다. 각 ORM의 장단점과 Drizzle을 선택한 이유를 실제 코드 예시와 함께 정리했습니다.
여러 테이블에 분산된 이벤트 로그를 통합 타임라인으로 제공해야 했습니다. UNION ALL로 SQL 레벨에서 통합하고, TypeScript Discriminated Union으로 타입 안전성을 확보한 경험을 정리했습니다.
슬로우 쿼리가 발생했을 때 SQL은 쉽게 알 수 있지만, 어디서 호출했는지는 파악하기 어렵습니다. Knex Proxy 패턴으로 호출 스택을 자동 캡처하고 Slack으로 알림받는 시스템을 구현했습니다.
TypeScript 5.0의 verbatimModuleSyntax 옵션을 모노레포 프로젝트에 적용하면서 배운 것들을 정리했습니다. 타입과 값의 import를 명확히 구분하는 것이 왜 중요한지, 그리고 실제 마이그레이션 과정에서 마주친 패턴들을 공유합니다.