Published on

Từ giờ mình không còn sử dụng WordPress nữa

Authors

Không phải là một quyết định bất ngờ gì cả. Đây là một ý tưởng mà mình đã nung nấu từ rất lâu rồi, khoảng từ giữa 2022, ngay trong lúc mình chuyển sang sử dụng AWS. Lí do duy nhất là mình đã khá mệt mỏi với việc quản lý server, ngay cả khi đang sử dụng Docker.


Tại sao không sử dụng WordPress nữa?

WordPress là một platform rất tuyệt vời. Từ nhu cầu siêu cơ bản là viết nhật ký đến một trang bán hàng thực thụ, WordPress đều có thể xử lý cho bạn, hoặc ít nhất là các developer sẽ làm vậy, nếu có đủ kinh phí và thời gian.

Kinh phí để chạy datuan.dev không quá nặng nề, đâu đó chỉ khoảng 3-5$/tháng tùy vào độ "chịu chơi" của mình, và mình quyết định đặt ở AWS cho nó thật sự ổn định. Tuy nhiên, thời gian mình dành cho quản lý là không đủ. Có quá nhiều thứ hay ở WordPress mà mình có thể dành cả ngày để tìm hiểu.

Những changelog của những phiên bản WordPress vừa ra lò, những cập nhật của WordPress Core Performance Team 🔗, những hook của các plugin cần tối ưu mà mình dự định sử dụng cũng đã tốn của mình hết tất cả thời gian rồi.

Thêm nữa, việc WordPress phụ thuộc kha khá vào các bên thứ ba, ở đây là các nhà phát triển theme, plugin làm việc nâng cấp phiên bản hay thêm thắt tính năng mới trở thành một gánh nặng. Hãy tưởng tượng việc bạn phải theo dõi khoảng 10-15 plugin trong danh sách 20 plugin đang sử dụng (thật vậy, với một blog nhỏ của mình thì số lượng 20 plugin cũng là bình thường thôi), xem plugin nào đang xử lý và tải CSS/JS nào, có cần thiết load cho end user không là quá mệt nhọc.


Serverless

Chính vì thế mình quyết định chuyển sang một nhánh (sẽ) thân thuộc với mình hơn, đó là Javascript. Tuy nhiên đã chuyển thì phải chuyển đổi một lần cho đáng, mình muốn chuyển sang sử dụng serverless, static file để loại bỏ việc quản lý server về 0, đảm bảo tập trung vào develop và content.

Serverless là một từ khóa khá phổ biến gần đây, dịch ra nghĩa đen là không máy chủ. Còn nghĩa bóng là sử dụng "ké" một máy chủ của ai đó, ở đâu đó, cấu hình ngẫu nghiên, tốc độ mạng ngẫu nhiên, ổ cứng bao nhiêu cũng được, mình không quan tâm, miễn chạy được ứng dụng mà mình muốn.

true

Có rất rất nhiều nhà cung cấp dịch vụ serverless, ví dụ như Cloudflare, AWS, Heroku, Vercel,.. cho phép chúng ta host ứng dụng trên hạ tầng của họ và chỉ chi trả chi phí cho những tài nguyên mà mình dùng tới.

Và nếu các bạn muốn triển khai WordPress serverless, cũng đã có rất nhiều ý tưởng và case study để bạn phát triển, thậm chí là đã dùng được. Tuy nhiên, mình nhận ra rằng nếu mình sử dụng những stack này, mình lại phải gánh thêm phần quản lý cái cần quản lý serverless. Tất nhiên, cuối bài viết mình sẽ để các case study cho các bạn tham khảo.

Sau thời gian tìm hiểu, mình cảm thấy chỉ có duy nhất làm mình gặp vấn đề khi chuyển sang serverless (trong trường hợp blog của mình), đó là phần bình luận. Đây là một phần đặc biệt quan trọng khi tất cả những tâm sự, câu hỏi của các bạn đọc thân thuộc của mình đều được gửi gắm vào đây. Nếu không thực hiện được, có lẽ mình sẽ quyết định tiếp tục sử dụng WordPress.

