Di hampir semua perusahaan technology, terdapat salah satu atau dua team yang berhasil mengembangkan teknologi yang bermanfaat untuk pekerjaannya, seringnya turunan dari teknologi yang telah ada sebelumnya.
Kita ambil contoh lokal, di salah satu developer detik.com membuat framework php panada yang kemudian di rilis menjadi project open source, sebenarnya tidak hanya itu saja.
Terlebih lagi di perusahaan sekelas Facebook, yang paling terkenal adalah Jordan Walke dan team yang membuat React.js di 2012 lalu di open source kan, pada 2015, di hampir yang bersamaan GraphQL juga diluncurkan ke publik sebagai salah satu teknologi buatan Facebook, yang pada 2018 dialih license kan pada Linux Foundation.
Apa sih GraphQL ? GraphQL adalah sistem bahasa untuk query API yang didesain lebih efisien dari REST, karena secara teknis GraphQL saat querying API hanya mengambil beberapa data yang dibutuhkan saja, maka untuk aplikasi skala besar, GraphQL sangat dianjurkan.
GraphQL vs REST
Yang menjadi perbedaan utama antara GraphQL dan REST adalah cara pengambilan data, dimana GraphQL yang menggunakan http request dan mendapatkan http response, sedangkan GraphQL adalah melakukan querying, ke jalur yang ditentukan, jadi kayak querying sql tapi ini di ranahnya API, karenanya struktur yang di request obyek ditentukan di backend.
Sepemahaman penulis, GraphQL tidak dapat menggantikan REST, hanya dapat digunakan sebagai alternatif REST saja, karena keunggulannya tadi, graphql akan mengambil data dari API hanya informasi yang spesifik yang dibutuhkan.
Tentang GraphQL
Menghemat Bandwith
Karena pola request data pada API yang di desain oleh graphql adalah hanya menampilkan data yang di spesifikan saja, maka hal ini bisa menghemat bandwith yang dimiliki server, terlebih jika load dari visitor sangatlah banyak.
Menggunakan beberapa resources
GraphQL menyederhanakan tugas system dengan cara menggabungkan beberapa data dari API dan mengirimkan data yang di request client ke satu API call, berbeda dengan REST yang butuh multiple API calls untuk mengakses resourcesnya, jadi cukup 1 endpoint aja untuk graphql.
Proses development cepat
Dengan GraphQL yang memiliki karakteristik single endpoint, pastinya akan membuat developer mengakses beberapa resources, dan resources ini tidak ditampilkan sembarangan berdasar display yang kita punya dari apps tersebut, jadi kalau misal mau ada perubahan UI yang artinya akan memproses data baik itu banyak atau cuma sedikit, tidak akan ada impact dan tidak perlu ada perubahan di sisi backend, pastinya akan mempercepat proses development. Dan lagi, GraphQL punya IDE browser yaitu GraphiQL
Tentang REST
Kalau sudah terlanjur menggunakan REST, misal di backend menggunakan Django, tidak perlu dari Django Rest Framework, switch ke Graphene, meskipun transaksi data antar client sangatlah besar, karenanya JSON API memiliki banyak library untuk menyamai keunggulan GraphQL.
Adalah JSON Schemas untuk mengimplementasikan querying data secara spesifik, dengan mem bypass nama dari fields data yang kita akan fetch untuk mengambil URL nya, contoh :
GET /cctv/id-1239323/?fields=kategori, idProduct
Sedangkan operasi data untuk consume API yang efisien dan cepat, tersedia OData atau Open Data Protocol yang disediakan oleh Microsoft untuk create dan query API yang diperlukan.
Tidak default upload dan butuh addon Handling error
Untuk bikin API client yang biasanya kita bisa POST, GET, PUT, PATCH, DELETE dll, secara default, GraphQL gak support upload, jadi harus ada library graphql-upload, belum lagi kalau mengirim data base64, waduh, graphql gak support, jadi kalau ada base64 encoding, bakal bikin request yang membengkakkan server.
Kalau di REST kamu cuma perlu tau response status dari http request, server nge respon apa enggak, tapi kalau di GraphQL, kamu cuma dapat pesan error begini.
{ "data": null, "errors": [ { "message": "Validation error...", "locations": [ { "line": 11, "column": 4 } ] } ]}
Untuk yang baru pakai GraphQL, tentu bakal bikin bingung, karena jenis errornya beda tipis doang ama format error lainnya, entah error karena salah schema atau salah query itu beda tipis, nggak terlalu jelas, response API error aja ama GraphQL masih dianggep 200 Ok, jadi kalau mau lebih jelas errornya kenapa, kamu mesti pakai Apollo Client.
Masalah di Cache
Karena REST API bisa kasih banyak endpoint, jadi kita sebagai developer bisa dengan mudah konfigurasi cache web, buat mencocokan url pattern, http method atau resources tertentu
Kalau GraphQL karena cuma ada single endpoint, biasanya di endpoint HTTP POST, dimana semua queri dikirim, karena setiap query bisa aja beda-beda, disinilah letak sulitnya caching GraphQL, dari sini juga kalau mau reduce jumlah traffic berlebih harus pakai PersistGraphQL.
Singkat cerita, akan sangat direkomendasikan untuk kamu menggunakan GraphQL kalau memiliki apps skala besar, kalau apps yang transaksi datanya nggak gede-gede banget, mending jangan karena semakin besar query yang dijalankan dengan beberapa pengunjung yang berbeda dan membutuhkan waktu load yang bersamaan, semakin memperberat kinerja server.
Karena memang kan graphql ini konsepnya pakai schema, ada beberapa cara seperti type, object, scalar, mutator, resolvers dan yang pasti queries, kalau appsnya terlalu sederhana ya mubazir, kalau pakai platform sejenis cloud atau serverless atau yang konsepnya Pay as You Go, wassalam deh boncosnya, di sinilah kelebihan dan kelemahan GraphQL secara bersamaan, intinya manajemen resource dengan GraphQL ini harus bener-bener terencana.
Rencanakan pengembangan software ataupun website untuk perusahaan anda bersama Creativauz yang telah berpengalaman dalam software development dan digital marketing