블로그 개발기 (feat. Minimal Viable Blog)

왜 블로그를 만들까?

다른 사람들은 어떤지 모르겠지만 나는 이전부터 꾸준히 봐왔던 블로그들이 있다.

그중 몇 가지를 뽑자면 토스 테크당근 테크 블로그와 같은 기업의 기술 블로그이다. 이러한 기업이 운영하는 블로그의 목적은 뭘까? 아마 채용이 아닐까. 내가 토스와 당근이라는 회사를 매력적이라고 느낀 이유도 흔히 네카라쿠배까당토라고 말하는 유명 IT기업 중 하나라는 사실도 없지는 않겠지만, 두 회사의 컨텐츠를 통해 배울 수 있는 것들이 많았고, 그 회사에 들어가 그런 경험들을 해보고 싶다고 느꼈기 때문이었다. 기업에서는 블로그를 통해 각 회사에서 해결할 수 있는 문제들과 경험할 수 있는 부분들에 대해서 알리고, 그에 더 적절한 인재를 채용할 수 있을 것이다.

기업의 기술 블로그뿐만 아니라 개인이 운영하는 블로그 중에서도 자주 보는 블로그들이 있다. 테오의 프론트엔드, 개발자 황준일 등이다. 이분들의 글을 읽으면서 다양한 지식에 대해서 배우기도 하고 간접적으로 다양한 경험을 느낄 수 있기도 했다. 그렇다면 개인 블로그를 운영하는 이유는 무엇일까? 지식과 경험을 공유하는 데에서 즐거움을 느낄 수도 있고, 그것을 잊지 않기 위해 기록하는 것일 수도 있다. 하지만 기업 블로그와 반대로 블로그를 통해서 자신을 표현하고 지식과 경험을 공유하는 것으로 기업 혹은 타인이 그 사람을 매력적으로 느낄 수 있을 만한 요소가 되지 않을까 생각이 들었다.

그렇게 생각이 이어지자, 블로그를 운영하지 않을 이유는 딱히 없었다. 원래도 학습 내용을 정리하기 위해서, 감정을 기록하기 위해서 등 다양한 목적을 가지고 글을 작성해 왔다. 단지 이를 조금 더 공개적으로 드러내는 것이었다.

하지만 지금까지 내 지식과 경험을 공개적으로 Publish하는 데에는 약간 부끄러움이 있었다. 때때로는 미완의 글도 있었고, 내 지식이 모자란다고 생각이 들었다. 하지만 공개적으로 드러내지 않은 글들을 나라고 다시 읽어보지는 않았다. 머지않아 노트북 어딘가에서 잠자고 있는 데이터 쪼가리가 되었다. 그렇게 데이터 쪼가리가 되느니 조금 더 다듬어 드러낸다면 누군가에게 도움이 될 수도 있지 않을까? 게다가 글을 작성하고 정리하고 다듬는 과정에서 조금 더 깊게 공부할 수 있을 것이다. 이것들이 차곡차곡 쌓인다면 그것들이 나를 표현하는 지식과 경험이 되어 기업과 타인에게 나를 조금 더 매력적으로 느끼게 만들 수 있지 않을까 싶어 나도 블로그를 만들게 되었다.

기존 블로그 플랫폼을 사용하지 않은 이유

블로그를 만들려고 하니 가장 쉽게 접할 수 있는 것은 velog, 티스토리와 같은 블로그 플랫폼이었다. 기존 블로그 플랫폼을 사용하지 않았던 것은 아니다. 취업 준비를 할 때에는 알고리즘 문제를 풀어 티스토리 블로그에 정리해서 올리기도 했었고, velog에도 글을 여러 번 쓰기도 했다.

하지만 기존 블로그 플랫폼들은 나의 needs를 100% 만족시킬 수 없었다. velog는 시리즈 기능과 많은 개발자들이 접근하기 쉬운 점이 마음에 들었지만, markdown을 기반의 글 포맷으로 다양한 컨텐츠를 글의 소재로 사용하기에는 아쉬운 부분들도 분명 존재했다. 티스토리는 조금 더 컨텐츠를 삽입하는 부분에서 자유로웠지만, 썩 마음에 드는 디자인 템플릿도 없었고 자신의 블로그 홍보를 위해 글을 읽지 않고 무지성으로 다는 댓글들도 있었다.

결정적으로 블로그 플랫폼을 사용하면 해당 플랫폼에서 제공하는 형식에 맞춰 글을 작성해야 한다는 점이 마음에 들지 않았다. 나는 말을 할 때에도 비언어적 표현이나 비유를 섞는 걸 좋아한다. 무언가를 만들었을 때 그것을 글 혹은 스크린샷으로만 확인할 수 있는 것이 아니라 직접 확인하고 실행할 수 있으면 좋겠다고 생각했고, 직접 만들어야겠다는 결론에 도달했다.

그래서 이 블로그는 어떻게 만들어졌나?

사실 블로그를 직접 만들려는 시도는 이번이 처음은 아니었다. 하지만 매번 개발하던 도중 그만두었다. 항상 걸림돌이 되었던 이유는 이 두 가지였다.

  • 불분명한 기획
    • 플랫폼을 사용했을 때 마음에 들었던 기능들과 추가로 원하는 기능들을 넣고 싶었지만, 어떤 기능을 넣고 싶은지 정확하게 생각해 보지 않았다. 그러다 보니 개발하면서 어떤 기능을 개발해야 하는지 고민하다 흥미가 떨어지곤 했다.
  • 디자인
    • 마음에 쏙 드는 디자인을 가진 나만의 블로그였으면 좋겠다고 생각했다. 하지만 그런 디자인을 만들기는 어려웠고 디자인이 마음에 들지 않으니, 개발에 흥미가 떨어졌다.

완벽함을 추구해서는 완성할 수 없었다. 처음부터 어떻게 완벽할 수 있으랴. 그래서 조금은 다르게 접근하기로 했다. 일단 빠르게 만들어 배포한 후 점점 발전시켜 나가보자.

기획 (feat. MVP)

초기 스타트업이 프로덕트를 만들 때 접근하는 것처럼 일단 본질에 집중한 최소 기능을 가진 블로그를 개발하기로 했다. 부가적인 기능은 이후에도 추가할 수 있고, 디자인도 조금씩 개선해 나가면 될 것이다.

글을 컨텐츠로 전달하는 블로그의 본질에 집중해 보았을 때, 블로그가 가져야 할 필수적인 페이지는 다음과 같다.

  • ABOUT - 글 작성자의 정보를 알 수 있는 페이지
  • POSTS - 블로그 포스트 리스트 페이지
  • POST - 블로그 글을 보는 페이지

그래서 일단 이렇게 3가지 페이지를 구현하기로 했다.

디자인 (feat. 로고)

나만의 스타일을 살리는 예쁜 블로그를 만들고 싶었지만, 디자인하다가 또 개발을 포기하고 싶지 않았다. 그래서 일단 개발 후 디자인을 개선하는 방향으로 가고자 했다.

  • 글을 읽는 데 방해되지 않게 채도가 높은 색상을 최대한 사용하지 않았다.
  • 블로그 자체를 특이한 디자인으로 만들기보다는 나만의 로고로 포인트를 더했다.

기술 스택 선정

Astro
현재 회사에서는 모든 프로젝트를 Vite 기반의 React CSR 프로젝트만 진행하고 있기 때문에, 실무에서 사용하지 못하는 Next.js를 블로그를 통해서 사용해 보고 싶었다. 하지만 블로그를 만드는 데에 Next.js를 써도 실무에서 필요한 내용에 대해서 알 수 있을까 싶었다. 그러다 김평안님의 블로그에서 처음으로 Astro에 대해서 접할 수 있었는데, 공식 문서에 들어가자 처음 눈에 들어오는 문구가 굉장히 인상적이었다.

The web framework for content-driven websites

Markdown을 기본으로 사용할 수 있고, Islands Architecture를 기반으로 다양한 프레임워크의 코드를 가져와 실제로 사용할 수 있다는 점이 굉장히 매력적으로 다가왔다. 그리고 컨텐츠 기반의 웹사이트에서 좋은 성능을 가진다는 점까지 내가 만들고자 하는 블로그에 최적화된 프레임워크라고 생각하여 선택하였다.

TailwindCSS & shadcn/ui
Tailwind CSS는 CSS 스타일링을 쉽고 빠르고 예쁘게 할 수 있는 CSS 프레임워크라고 생각한다. 거기에 shadcn/ui를 통해서 빠르게 어느 정도 예쁘게 디자인된 컴포넌트를 가져와서 사용할 수 있다는 점에서 빠른 개발을 위해 사용하기로 결정했다. 실제로 사용해 보니 shadcn/ui는 다른 프레임워크를 사용하더라도 React 기반의 컴포넌트를 생성해 주기 때문에 약간 아쉬운 부분이 있었다.

Vercel
이후에 배포 방법을 바꾸더라도 일단은 배포에 큰 시간을 들이고 싶지 않았다. 쉽고 간단하게 배포할 수 있는 플랫폼 Vercel을 사용하기로 했다.

마치면서 (feat. Minimal Viable Blog)

생각이 많아지면 행동이 어려워진다. 좋지 않은 습관이라는 걸 알면서 매번 망설이고 있었다. 그래서 이번에는 일단은 완성하기 위해서 최소 기능만으로 블로그를 만들었다. 마음에 들지 않을 줄 알았는데 썩 마음에 들고 블로그에도 더 애정이 생기는 것 같다. 빨리 기능을 추가하고 싶다는 생각과 조금 더 좋은 글을 써서 공유하고 싶다는 생각이 든다.

개인 블로그를 만들어야겠다고 다짐만 해왔던 사람이 나뿐만은 아닐 것이라고 생각한다. 아마 대부분이 기존 블로그 플랫폼이 그들의 Needs를 충족시키지 못했을 것이다. 하지만 몇몇 주변 사람들이 말하는 것처럼 갑자기 블로그를 만들려고 하다 보면 어떻게 만들어야 할지 감을 잡기 어려울 수 있다.

그런 사람들에게 빠르게 최소한의 기능만 만들어 개발하는 방법을 추천하고 싶다. 사실 아직 부족한 부분이 많은 블로그이기에 이런 글을 쓰는 것이 부끄럽기도 하지만, 일단은 1월 내로 배포하겠다고 한 목표를 달성할 수 있어 뿌듯하기도 하다.

마지막으로 빠른 시일 내에 업데이트할 수 있도록 앞으로 추가할 기능을 간단하게 리스트업해 놓는 것으로 글을 마무리하려고 한다.

  • 이후에 추가할 기능
    • 태그, TOC(Table Of Contents), 댓글 및 공감(Giscus 기반), 다크 모드, 다양한 트랜지션과 애니메이션, PROJECT 탭(사이드 프로젝트 리스트), PLAYGROUND 탭(공부한 내용을 가지고 놀 수 있는 탭), 검색, SEO, 방문자 분석 도구 연결, sitemap 등