Gần đây mình quyết định bắt đầu một blog cá nhân nhỏ.
Mục tiêu rất đơn giản: tạo một nơi để ghi lại những gì mình học được về software engineering, cloud architecture và system design.
Trong bài viết này mình sẽ chia sẻ ngắn gọn cách mình build blog này.
Yêu cầu ban đầu
Trước khi chọn stack, mình đặt ra một vài tiêu chí:
- nhanh và nhẹ
- viết bài dễ dàng
- ít phải bảo trì
- workflow dựa trên Git
- chi phí gần như bằng 0
Vì nội dung blog chủ yếu là text nên static site generator là lựa chọn hợp lý nhất.
Tech Stack
Stack của blog khá đơn giản:
- Hugo — static site generator
- Markdown — viết bài
- GitHub — quản lý source
- Static hosting — deploy
Toàn bộ website được generate thành static HTML.
Không có:
- backend
- database
- server logic
Điều này giúp hệ thống đơn giản và ổn định.
Vì sao chọn Hugo?
Có khá nhiều cách để build blog. Mình đã cân nhắc một vài lựa chọn phổ biến.
| Option | Ưu điểm | Nhược điểm |
|---|---|---|
| Hugo | Rất nhanh, markdown-based | Cần setup ban đầu |
| WordPress | Dễ dùng | Nặng và cần bảo trì |
| Ghost | Trải nghiệm viết tốt | Có chi phí |
| Next.js Blog | Linh hoạt | Phức tạp hơn mức cần |
Cuối cùng mình chọn Hugo vì:
- tốc độ build cực nhanh
- workflow Markdown đơn giản
- ít phải bảo trì
Đối với một tech blog cá nhân, đây là lựa chọn rất phù hợp.
Kiến trúc blog
Kiến trúc của blog khá đơn giản:
Markdown
↓
Git Commit
↓
Hugo Build
↓
Static HTML
↓
Hosting
Hoặc đơn giản hơn:
Writer → Markdown → Hugo → Website
Nhờ việc sử dụng static files, việc deploy rất rẻ và website hoạt động rất ổn định.
Workflow viết bài
Toàn bộ bài viết là các file Markdown trong repository.
Ví dụ:
content/posts/how-i-built-this-blog.md
Quy trình viết bài:
Viết → Commit → Push → Deploy
Workflow này rất quen thuộc với developer.
Một số khó khăn
Custom theme
Nhiều theme Hugo có khá nhiều tính năng không cần thiết.
Trong khi mình muốn:
- layout tối giản
- load nhanh
- typography sạch
Cách giải quyết:
Bắt đầu với theme đơn giản rồi chỉnh sửa dần.
Tổ chức nội dung
Ban đầu mình khá phân vân nên viết blog theo kiểu:
- tutorial
- bài dài
- learning log
- ghi chú ngắn
Cuối cùng mình quyết định blog này sẽ thiên về engineering notes.
Format này giúp việc viết bài dễ hơn và blog được cập nhật thường xuyên hơn.
Hỗ trợ hai ngôn ngữ
Blog hỗ trợ English và Vietnamese, nên mỗi bài cần hai phiên bản.
Một workflow có thể là:
Idea
↓
Outline
↓
Generate EN draft
↓
Translate to VI
↓
Review → Publish
AI có thể hỗ trợ phần generate bản nháp ban đầu.
Bài học rút ra
Việc build blog hiện nay thực ra khá đơn giản.
Bạn chỉ cần:
- Markdown
- static site generator
- static hosting
Phần khó nhất không phải là công nghệ.
Phần khó nhất là viết bài đều đặn.
Bước tiếp theo
Giờ khi blog đã chạy, việc quan trọng nhất là tiếp tục viết.
Một số chủ đề mình dự định viết trong thời gian tới:
- AWS architecture
- system design
- distributed systems
- engineering lessons
- study notes
Mình cũng dự định cải thiện blog dần theo thời gian, ví dụ:
- navigation tốt hơn cho nhiều ngôn ngữ
- RSS feed
- một vài automation cho việc viết bài
Kết
Blog này hiện vẫn còn rất đơn giản.
Giống như nhiều side project khác, nó sẽ phát triển dần theo thời gian khi mình tiếp tục viết và cải thiện nó từng chút một. Hi vọng sẽ chia sẻ được cho các bạn nhiều kiến thức hữu ích.
