Hi mấy thím, em có 1 case như thế này
Ví dụ feature đó là filter 1 list danh sách thì mình có cần filter trên endpoint rồi gửi BE hay BE gửi 1 list danh sách thô rồi mình filter ở FE cho đỡ tốn request gửi lên server nhỉ? cách nào tối ưu development experience nhất?
1/ BE xây sẵn api trả dữ liệu theo các fields trên request filter model.
2/ BE chỉ trả về dữ liệu phù hợp với filter trên.
3/ FE chỉ việc nhận dữ liệu và render. (không thao tác filter lại gì hết, việc filter lại sẽ gây thêm lỗi ở FE và tìm lỗi sẽ gây mâu thuẫn không đáng có ở BE và FE)
Không ai làm cái việc trả 1 đống data từ BE để về FE filter rồi render cả.
(Cty nào làm như trên là đang tự đẻ trứng ở hiện tại và tương lai)
Người ta ưu tiên sử lý tính toán ở BE, đưa tính toán về FE sẽ làm máy private desktop bị chậm khi sử lý dữ liệu lớn => trải nghiệm khách hàng giảm => chửi product => mất khách hàng tiềm năng, ...
Việc scale up BE với load-balancing thành nhiều instance sẽ hỗ trợ nhiều FE có thể gửi hàng triệu request 1 giây tới BE mà không bị bottle-neck API.
Có rất nhiều cách để optimize BE và FE, đừng vì sự lười biếng của bản thân mà đẻ trứng ở product, người sau người ta biết sẽ chửi fen đó.
p/s:
Việc deploy thằng FE lên production mất nhiều thời gian hơn là BE. (Khi nào bạn upload Apple store hay Google Play sẽ thấy cái cảnh cực khổ của việc duyệt ứng dụng của flagship)
Tương tự reactjs cũng vậy thôi, đó là việc phải tốn thêm thời gian để test lại hết các tính năng.