Sự xuất hiện của OpenNext, một bộ chuyển đổi mã nguồn mở dùng để triển khai ứng dụng Next.js trên AWS và các nền tảng khác, đã làm dấy lên cuộc thảo luận rộng rãi về tính độc lập và khả năng tự triển khai của Next.js. Mặc dù Next.js ngày càng được nhiều lập trình viên ưa chuộng, cộng đồng vẫn lo ngại về sự phụ thuộc vào Vercel và tính linh hoạt trong triển khai.
Các tính năng chính của OpenNext:
- Hỗ trợ App & Pages Router
- Hỗ trợ các route API
- Hỗ trợ route động
- Tạo trang tĩnh (SSG)
- Render phía máy chủ (SSR)
- Tái tạo trang tĩnh theo gia đoạn (ISR)
- Hỗ trợ Middleware
- Server actions
- Tối ưu hóa hình ảnh
- Tích hợp NextAuth.js
- Hỗ trợ Edge runtime
Độ phức tạp của việc tự triển khai
Mặc dù Next.js cung cấp các tùy chọn tự triển khai sẵn có, cộng đồng cho thấy một bức tranh phức tạp về các thách thức trong quá trình triển khai. Trong khi một số lập trình viên thành công với việc đóng gói Docker đơn giản, những người khác lại gặp khó khăn đáng kể khi cố gắng triển khai các tính năng nâng cao như điện toán biên và kiến trúc serverless bên ngoài hệ sinh thái của Vercel. OpenNext nhằm thu hẹp khoảng cách này bằng cách cung cấp khả năng triển khai serverless tương tự như của Vercel.
Cân nhắc về chi phí
Tác động về chi phí của các giải pháp triển khai khác nhau đã nổi lên như một yếu tố quan trọng trong cuộc thảo luận. Một trải nghiệm từ cộng đồng cho thấy chi phí triển khai trên Vercel có thể lên đến vài trăm đô la mỗi tháng cho một ứng dụng có lưu lượng truy cập tương đối thấp, trong đó việc tối ưu hóa hình ảnh là một điểm đặc biệt gây đau đầu. Sau khi chuyển sang OpenNext với SST, chi phí tính toán và phục vụ tài nguyên của cùng một ứng dụng giảm xuống còn khoảng 15 đô la mỗi ngày, mặc dù điều này đòi hỏi nỗ lực kỹ thuật đáng kể.
Chi phí lớn nhất của chúng tôi trên Vercel (vài trăm đô la mỗi tháng) là do tối ưu hóa hình ảnh, nguyên nhân là do ứng dụng xử lý hình ảnh kém hiệu quả, một phần do hành vi mặc định của Next.js mà chúng tôi thấy không thân thiện, và một phần do sự bất cẩn.
Sự phát triển và hỗ trợ của Framework
Đội ngũ Next.js đã ghi nhận tầm quan trọng của việc cải thiện khả năng tự triển khai. Một đại diện từ Next.js xác nhận họ đang tích cực làm việc với các nhà phát triển OpenNext để giải quyết các vấn đề triển khai còn tồn đọng và nâng cao việc bảo trì các bộ chuyển đổi cộng đồng. Sự hợp tác này báo hiệu một bước tiến tích cực hướng tới khả năng di động framework tốt hơn, mặc dù một số lập trình viên bày tỏ lo ngại về khả năng của OpenNext trong việc theo kịp các cập nhật của Next.js.
Các Tổ Chức Nổi Bật Sử Dụng OpenNext:
- Gymshark UK
- Udacity
- TUDN
- NHS England
Cân nhắc về hạ tầng
Trong khi OpenNext mang lại tính linh hoạt trong triển khai, nó cũng đi kèm với những cân nhắc riêng. Dự án này dường như ưu tiên một số công cụ Infrastructure as Code (IaC) nhất định, đặc biệt là SST, điều này khiến một số lập trình viên đặt câu hỏi về khả năng tích hợp với các công cụ hạ tầng hiện có như AWS CDK. Điều này cho thấy thách thức đang diễn ra trong việc cân bằng giữa tính linh hoạt và tiêu chuẩn hóa trong kiến trúc triển khai web hiện đại.
Cuộc thảo luận xoay quanh OpenNext phản ánh xu hướng rộng lớn hơn trong ngành về tính độc lập của framework và tính linh hoạt trong triển khai, đồng thời cũng nhấn mạnh sự phát triển liên tục của Next.js như một framework phát triển web trưởng thành. Khi các tổ chức ngày càng tìm kiếm quyền kiểm soát đối với hạ tầng triển khai của họ, các công cụ như OpenNext có thể đóng vai trò quan trọng trong việc thu hẹp khoảng cách giữa khả năng của framework và yêu cầu triển khai.
Nguồn tham khảo: OpenNext: Bộ chuyển đổi Next.js mã nguồn mở cho AWS