이번 과제는 Next.js의 기초를 활용한 프로젝트였어요. Next.js 자체가 처음이었던 만큼 모르는 게 많아서 시행착오도 많았고, “아, 처음부터 이렇게 할 걸…” 하는 생각이 정말 많이 들었습니다. 이번 글에서는 그 아쉬운 점들과 배운 점들을 정리해 보려고 합니다.
아쉬웠던 점을 하나씩 되짚어 보겠습니다.
상호작용이 필요한 컴포넌트는 미리 잘 나눠서 렌더링에 방해되지 않게 해야 했는데, 그런 전략이 부족했어요. 그래서 클라이언트 렌더링과 서버 렌더링이 섞이면서 불필요한 렌더링이 발생했던 것 같습니다.
서버에서 fetch를 무분별하게 호출했는데, 받아온 응답 데이터가 몇백 줄씩 되다 보니 렌더링에 부하가 심했습니다. 불필요한 데이터를 필터링하거나, 필요한 데이터만 선택적으로 가져오는 방법을 적용했어야 했습니다.
새로운 파일 구조를 도전하면서 오히려 더 헷갈렸어요. 상수나 매직 넘버를 정리해 둘 파일도 없이 작업이 끝난 뒤에야 그 필요성을 깨달았습니다. 파일 구조에 대한 경험 부족이 그대로 드러난 부분입니다.
프로젝트 중반부에 Route Handler의 효율적인 사용법을 깨달았는데, 이미 코드 구조가 잡힌 상태라 수정하기 어려운 상황이었습니다. 처음부터 Route Handler를 잘 활용했더라면 더 효율적인 데이터 관리가 가능했을 텐데 아쉬움이 남습니다.
아쉬운 점이 많았지만 잘한 부분도 있었습니다.
Next.js의 렌더링 기법을 잘 적용했어요.
Next.js에서 강조하는 SSR, SSG, ISR, CSR 같은 렌더링 방식의 차이와 사용처를 명확히 이해하게 되었습니다.
처음에는 use client가 정확히 어떤 역할을 하는지 몰랐지만, 이제는 서버에서 정적인 HTML을 생성한 후 동적인 UI로 전환하는 흐름을 잘 이해했습니다. 덕분에 앞으로의 프로젝트에서는 Next.js의 렌더링 최적화가 더 자연스러워질 것 같습니다.
React도 팀 프로젝트를 거치며 감이 잡히고 실력이 늘었다는 걸 체감했기 때문에, Next.js도 마찬가지로 실전 경험을 쌓으면서 더 발전시킬 계획입니다. 앞으로의 팀 프로젝트에서는 이번 시행착오를 교훈 삼아 더 완성도 높은 코드를 작성하고 싶습니다.
"자기 반성은 성장의 첫 걸음이다" - 소크라테스
이번 과제는 기대보다 반성이 많았던 과제였습니다. 하지만 피하지 않고 직시하며 반성한 만큼, 다음 프로젝트에서는 확실히 성장한 모습을 보일 수 있을 거라고 자신합니다. 💪
📌 이제 진짜 Next.js랑 친해질 시간이다! 😎🔥