+2

SSR lại “nóng” trở lại, nhưng liệu chúng ta chỉ đang tái phát minh PHP theo một cách khác?

Gần đây mình đọc được một bài viết trên Medium có tựa đề "The Return of Server-Side Rendering: Are We Just Rebuilding PHP?", tác giả Maxime đưa ra một quan điểm rất thú vị:

Là một developer đã viết PHP nhiều năm, giờ chuyển sang dùng Python + Vue + Nuxt, mình thấy ý kiến của anh ấy có phần đúng, nhưng chưa hoàn toàn chính xác. Nhân đây, mình muốn chia sẻ một chút trải nghiệm phát triển gần đây về sự hồi sinh của SSR, sự tiến hóa của toolchain, và cảm nhận thực tế khi kết hợp Python với front-end.


Từ PHP sang Python: Thói quen và công cụ phát triển của mình đang thay đổi

Mình bắt đầu với stack truyền thống LAMP (Linux + Apache + MySQL + PHP), đã viết PHP nhiều năm, trải qua từ việc viết HTML + jQuery thủ công, dùng Smarty template, đến khi Laravel lên ngôi.

Nhưng năm ngoái mình bắt đầu chuyển sang Python, kết hợp Vue + Nuxt, cùng với trợ giúp AI (chủ yếu là gợi ý code và tự động sinh tài liệu API), hiệu suất phát triển tăng lên rõ rệt.

Tại sao lại chuyển sang Python?


Mình nhận ra rằng phát triển web hiện đại không chỉ là chuyện chuyển đổi ngôn ngữ, mà là toàn bộ cách thức phát triển đang thay đổi. image.png

SSR trở lại, nhưng chỉ là “PHP phiên bản hiện đại”?

Bài viết của Maxime rất thú vị. Anh ấy nói:

Hiệu ứng con lắc này chúng ta đều trải qua:

Vấn đề là, liệu SSR hiện nay có thực sự tốt hơn?

Chúng ta có thêm bước build, hydration (bơm dữ liệu), streaming (kết xuất luồng), edge functions (tính toán biên), nghe rất hiện đại, nhưng nhiều việc vẫn tương tự như PHP 20 năm trước:

Đây cũng là điểm tương đồng tác giả chỉ ra: ngày xưa dùng PHP viết MVC cũng làm SSR y chang vậy.

Python cũng có sự tiến hóa tương tự. Ví dụ, Django + HTMX có thể làm cập nhật từng phần, trải nghiệm không reload trang, ý tưởng rất giống islands architecture. FastAPI + Jinja2 cũng có thể xuất HTML template.

Nói cách khác, nhiều “đổi mới” bây giờ thực ra chỉ là tái hiện lại những vấn đề mà thời xưa đã giải quyết rồi.


Sự phức tạp của môi trường đa ngôn ngữ và cách giải quyết

Trong các dự án web hiện đại, quy trình phát triển không còn đơn giản như “viết file .py rồi chạy” nữa. Có môi trường ảo, database, middleware, công cụ build front-end, cấu hình Node.js, file .env, reverse proxy, chứng chỉ HTTPS local,... làm phát triển khá rắc rối và mất thời gian.

Mình từng trải nghiệm sâu ở dự án FastAPI: front-end dùng Nuxt 3, back-end MongoDB, tích hợp Redis queue xử lý bất đồng bộ, chỉ cấu hình môi trường local đã tốn nhiều thời gian và debug rất mệt.

Để nâng cao hiệu suất, mình thử dùng ServBay. Nó gói gọn toolchain mình hay dùng (Python + FastAPI + MongoDB + Redis + Node.js) thành một môi trường phát triển thống nhất, gần như một click là chạy được. Hệ thống tự động cấu hình hosts và chứng chỉ, có giao diện quản lý dịch vụ trực quan; kiến trúc front-back tách biệt nên không cần cài từng phụ thuộc hay khởi động thủ công.

Với mình thường xuyên đổi vai trò front-end, back-end, ServBay giúp giảm rất nhiều thao tác lặp và tiết kiệm thời gian thiết lập môi trường.


Framework Python phối hợp với Vue/Nuxt: mẫu phát triển reactive mới

Điều làm mình tin tưởng Python có tương lai là tiềm năng phối hợp với front-end hiện đại.

Django truyền thống thiên về template rendering, nhưng giờ:

  • FastAPI + Vue/Nuxt cho phép phát triển reactive tương tự Inertia.js — không cần viết nhiều logic gọi API, trạng thái front-back đồng bộ, thực sự là “reactive + hiệu năng cao”.

  • Dùng ServBay khởi tạo stack này cũng rất nhẹ nhàng, không phải vắt óc cấu hình máy ảo, Nginx hay Docker. image.png


Kinh nghiệm thực tế: AI, toolchain và lý trí chọn lựa

Trong 2 dự án gần đây mình dùng:

  • Python (FastAPI, Django)
  • Front-end (Vue 3, Nuxt 3)
  • AI hỗ trợ code và tạo tài liệu tự động
  • Công cụ tích hợp như ServBay để quản lý môi trường

Tốc độ phát triển, hiệu quả ra sản phẩm, trải nghiệm debug khác hẳn LAMP truyền thống.

Mình nghĩ không phải công nghệ phức tạp hơn mà là chúng ta đã tìm ra cách đóng gói sự phức tạp — bằng toolchain, thiết kế framework và AI.


Kết: Đón nhận phức tạp nhưng đừng quên cốt lõi

Chúng ta hay nói “phức tạp là kẻ thù của kỹ thuật”, nhưng thực tế thì:

  • Business ngày càng phức tạp
  • Người dùng kỳ vọng ngày càng cao
  • Đội nhóm phát triển đa dạng

Không thể chỉ dùng một PHP hay một Python mà giải quyết hết.

Nhưng chúng ta có thể:

  • Lựa chọn công cụ hợp lý
  • Áp dụng kiến trúc hiện đại
  • Kết hợp AI để giảm thiểu thao tác lặp

Mình vẫn nhớ câu Maxime nói:

Dù bạn dùng PHP, Python, Go hay Java, mục tiêu cuối cùng là: Cung cấp dịch vụ nhanh hơn, ổn định hơn.

Nếu bạn đang vất vả với đa ngôn ngữ, SSR hay cấu hình môi trường, hãy thử các công cụ mới và cùng trao đổi nhé.

Công nghệ không chỉ có trắng và đen, lựa chọn tốt nhất thường nằm giữa hai thái cực.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí