로딩 중...
로딩 중...
Pages Router에서 App Router로 마이그레이션하면서 겪은 시행착오를 공유합니다. 서버 컴포넌트와 클라이언트 컴포넌트의 경계를 정하는 게 가장 어려웠는데, 결론적으로는 가능한 한 서버 컴포넌트를 유지하고 인터랙션이 필요한 최소 단위만 클라이언트로 분리하는 것이 최선이었습니다.
3개월간 GitHub Copilot, Cursor, Claude Code를 번갈아 사용해본 솔직한 후기입니다. 단순 코드 자동완성은 Copilot이 가장 빠르고, 프로젝트 컨텍스트를 이해하는 능력은 Cursor가 뛰어났습니다. Claude Code는 복잡한 리팩토링이나 아키텍처 수준의 변경에서 가장 만족스러웠고, 특히 코드 설명과 디버깅에서 압도적이었습니다. 팀 규모와 작업 유형에 따라 최적 도구가 다르다는 게 결론입니다.
TypeScript 5.x에서 추가된 satisfies 연산자를 실무에서 어떻게 활용하는지 정리해봤습니다. 기존에 as const로 처리하던 패턴을 satisfies로 대체하면 타입 안전성을 유지하면서도 추론 타입을 그대로 사용할 수 있어서 코드가 훨씬 깔끔해집니다. 특히 config 객체나 라우트 맵핑 같은 곳에서 효과가 큽니다.
팀 CI/CD 파이프라인에서 Docker 빌드가 매번 15분씩 걸려서 병목이었는데, 멀티스테이지 빌드와 레이어 캐싱 전략을 적용해서 4분대로 줄였습니다. 핵심은 자주 변경되는 레이어를 최하단에 배치하고, .dockerignore를 철저히 관리하는 것입니다. node_modules를 COPY하지 않고 별도 스테이지에서 설치하는 것만으로도 빌드 시간이 절반으로 줄었습니다.
사이드 프로젝트 3개를 각각 Supabase와 Firebase로 만들어본 경험을 비교합니다. Supabase는 PostgreSQL 기반이라 복잡한 쿼리와 관계형 데이터에 강하고, Firebase는 실시간 동기화와 모바일 SDK가 압도적입니다. 결론적으로 웹 앱은 Supabase, 모바일 앱은 Firebase가 개발 속도 면에서 유리했습니다. RLS 설정이 처음엔 어렵지만 익숙해지면 보안 측면에서 큰 장점입니다.
입사 1년차 때 코드 리뷰가 정말 무서웠는데, 지금은 오히려 가장 빠르게 성장하는 시간이라고 느낍니다. 제가 터득한 팁은: 1) PR을 작게 나누기 (200줄 이하), 2) 왜 이렇게 구현했는지 PR 설명에 미리 적기, 3) 리뷰 코멘트에 방어적으로 반응하지 않기, 4) 모르는 건 바로 질문하기입니다. 특히 시니어분들의 코드를 리뷰할 때 질문하는 습관을 들이면 학습 속도가 배로 빨라집니다.