미뤄왔던 포트폴리오 블로그를 모노레포로 옮기기
미뤄왔던 숙제를 해결하러 왔다.
이전에도 포트폴리오와 블로그를 실제로 배포 가능한 상태까지 만들어둔 적은 있었다. 포트폴리오는 따로, 블로그는 Gatsby로 만들어 Netlify에 올렸다. 당시 Gatsby는 떠오르던 정적 사이트 프레임워크였고, 블로그를 만들기 좋은 선택지로 꽤 좋은 평가를 받고 있었다. 주소도 붙였고, 글을 쓸 수 있는 구조도 있었다. 겉으로 보면 끝난 일처럼 보였다.
하지만 실제로는 중간 단계에서 멈춰 있었다. 블로그는 업데이트되지 않았고, 포트폴리오와 블로그는 서로 다른 리듬으로 흩어져 있었다. 글 하나를 고치려고 해도 별도 프로젝트를 열어야 했고, 디자인과 설정도 조금씩 어긋났다. 배포는 되어 있었지만 계속 쓰고 싶어지는 구조는 아니었다.
다시 묶기로 했다
이번에는 포트폴리오와 블로그를 하나의 모노레포 안으로 옮겼다. 목표는 대단한 기술 실험이 아니었다. 내가 계속 손댈 수 있는 구조를 만드는 것이었다.
apps/
portfolio/
blog/
packages/
ui/
eslint-config/
typescript-config/
포트폴리오와 블로그는 여전히 다른 앱이다. 포트폴리오는 나를 소개하는 정적인 화면에 가깝고, 블로그는 글이 계속 쌓이는 공간이다. 둘을 하나로 합친다는 말은 같은 앱으로 만든다는 뜻이 아니다. 같은 저장소 안에서 같은 기준으로 관리하되, 앱의 역할은 분리한다는 뜻에 가깝다.
공용 UI, TypeScript 설정, ESLint 설정은 패키지로 빼고, 각 앱은 apps 아래에서 자기 빌드 흐름을 가진다. 바꾸고 싶은 범위가 명확해지고, 중복 설정을 손보느라 시간을 쓰는 일이 줄었다.
갈아엎고 싶었던 이유
이전 블로그가 나빴던 것은 아니다. Gatsby와 Netlify 조합은 충분히 안정적이었고, 그때 기준으로는 정적 블로그를 만들기 좋은 선택이었다. 문제는 시간이 지나면서 그 구조가 지금의 나와 멀어졌다는 데 있었다.
Gatsby를 계속 가져갈 이유도 약해졌다. 한때는 정적 사이트 프레임워크로 눈에 띄었지만, 지금 돌아보면 나에게는 반짝 지나간 스택에 가까웠다. 앞으로 그 스택을 깊게 공부할 생각도 없고, 잘 모르는 상태로 블로그의 기반 기술을 계속 유지하고 싶지도 않았다. 블로그는 오래 가져갈 공간인데, 기반이 되는 도구를 내가 이해하지 못한 채 방치하는 건 마음에 걸렸다.
지금은 포트폴리오, 블로그, 실험적인 작은 프로젝트가 서로 완전히 분리되어 있으면 오히려 관리가 무거워진다. 글을 쓰다가 관련 화면을 고치고 싶고, 포트폴리오를 수정하다가 공용 컴포넌트를 정리하고 싶다. 그런 작업들이 한 저장소 안에서 이어져야 다시 손이 간다.
그래서 이번에는 "언젠가 정리해야지"에서 멈추지 않기로 했다. 어중간하게 덧붙이는 대신 현재 기준으로 다시 만들었다. 예전 구조를 보존하는 것보다, 앞으로 자주 고칠 수 있는 구조가 더 중요했다.
이 저장소가 맡을 역할
앞으로 이 모노레포에는 단순히 포트폴리오와 블로그만 들어가지 않을 것이다. 내가 어떤 개발자인지 보여주기 위해 필요한 프로젝트들이 이 안에 들어오게 될 것이다.
블로그는 생각을 정리하는 공간이고, 포트폴리오는 결과를 보여주는 공간이다. 그 사이에는 작은 도구, 실험, 데모, 디자인 시스템 같은 것들이 생길 수 있다. 각각을 별도 저장소로 흩어두면 관리 지점은 늘어나지만, 하나의 모노레포 안에서는 같은 언어와 같은 규칙으로 쌓아갈 수 있다.
물론 모든 것을 한곳에 넣는 것이 정답은 아니다. 하지만 지금 필요한 것은 완벽한 경계보다 지속 가능한 관리 방식이다. 이 저장소는 앞으로 나를 설명하는 프로젝트들의 기본 작업장이 될 것이다.
정리
이번 작업은 기술 스택을 바꾼 일이라기보다, 미뤄둔 상태를 끝낸 일에 가깝다. Gatsby와 Netlify로 멈춰 있던 블로그를 현재 포트폴리오와 같은 흐름으로 끌어왔고, 내가 이해하고 계속 다룰 수 있는 위치에 다시 놓았다.
더 이상 "배포는 되어 있는데 쓰지 않는 블로그"로 남겨두고 싶지 않았다. 이제 이 모노레포를 기준으로 포트폴리오, 블로그, 그리고 나를 표현하는 작은 프로젝트들을 계속 다듬어갈 생각이다.