"블로그 한 번 손봐야겠다"
개인 블로그를 오픈한 지 벌써 3년이라는 시간이 흘렀습니다.
마지막으로 큰 수정을 했던 시점에서 시간이 꽤 흘렀고, 의존성 버전도 낮은 상태로 남아 있었습니다. 기능은 여전히 동작하지만, 코드를 수정하거나 새로운 기능을 추가하려고 하면 조금씩 망설여지는 경우가 생겼습니다.

현재 next 최신버전은 16입니다..
의존성 버전뿐만 아니라 코드도 다시 살펴볼 필요가 있었습니다. 당시에는 문제없이 동작하는 것을 목표로 작성했지만, 시간이 지난 지금 보니 같은 역할을 하는 코드가 여러 곳에 흩어져 있거나 조금 더 단순하게 작성할 수 있는 부분들이 보였습니다.
특히 새로운 기능을 추가하거나 기존 코드를 수정할 때, 어디까지 영향이 갈지 한 번 더 확인해야 하는 경우가 많았습니다. 당장은 작은 수정이라도 코드의 흐름을 파악하는 데 시간이 들다 보니, 자연스럽게 블로그를 손보는 일을 미루게 되었습니다.
그래서 이번 리팩토링에서는 단순히 버전을 올리는 것에 그치지 않고, 더 이상 필요하지 않은 코드를 정리하고 반복되거나 복잡한 구현은 조금 더 읽기 쉬운 형태로 개선해보려 합니다. 개발 환경 역시 현재의 기준에 맞춰 업데이트하며, 앞으로 기능을 추가하기 편한 블로그로 만들어보려고 합니다.
LLM과 함께 리팩토링하기
블로그 리팩토링을 마음먹었지만, 오래된 코드와 의존성 충돌을 반복적으로 살펴보는 일에 많은 피로감을 느꼈습니다. 버전 업데이트 과정에서 발생하는 오류와 기존 코드에 미치는 영향을 하나씩 확인하는 것은 너무 많은 시간을 잡아먹는다는 생각이 들었습니다.
이를 위해 LLM을 활용해보기로 했습니다. 단순히 "이 코드를 바꿔줘!"라는 요청이 아닌, "이렇게 코드를 변경해봤는데 어떻게 생각해?"라고 묻고 변경 방향이 적절한지 함께 검토하는 방식으로 활용해보려 합니다.
오류가 발생했을 때는 에러 메시지와 관련 코드를 바탕으로 가능한 원인을 정리하고, 어떤 순서로 확인하면 좋을지 도움을 받을 수 있습니다. 또한 오래된 구현을 최신 방식으로 바꾸는 과정에서도 무작정 코드를 교체하기보다 기존 동작을 유지할 수 있는 범위 안에서 대안을 비교해볼 수 있습니다.
물론 LLM의 답변이 항상 정답은 아니라고 생각합니다. 제안된 내용을 그대로 적용하기보다는 프로젝트의 구조와 기존 기능에 미칠 영향을 직접 확인해야 합니다. 다만 혼자서 코드를 탐색하고 문서를 찾아보는 과정에서 놓칠 수 있는 부분을 짚어주고, 생각을 정리할 수 있는 동료 같은 역할은 충분히 해줄 수 있다고 생각합니다.
이번 블로그 리팩토링에서는 LLM을 단순한 코드 생성 도구가 아니라, 문제를 함께 정의하고 해결 방향을 검토하는 도구로 활용해보려 합니다.
Codex
여러 LLM 도구 중 이번 리팩토링에는 Codex를 활용해보기로 했습니다. Codex는 코드 작업에 특화된 AI 에이전트로, 대화만 이어가는 방식보다 프로젝트의 실제 파일과 코드 구조를 바탕으로 작업을 진행할 수 있다는 점이 인상적이었습니다.
프로젝트를 살펴보며 관련 파일을 찾고, 변경이 필요한 범위를 확인한 뒤 필요한 경우 코드를 수정하고 검증까지 이어갈 수 있습니다. 오래된 의존성을 업데이트하거나 오류를 해결할 때처럼 여러 파일과 설정을 함께 확인해야 하는 작업에서 도움이 될 것이라 생각했습니다.
물론 Codex가 변경한 코드도 그대로 받아들이기보다 어떤 파일이 왜 바뀌었는지 확인하고, 기존 동작에 문제가 없는지 검토하는 과정이 필요합니다. 이번 리팩토링에서는 이러한 과정을 직접 기록하며, LLM을 개발 작업에 어떻게 활용할 수 있는지 함께 정리해보려 합니다.
앞으로 해볼 것들
이번 리팩토링은 한 번에 모든 것을 바꾸기보다 기존 기능을 유지하면서 작은 단위로 진행해보려 합니다.
1. 의존성 및 Next.js 버전 업데이트
먼저 오래된 의존성을 현재 프로젝트에 맞는 버전으로 업데이트할 예정입니다. 그중에서도 블로그의 기반이 되는 Next.js, React, TypeScript 버전 업데이트를 우선으로 진행하려 합니다.
버전을 올리는 과정에서 변경된 설정이나 더 이상 사용할 수 없는 API가 있을 수 있기 때문에, 공식 문서와 오류 메시지를 확인하며 호환성 문제를 하나씩 해결해보려 합니다.
2. 레거시 코드 정리
현재는 사용하지 않거나 역할이 겹치는 코드, 유지보수하기 어려운 구조를 찾아 정리해보려 합니다. 단순히 코드를 새로 작성하는 것보다 기존 코드가 어떤 역할을 하고 있는지 먼저 이해한 뒤, 필요한 범위에서만 변경하는 것을 목표로 합니다.
반복되는 코드나 복잡하게 얽힌 부분은 읽기 쉬운 형태로 개선하고, 앞으로 기능을 추가할 때 부담이 적은 구조로 만들어보고 싶습니다.
3. 오류 대응과 비효율적인 코드 개선
의존성을 업데이트하거나 코드를 정리하는 과정에서는 예상하지 못한 오류가 발생할 수 있습니다. 오류를 단순히 해결하는 데서 끝내지 않고, 왜 발생했는지와 어떤 방식으로 해결했는지도 함께 기록하려 합니다.
또한 현재 동작은 하지만 불필요하게 복잡하거나 비효율적인 부분도 살펴볼 예정입니다. LLM과 함께 개선 방향을 검토하고, 변경 전후의 동작을 확인하면서 조금 더 안정적이고 유지보수하기 편한 블로그로 만들어보겠습니다.