Và cuối cùng, bên dưới là "stack" mà mình quyết định sử dụng cho blog mới:

  • Blog (nội dung): Cloudflare Pages
  • Bình luận: Cloudflare Workers
  • VueJS (Frontend) & iles (Static file generator)

Stack của datuan.dev blog trong 2024

Static site và iles

Có thể hiểu đơn giản, static site là một tập hợp các tập tin HTML, CSS, JS mà có thể chạy ở mọi môi trường, mọi cấu hình mà không cần cài đặt bất kì phần mềm nào. Cài đặt PHP? Không cần, Nginx? Không cần, MySQL? Cũng hoàn toàn không. Chạy trên Windows, Linux, MacOS, Android, iOS: hoàn toàn không cần quan tâm.

Đây cũng là thứ đầu tiên đưa mình đến với thế giới lập trình. Còn nhớ khi còn nhỏ, có một tựa game trên Windows mà mình tìm được source code của trang web hướng dẫn chơi (trên local). Mày mò và nhận ra rằng mình có thể chỉnh sửa được trang web này, và thế là mình đã học HTML như vậy đó 😁

Còn generator thì chắc chắn là một công cụ hỗ trợ mình tạo static file rồi, và iles iles.pages.dev 🔗 có vừa đủ các tính năng mà mình cần để xây dựng nên trang web mà bạn đang đọc đây.

Công cụ này hỗ trợ các tính năng chính:

  • Routing: dùng để hướng trình duyệt tải đúng nội dung mà chúng ta muốn. Có thể hiểu là cùng chức năng với Rewrite của Apache (.htaccess).
  • Hỗ trợ các framework frontend: mặc dù không hỗ trợ React nhưng dùng VueJS cũng ổn vì thật sự mình không cần nhiều tính năng nào đặc biệt.
  • Hỗ trợ meta tags, sitemap và RSS feed: những tính năng cơ bản của WordPress.

Vậy là đã đủ nhu cầu của mình, chỉ thiếu mỗi tính năng bình luận (vì chắc chắn là iles không hỗ trợ rồi), mình phải tìm thêm một giải pháp.

Bình luận

Tính năng bình luận không phụ thuộc vào WordPress đã được hỗ trợ từ rất lâu bởi các plugin rồi. Chúng ta có rất nhiều dịch vụ hỗ trợ cho phần bình luận này, kể đến như Facebook, Disqus, Github. Tuy vậy thì đa số các dịch vụ này đều mang tính định danh, và không phải ai cũng có tài khoản Facebook hoặc Github, cũng như muốn bị định danh trên internet.

May mắn thay vào thời điểm mình phát triển xong các tính năng chính của iles thì Cloudflare cũng đã cho dùng Cloudflare D1 🔗, một dạng serverless SQL mà chúng ta có thể sử dụng từ các Cloudflare Workers. Điều này mang đến một cơ hội tuyệt vời khi Tuấn có thể tự phát triển tính năng bình luận cho riêng blog của mình.

May mắn hơn nữa, mình tiếp tục tìm được một công cụ có tên là Opine 🔗, đã có sẵn các tính năng như mình kể trên rồi, vậy là dùng thôi 😁.

Cloudflare Pages

Cuối cùng là gom tất cả source code và deploy lên Cloudflare Pages. Việc này không tốn nhiều thời gian lắm. Các tập tin đều được nằm sẵn trên CDN của Cloudflare nên mình cũng không cần lo lắng về tốc độ của website nữa.

Cloudflare Pages là một sự thay thế hợp lý cho AWS Cloudfront mà mình dùng trước đây.

Tổng kết

Nhờ việc dời nhà sang Cloudflare, mình tiết kiệm 100% chi phí server và chi phí quản lý server. Chi phí vận hành hiện tại chỉ còn là code (code is fun 🥳) phát triển các tính năng mới, thời gian viết blog và tiền domain mỗi năm nữa thôi.

Tất nhiên, mọi sự thay đổi đều có điểm yếu, có rất nhiều thứ mà mình vẫn chưa thể đem qua site mới, hẹn các bạn đón đọc trong phần 2 chi tiết hơn về cách mình chuyển đổi nhé.