2023.Nov.27
블로그를 새단장하고 느낀 것들
블로그를 새단장했습니다! 🎺 약 290일 만입니다. 1년에 조금 모자란 시간이구요. 개인적인 이유도 있지만 이는 나중으로 미루겠습니다. 기술적으로나, 개발적으로 큰 이유를 정리해 봤습니다:
- 기존 블로그에서 욕심냈던 점들이 모두 기술부채로 그대로 돌아왔습니다.
- 디자인-기획적인 실수도 있었습니다.
기술부채
기존 블로그는 Next.js 와 TinaCMS, chakra-ui와 monorepo를 사용해 작성했습니다. 2022년 기준으로 핫한 선택이지만 2023년 말에는 별로 그렇지 않습니다.
- Next.js는 판올림 되면서 기존의 기능(pages router)을 버리고 새로운 기능(app router, server components)를 밀어주고 있습니다.
- TinaCMS는 새로운 Next.js에서 완벽하게 동작하지 않습니다. 클라우드 편집 기능이 좋아보여서 사용하기 시작했으나, 오히려 이 서비스에 묶이면서 당장 TinaCMS없이 글을 편집할 방법도 없어졌습니다.
- chakra-ui의 CSS-in-JS도 새로운 Next.js에서 동작하지 않습니다. 오히려 빌드속도가 떨어졌고, 버그가 생겼습니다.
- vercel과 turbopack, monorepo의 버전업 경험은 최악이었습니다. vercel의 배포환경도 문제인데, turbopack에서 오는 문제들, monorepo에서 오는 문제들이 각각 따로였습니다. 스택오버플로우에 문제점을 검색할 수 있냐 없냐가 중요한게 아니라, 시간자체가 중요하지 않은 문제들에 계속 소모되었습니다.
개발자라면 누구나 동의할 사실을 완전히 간과했습니다: 그야말로 기술의 복잡도가 올라갈 수록 관리 필요는 더 늘어간다는 것을요. 아예 1달 주기로 재배포가 가능한 수준이 아니라면 말입니다. 이제는 욕심을 버리고 훨씬 가벼운 길을 걸어갑니다.
- keystatic CMS를 사용합니다. TinaCMS와 똑같은 git-based지만, 훨씬 경량이고 개발자 문서가 잘 유지되고 있습니다. 또한 보일러플레이팅이 적어 여차 싶을 때에는 그냥 마크다운 렌더링만 직접 구현하면 됩니다.
- tailwindcss를 사용합니다. css기반의 스타일링이 훨씬 유지보수하기 유리합니다. 개발자 경험을 약간 포기하고, 버그 적은 개발에 집중하기로 합니다.
- Next.js는 이번까지만 그대로 유지합니다. 워낙 생태계가 잘 관리되고 있어, 당분간은 버리기 어렵습니다. 다음번에도 문제가 발생한다면 Hugo나 Gatsby도 생각 중입니다.
- 빌드 속도개선을 위한 각종 도구들(turborepo, monorepo)는 과감히 포기했습니다. 오히려 약간 느려도 간단한 것이 낫습니다. 문제가 생겨도 걱정 없습니다. 구성할 환경이 크지 않으니까요.
- 한편 markdown을 선택한 건 정말 현명한 결정이었습니다. 지금도 언제든 사이트를 버리고 다른 markdown기반의 CMS로 갈아탈 수 있습니다.
- 직접 운영할 서비스라면 재배포는 자주할수록 좋습니다. 정말 없는 이유를 만들어서라도 재배포를 계속 하며 프로젝트의 건강을 체크해야합니다.
디자인-기획 실수
- '지식공단'이라는 사이트 이름은 개인 브랜딩에 적합하지 않았습니다. 사이트의 성격보다, 개인 이름을 조금 더 전면적으로 내세우는 방식으로 변경했습니다. 이제는 제 본명인 '성렬'을 사이트 이름으로 사용합니다.
- 디자인이 중요한게 아니라, 컨텐츠 부족이 더 큰 문제입니다. 앞으로 컨텐츠를 최대한 자주 올려볼 계획입니다.
- 생각보다 블로깅을 다른 컴퓨터로 할 일이 많지 않았습니다. 조금은 독특한 CMS를 사용하며 여러가지 도구들을 집어넣은 것은 외부에서 수정을 용이하게 하려는 목적이었습니다. 실제로는 글 작성 환경이 그렇게 자주 바뀌지 않았습니다. 개발자가 직접 글을 수정하며, 굳이 다른 사람이 운영하는 블로그 서비스를 만들게 아니라면, 어떻게 만들어도 상관 없는 것 같습니다.
2023년 11월 기준으로, 이제 막 새로운 블로그가 올라간 상황입니다. 블로그는 여전히 완벽하지 않습니다. 그래도 뛸 준비는 다시 마쳤습니다.
I've given my blog a fresh look! 🎺 It's been around 290 days since the last revamp, a bit short of a full year. There are some personal reasons behind this, but I'll delve into those later. For now, I've compiled the major technical and developmental reasons:
Everything I had envisioned for my previous blog has resurfaced as technical debt. There were also some design and planning mistakes.
Technical Debt
My old blog was built using Next.js, TinaCMS, chakra-ui, and monorepo. They were hot choices in 2022, but by the end of 2023, their appeal had waned:
- Next.js evolved, shedding old functionalities (like pages router) and introducing new ones (like app router, server components). This affected TinaCMS' compatibility with the updated Next.js. Although I was drawn to its cloud editing feature, it inadvertently tied me down, making it impossible to edit content without TinaCMS.
- chakra-ui's CSS-in-JS also didn't align with the new Next.js. Instead of enhancing, it slowed down builds and introduced bugs.
- Updating Vercel, turbopack, and monorepo was a nightmare. It wasn't just about searching for solutions on Stack Overflow; it was the time sink on seemingly inconsequential issues.
I completely overlooked a universal truth any developer would agree with: as technology grows complex, so does the need for management. If a system can't redeploy at least monthly, it's not worth it. Now, I'm shedding my desires and opting for a much lighter path:
- I've switched to keystatic CMS, similar to TinaCMS but lighter with well-maintained developer docs. Additionally, its boilerplating is minimal, making it easier to implement direct markdown rendering.
- I'm using tailwindcss for styling, favoring CSS-based styling for easier maintenance. I'm sacrificing a bit of developer experience to focus on bug-resistant development.
- I'm sticking with Next.js for now due to its well-maintained ecosystem. If issues persist, I might consider alternatives like Hugo or Gatsby.
- I boldly let go of various tools aimed at speeding up build processes. Sometimes, simplicity outweighs speed. I'm not fretting over issues anymore; the setup isn't overly complex.
- Choosing markdown was a brilliant decision. Even now, I can switch to another markdown-based CMS without hassle. For self-operated services, frequent redeployment is crucial to check project health, even if I have to create reasons to redeploy.
Design & Planning Mistakes
- The site name "Knowledge Commons" didn't align with personal branding. Now, I'm embracing my real name, 'Seong Ryeol,' as the site's name.
- Content scarcity is a bigger issue than design. I plan to publish content more frequently.
- Surprisingly, I didn't use other computers much for blogging. Integrating various tools aimed to facilitate external edits, but the writing environment didn't change much. If a developer edits directly and isn't running a blog service for others, any approach seems suitable.
As of November 2023, my brand-new blog has just gone live. It's not flawless, but I'm all set to take that leap forward once again.