Sau 4 tháng trời ngồi mò mẫm làm việc với firebase mình muốn viết ra bài này để chia sẻ một chút kinh nghiệm của mình. Với mong muốn giúp người đi sau có thể tránh được những sai lầm mà mình mắc phải và rút ngắn được thời gian làm việc.
Firebase là gì
Firebase là một nền tảng gồm nhiều công cụ giúp bạn xây dựng một app web, hoặc app mobile. Nói đến firebase người ta thường nghĩ tới realtime database. realtime database là một phần của firebase nó là một cơ sở dữ liệu cho phép realtime và là phần quan trọng nhất của firebase giúp bạn xây dựng nên một app. Trong phạm vi bài viết này mình chỉ nói về xây dựng app web
App web là gì ?
Trong giới hạn hiểu biết của mình mình định nghĩa đơn giản app web là 1 trang web mà chúng ta có thể sử dụng nó mà ko cần reload lại trang. Ví dụ khi vào facebook bạn click vào 1 cái link gì đó bạn có thể thấy facebook ko hề reload lại trang. Để làm được điều đó tất cả dữ liệu mới đề được load bằng javascript thông qua API.Client tự load dữ liệu và render kết quả thay vì phải gọi tới server để làm việc đó. Bạn có thể tìm hiểu thêm về SPA web.
Hãy nghĩ xem để xây dựng 1 app web bạn cần gì ?
Đầu tiên cái một người đều nghĩ đến là cần 1 server chọn 1 ngôn ngữ lập trình và bắt đầu code. Cái mà mình muốn nhấn mạnh đó chính là server. Server sẽ trực tiếp truy xuất vào csdl và trả lại kết quả cho người dùng.
Nếu client có thể truy cập trực tiếp vào database thì chúng ta cần server để làm gì ? Đúng vậy với firebase client sẽ trực tiếp truy cập vào database để truy xuất dữ liệu. Việc cần làm của bạn là viết ra các rule để giới hạn quyền truy cập của người dùng mà thôi.
Có thể chúng ta vẫn cần server cho những tác vụ validate dữ liệu phức tạp. Ví dụ khi user input data thì server phải convert trước khi update vào database. Với trường hợp đó thì firebase cung cấp cho chúng ta cloud function được gọi từ client để thực hiện điều đó.
Các khái niệm cơ bản trong firebase
firebase authenticate: Như đã nói client sẽ trực tiếp truy cập vào database. Trước khi truy cập bạn phải cấp cho user tài khoản. firebase cung cấp nhiều loại xác thực giúp bạn tạo tài khoản cho người dùng và xác thực người dùng.
firebase hosting: như đã nói app web load dữ liệu mới bằng javascript qua api. Khi người dùng lần đầu truy cập các đoạn mã javascript cần được tải xuống, và trang index. hosting giúp lưu các static file để khởi động app web. firebase admin: client có thể truy cập database và bị giới hạn bởi rule. cò admin thì có toàn quyền. admin còn được cung cập các cung cụ để quản lý user và nhiều cái khác.
Cái mà firebase đang cố định hướng deverloper tới
Như các bạn thấy với các cung cụ của firebase bạn hoàn toàn tạo được ra 1 app mà không cần server. Điều đó có nghĩa là bạn chỉ cần tập trung build app ở phía client để tăng trải nghiệm của người dùng thôi còn phần server để firebase nó lo. Đó gọi là kiến trúc serverless ( không server )