
Hôm nay mình sẽ giới thiệu tới các bạn một thuật ngữ trong lĩnh vực phát triển hệ thống đó là BFF (gần đây hay nghe ở dự án của khách hàng nên mới có dịp tìm hiểu thêm)
là viết tắt của Backend For Frontend
Nói nôm na nó là, Phần chức năng Backend được sinh ra dành cho Frontnend. Thường được dùng để chỉ những phần chức năng như Gen ra HTML, API được custom hoặc được thêm mới để sử dụng trong việc phát triển Frontend.
Theo quan điểm cá nhân của mình thì có thể gọi là Server For FrontEnd thì sẽ gần với công việc thực thế hơn.
BFF là giải pháp để giải quyết các bài toán liên quan tới performance của hệ thống
Chúng ta có người anh hùng đầu tiên : Monolithic
Với sự phát triển của Javascript, sử dụng Ajax để gọi và get dữ liệu thông qua HTTP, các Web System đã chuyển sang dạng interactive hơn. Client sẽ thực hiện nhiều xử lý nặng hơn, Server sẽ chỉ đề giao tiếp thông tin với Client thông qua các API
Tiếp theo đó, sự ra đời của Smartphone đã sản sinh ra thời đại mới với yêu cầu đòi hỏi Server phải được chuyên biệt hoá hơn về mặt chức năng, từ đó sinh ra khái niệm MicroService
Bài viết tham khảo
Chúng ta có 3 Design Patterns điển hình trong Microservice là
Direct Call
API Gateway
BFF → Chủ đề của bài viết
Việc Client ngày càng được đa dạng hoá, sẽ dẫn tới khó khăn trong việc tạo ra được các API đối ứng với toàn bộ các loại UI của Client. Mobile sẽ cần có các API tối ưu cho màn hình cỡ bé, Web cũng vậy.
Để giải quyết bài toán này, BFF được sinh ra, xem như là 1 tầng Server trung gian, làm nhiệm vụ custom các API có sẵn sao cho phù hợp với từng chủng loại Client.
BFF khác với API Gateway, là phía Client sẽ tự do chọn được các tập API tương thích nhất với mình, từ đó đẩy cao được tính độc lập và độ tự do, vốn là hai yếu tố quan trọng hình thành nên tư tưởng MicroService.
Trong quá trình tìm hiểu, mình có thắc mắc điểm khác nhau giữa API Gateway và BFF, thì đã tìm được câu trả lời ở link sau
Các bạn có thể tham khảo ví dụ của SoundCloud về việc áp dụng BFF trong việc phát triển hệ thống của tác giả Phil Calçado