Friday, December 15, 2017

GraphQL


Graphql adalah query language yang dibangun oleh facebook dan digunakan pada sisi server. Guna dari graphql sesuai dengan namannya “query language” adalah untuk melakukan query. Graphql tidak berhubungan secara langsung dengan database tetapi berada di sisi client dan server. Pada sisi client yang secara langsung nantinnya mengakses API(graphql di sisi server).


Dengan kata lain graphql tidak terbatas untuk database tertentu baik sql atu nosql. Graphql akan mengspesifikasikan data yang dibutuhkan oleh client. Graphql akan melakukan query terhadap api yang kita sediakan di server.

Beberapa fitur yang ditawarkan oleh graphql
  1. Standarisasi API yang didukung oleh facebok which is salah satu perusahaan teknologi besar didunia sehingga sangat membantu kita untuk membuat teknologi yang sesuai dengan standar.
  2. declarative data fetching
  3. graphql menggunakan single endpoint sesuai dengan kaidah rest
Aplikasi saat ini umumnya menggunakan API(Application programming interface) untuk mendapatkan data. API ini dihost oleh suatu server dan juga bertugas untuk berhubungan dengan database.  Arsitektur seperti ini kita kenal dengan tier-3 application yakni memisahkan antara presentation layer(frontend), application layer(backend) dan database layer.




Client tidak hanya berhubungan dengan satu api namun terkadang akan berhubungan juga dengan api lainnya misalkan menggunakan api google maps, api graph facebook , dan lain sebagainnya. Lalu dimanakah graphql berada? jawabannya adalah pada sisi “client” dan “server” yang berhubungan/mengkases suatu API. dengan graphql kita(client mendefinisikan data yang ingin kita dapatkan dari suatu API) . Sehingga diagram disamping jika ditambahkan teknologi graphql akan menjadi seperit berikut ini.





Mengapa graphql dibuat ?
Terdapat tiga alasan mengapa facebook membuat graphql
  1. bertambahnya mobile usage sehingga diharapkan dengan adannya graphql mobile devices akan semakin sedikit dalam mengkonsumsi data. Graphql akan mengurangi konsumsi data yang dilakukan oleh mobile devices
  2. Meningkatkan performa. Dengan semakin sedikitnya data yang dikonsumsi mobile devices maka performa secara otomatis akan meningkat.
  3. Banyaknya framework frontend yang ada saat ini(react,vue,angular,dsb) maka graphql hadir untuk menstandarkan proses konsumsi API (meningkatn efisiensi konsumsi api).


Mengkonsumsi API
Tanpa graphql client akan memanggil endpoint tertentu. Misalkan kita ingin mengambil data terkait dan daftar post user tersebut dengan melalui mekanisme REST  seseorang maka endpoint yang harus diakses dengan http method GET adalah

mendapatkan data profile

/api/user/1


mendapatkan data mengenai post dari suatu user

/api/user/1/posting


dengan mekanisme seperti ini maka yang mendefinisikan data adalah SERVER. Sedangkan jika kita menggunakan graphql maka yang akan mendefinsikan data yang dibutuhkan adalah di sisi client.

{
  user(id: 1) {
    nama
    umur
    post {
     title
    }
  }
}


Sangat jelas sekali perbedaanya antara mekanisme mengkonsumsi API dengan graphql dan non-graphql. Dengan mekanisme seperti ini(graphql) perubahan pada client(perubahan design pada ui terkait dengan data yang ditampilkan) akan dapat ditangani lebih mudah jika dibandingkan dengan mekanisme seperti REST karena yang mendefinisikan data adalah client.
Cara implementasi konsumsi REST api dan graphql sesuai dengan dua query diatas adalah seperti ini.


Kesimpulan
Itulah penjelasan singkat mengenai graphql dan mekanisme akses api jika dibandingkan dengan REST.Sebagus-bagus teknologi jika solusi yang ditawarkan tidak tepat (tidak digunakan/tidak ada user/salah design) juga percuma. Sehingga, graphql ini hanyalah alternatif untuk mendesign arsitektur dari sistem yang kita buat. 




No comments:

Post a Comment