로컬 DB 싱글턴화로 초기화 속도 개선하고 커밋 컨벤션 정리
목차
커밋 컨벤션 정리하다가 메시지가 꼬임
오늘 작업은 분량으로 보면 가벼운데 시간을 의외로 잡아먹었음. 스킬/에이전트 가이드 문서 두 개, 진입점 화면 클래스 라이프사이클 한 군데, 로컬 DB 추상 레이어를 한 커밋에 묶다가 prefix 표기를 잘못 적어서 다시 정리함.
무엇이 문제였나
처음엔 그냥 feat: chage git 이라고 적었음. 보다시피 오타가 났고, 더 큰 문제는 변경 성격이 섞여 있었다는 거임.
- 문서 두 개 (스킬/에이전트 작성 가이드)
- 진입점 화면의 초기화 순서 일부 수정
- 로컬 DB 추상 레이어 싱글턴화
원래라면 이걸 최소 두세 개로 쪼개야 했는데, 시간이 늦어서 한 번에 묶음. 묶을 거면 메시지라도 정확히 적었어야 했는데 오타까지 남. push 전에 발견해서 amend 로 정리함.
메시지 컨벤션 표로 굳히기
이번 기회에 prefix 규칙을 표로 굳혀둠. 다음에 안 헷갈리려고.
| 타입 | 용도 | 예시 |
|---|---|---|
| feat | 새 기능 | feat: 파트너 webhook 수신 |
| fix | 버그 수정 | fix: 동기화 시 NPE |
| refactor | 동작 동일, 구조 변경 | refactor: 레포지토리 추출 |
| docs | 문서만 | docs: 에이전트 가이드 추가 |
| chore | 잡일 | chore: 의존성 업 |
DB 레이어 손본 부분
진입점에서 DB 빌더를 매번 새로 부르고 있었음. 화면 재진입마다 인스턴스가 새로 만들어져서 콜드 스타트가 길어지는 원인이었음. 싱글턴으로 정리함.
val db = synchronized(this) {
instance ?: build().also { instance = it }
}
디버그 빌드 기준 초기화 구간만 보면 약 80ms → 20ms. 체감으로도 첫 화면이 덜 걸림.
배운 것
- 커밋은 쪼갤 수 있으면 무조건 쪼갠다. 문서 + 코드 + 데이터 레이어가 한 커밋에 묶이면 롤백이 지옥.
- prefix 오타는 amend 가능할 때 즉시 고친다. push 이후엔 history rewrite 비용이 큼.
- 싱글턴은 게으르게, 동기화는 진입점 한 곳에서만.
문서 커밋과 코드 커밋을 같이 묶으면 리뷰어가 "이게 왜 같이 있지?"라고 물어보는 시점이 반드시 옴. 그때 답하기 곤란하면 애초에 분리했어야 한다는 신호임.
다음 작업은 마이그레이션 시나리오 테스트 보강. 끝.
댓글 0
첫 댓글 달아줘.