Perbedaan Firebase Admin dan Firebase Client
Tags: firebase, database, programming, googlecloud
Published: 2022-09-29 04:47:33

Artikel ini akan memabahas secara ringan tentang firebase admin, dan kenapa harus menggunakan firebase_admin. Untuk menggunakan FIrebase, sebenarnya kita bisa saja hanya menggunakan firebase client pada umumnya untuk segala kebutuhan. Mungkin akan muncul pertanyaan, kalau semua bisa menggunakan firebase client, lalu kenapa harus menggunakan firebase_admin? mungkin ini akan menjadi pertanyaan yang memakan waktu untuk memikirkanya.

## Fungsi dan Kegunaan
Alasan paling dasar kenapa harus menggunakan firebase_admin untuk kebutuhan di server, adalah perbedaan fungsi antara firebase client dan firebase admin itu sendiri. Firebase admin hanya digunakan untuk memanipulasi data Firebase pada sisi server side, sehingga firebase admin tidak ada ketergantungan dengan client sama sekali.

Salah satu contohnya adalah user authentication pada firebase. Pada saat kita melakukan login user pada firebase, maka firebase akan menyimpan session user pada server firebase, dengan ini kita dapat mengambil data user sewaktu-waktu kita membutuhkanya dari session yang telah dibuat oleh firebase dari proses login sebelumnya. Untuk melakukan pengambilan data session client pada perangkat website, menggunakan fungsi di bawah ini.

``` javascript
import { getAuth } from "firebase/auth";

const auth = getAuth(config);
const user = auth.currentUser;
```
Informasi lebih lanjut, dapat klik tautan [di sini](https://firebase.google.com/docs/auth/web/manage-users?hl=id#get_a_users_profile).

Pada potongan kode di atas, user akan mengambalikan detail data user, apabila user sudah melakukan login, dan akan mengembalikan null apabila user belum melakukan login, karena firebase belum memiliki session dari user tersebut.

Dengan menggunakan firebase client seperti pada contoh di atas, firebase akan mengidentifikasi client sebagai client yang berbeda di masing-masing perangkat pada saat user mengakses. Misal, apabila terdapat user A mengakses dengan menggunakan perangkat A dan user B mengakses dengan menggunakan perangkat B, maka firebase akan mengidentifikasi user A dan user B sebagai user yang berbeda, dan masing-masing perangkat memiliki user session mereka sendiri sendiri.

Server side tidak sesuai apabila menerapkan metode seperti pada penjelasan di atas. Salah satu alasan yang dapat menjelaskan adalah, bahwa server hanya memiliki satu perangkat saja, dan di akses oleh banyak perangkat. Perhatikan gambar di bawah ini!

![Figure server dan client](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l768nybahz2ug2r5e688.png)

Pada fambar di atas terlihat bahwa sebenarnya hanya ada satu perangkat server yang di akses oleh banyak perangkat client. Apabila kita menggunakan firebase client di perangkat server, maka akan terjadi konflik data. Saya berikan contoh di sini, kita misalkan kita menggunakan sistem authentication user atau login di perangkat server. Denga melakukan hal ini, maka firebase akan menyimpan sesseon user A berdasarkan merangkat server, bukan perangkat client. Kemudian user B juga melakukan authentication user atau login di perangkat server. Maka maka firebase juga akan menyimpan sesseion user B berdasarkan merangkat server. Dengan demikian dapat dikatakan data user A pada session firebase sudah terganti dengan user B. Apabila kita mengambil detal data user, maka data yang terambil adalah data user B dan bukan user A, padalah user A tidak melakukan logout sama sekali.

Hal ini akan sangat tidak menyenangkan apabila design aplikasi kita untuk multi user, karena akan terjadi banyak konfik nantinya. Maka untuk keperluan server side akan lebih baik apabila menggunakan firebase-admin. Sehingga server tidak terikat pada user manapun, dan fokus pada pengolahan data pada Firebase database.