Manifest, một giải pháp micro-backend chỉ gồm 1 file, đã làm dấy lên nhiều cuộc thảo luận trong cộng đồng phát triển về cách tiếp cận đơn giản hóa việc phát triển backend. Được thiết kế cho việc tạo nguyên mẫu nhanh, microservices, và các ứng dụng tập trung vào CRUD, Manifest hướng đến việc cung cấp các tính năng backend thiết yếu trong một file duy nhất có thể tích hợp trực tiếp vào codebase hiện có. Tuy nhiên, cộng đồng đã đặt ra nhiều câu hỏi quan trọng về mô hình bảo mật, cách triển khai cơ sở dữ liệu, và những hạn chế về tính năng của nó.
Lo ngại về bảo mật làm nổi bật các thách thức trong triển khai
Các nhà phát triển khi xem xét Manifest đã xác định một số vấn đề bảo mật có thể gây ra rủi ro đáng kể cho người dùng. Một trong những khía cạnh đáng lo ngại nhất được đề cập nhiều lần là hệ thống phân quyền mặc định, tự động cấp quyền truy cập công khai cho bất kỳ hành động nào không có chính sách được chỉ định. Điểm yếu nghiêm trọng này, như một người bình luận đã mô tả, có nghĩa là các nhà phát triển phải cực kỳ cẩn thận để định nghĩa rõ ràng quyền hạn cho mọi thực thể và hành động, nếu không sẽ có nguy cơ để lộ dữ liệu nhạy cảm và các hoạt động cho người dùng chưa được xác thực.
Một vấn đề bảo mật khác được xác định ban đầu là việc sử dụng SHA-3 để mã hóa mật khẩu thay vì các thuật toán phù hợp hơn được thiết kế đặc biệt cho việc lưu trữ mật khẩu. Mặc dù nhóm phát triển Manifest đã cập nhật sang bcrypt, sự thiếu sót này không được phản ánh trong tài liệu của họ cho đến khi các thành viên cộng đồng chỉ ra, làm dấy lên câu hỏi về cách tiếp cận bảo mật là trên hết của dự án.
Các tính năng chính của Manifest:
- Hệ thống xác thực
- Xác thực dữ liệu
- Khả năng lưu trữ
- Thay đổi kích thước hình ảnh
- Bảng điều khiển quản trị
- Điểm cuối động
- REST API
- JavaScript SDK
- Webhooks
Hạn chế được cộng đồng xác định:
- Mô hình quyền mặc định (truy cập công khai trừ khi được chỉ định)
- Thiếu khóa cơ sở dữ liệu thích hợp
- Không có công cụ di chuyển dữ liệu (hiện đang được phát triển)
- Trước đây sử dụng SHA-3 để băm mật khẩu (hiện đã cập nhật lên bcrypt)
- Cấu trúc thư mục phức tạp mặc dù quảng cáo là "1 tệp"
Các giải pháp tương tự được đề cập:
- PocketBase
- PostgREST
- Prisma + PostgREST
Triển khai cơ sở dữ liệu làm dấy lên câu hỏi về độ tin cậy
Phân tích kỹ thuật về codebase của Manifest đã làm nổi bật những lo ngại về cách triển khai cơ sở dữ liệu. Một nhà phát triển đã lưu ý về sự thiếu vắng của cơ chế khóa thích hợp, cảnh báo rằng việc chạy nhiều phiên bản đồng thời có thể làm hỏng dữ liệu. Vấn đề kiến trúc cơ bản này cho thấy những vấn đề tiềm ẩn về độ tin cậy cho các ứng dụng có nhiều người dùng hoặc quy trình đồng thời.
Có vẻ như nó không sử dụng khóa, vì vậy việc chạy hai phiên bản sẽ làm hỏng 'cơ sở dữ liệu' của bạn... Có lẽ tốt nhất là nên sử dụng sqlite thay thế!
Sự thiếu vắng của công cụ migration cũng được nhấn mạnh là một hạn chế đáng kể, mặc dù một nhà phát triển Manifest đã phản hồi rằng việc đồng bộ hóa cơ sở dữ liệu hiện đang xử lý các thay đổi lược đồ với kế hoạch triển khai migrations đầy đủ trong các phiên bản tương lai.
So sánh với các giải pháp hiện có
Nhiều người bình luận đã so sánh giữa Manifest và các công cụ tương tự như PocketBase, PostgREST, và các framework truyền thống. PocketBase nổi lên như một giải pháp thay thế được đề cập thường xuyên, theo đuổi cách tiếp cận backend đơn giản hóa tương tự nhưng với cách triển khai trưởng thành hơn. Một số nhà phát triển đã chia sẻ những trải nghiệm tích cực khi sử dụng PocketBase cho các dự án nhỏ, cho thấy đây có thể là một lựa chọn đáng tin cậy hơn cho việc sử dụng trong môi trường sản xuất hiện tại.
Nhóm phát triển Manifest nhấn mạnh điểm khác biệt của sản phẩm là hoàn toàn dựa trên mã, cho phép các nhà phát triển làm việc trong IDE của họ và tận dụng các công cụ AI như GitHub Copilot hoặc Cursor để xây dựng backend. Cách tiếp cận lấy mã làm trung tâm này, sử dụng DSL dựa trên YAML, được nhấn mạnh là đặc biệt thân thiện với AI so với các dịch vụ backend dựa trên giao diện người dùng, mặc dù một số người đặt câu hỏi về sự cần thiết của việc sử dụng emoji trong khai báo thực thể.
Cấu trúc dự án và trải nghiệm nhà phát triển
Một số nhà phát triển bày tỏ lo ngại về tổ chức của dự án, lưu ý rằng mặc dù được quảng cáo là một micro-backend 1 file, kho lưu trữ GitHub của Manifest lại chứa nhiều file và dependencies. Một người bình luận đã chia sẻ phương pháp đánh giá chất lượng dự án của họ bằng cách đo lường mức độ sâu vào hệ thống thư mục họ cần đi trước khi tìm thấy mã triển khai thực tế, cho thấy Manifest không đạt kết quả tốt theo tiêu chí này.
Cách tiếp cận cấu hình dựa trên YAML nhận được phản hồi trái chiều. Trong khi một số người đánh giá cao sự đơn giản của nó, những người khác đặt câu hỏi về các lựa chọn thiết kế như việc dường như bắt buộc sử dụng emoji trong khai báo thực thể, điều này không được giải thích trong tài liệu. Nhóm Manifest đã thừa nhận rằng họ có thể cải thiện tài liệu của mình về những quyết định thiết kế này.
Mặc dù có những lo ngại này, nhiều nhà phát triển bày tỏ sự quan tâm đến khái niệm và tiềm năng hữu ích của nó cho các dự án quy mô nhỏ, nguyên mẫu và MVP. Nhóm Manifest đã tích cực tương tác với phản hồi, thừa nhận các vấn đề và chỉ ra kế hoạch cải tiến.
Như với nhiều dự án ở giai đoạn beta, Manifest trình bày một cách tiếp cận thú vị để đơn giản hóa việc phát triển backend nhưng đòi hỏi xem xét cẩn thận về những hạn chế hiện tại của nó trước khi áp dụng vào bất kỳ dự án nào ngoài các dự án thử nghiệm. Sự phản hồi tích cực của nhóm đối với phản hồi từ cộng đồng cho thấy tiềm năng phát triển và cải thiện khi dự án trưởng thành.
Tham khảo: manifest