View a markdown version of this page

Mengapa Menggunakan GraphQL di atas REST? - AWS AppSync GraphQL

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengapa Menggunakan GraphQL di atas REST?

REST adalah salah satu gaya arsitektur landasan API web. Namun, karena dunia menjadi lebih saling berhubungan, kebutuhan untuk mengembangkan aplikasi yang kuat dan terukur akan menjadi masalah yang lebih mendesak. Sementara REST sering digunakan untuk membangun API web, ada beberapa kelemahan berulang untuk implementasi RESTful yang telah diidentifikasi:

  1. Permintaan data: Menggunakan RESTful API, Anda biasanya akan meminta data yang Anda butuhkan melalui titik akhir. Masalah muncul ketika Anda memiliki data yang mungkin tidak dikemas dengan rapi. Data yang Anda butuhkan mungkin berada di belakang beberapa lapisan abstraksi, dan satu-satunya cara untuk mengambil data adalah dengan menggunakan beberapa titik akhir, yang berarti membuat beberapa permintaan untuk mengekstrak semua data.

  2. Overfetching dan underfetching: Untuk menambah masalah beberapa permintaan, data dari setiap titik akhir didefinisikan secara ketat, yang berarti Anda akan mengembalikan data apa pun yang ditentukan untuk API itu, bahkan jika Anda secara teknis tidak menginginkannya.

    Hal ini dapat mengakibatkan pengambilan berlebihan, yang berarti permintaan kami mengembalikan data yang berlebihan. Misalnya, katakanlah Anda meminta data personel perusahaan dan ingin mengetahui nama-nama karyawan di departemen tertentu. Titik akhir yang mengembalikan data akan berisi nama, tetapi mungkin juga berisi data lain seperti jabatan atau tanggal lahir. Karena API sudah diperbaiki, Anda tidak bisa hanya meminta nama saja; sisa data menyertainya.

    Situasi sebaliknya di mana kita tidak mengembalikan data yang cukup disebut kekurangan pengam bilan. Untuk mendapatkan semua data yang diminta, Anda mungkin harus membuat beberapa permintaan ke layanan. Bergantung pada bagaimana data disusun, Anda dapat mengalami kueri yang tidak efisien yang mengakibatkan masalah seperti masalah n+1 yang ditakuti.

  3. Iterasi pengembangan lambat: Banyak pengembang menyesuaikan API RESTful mereka agar sesuai dengan alur aplikasi mereka. Namun, seiring pertumbuhan aplikasi mereka, baik front- dan backend mungkin memerlukan perubahan ekstensif. Akibatnya, API mungkin tidak lagi sesuai dengan bentuk data dengan cara yang efisien atau berdampak. Hal ini menghasilkan iterasi produk yang lebih lambat karena perlunya modifikasi API.

  4. Kinerja dalam skala besar: Karena masalah peracikan ini, ada banyak area di mana skalabilitas akan terpengaruh. Kinerja di sisi aplikasi mungkin terpengaruh karena permintaan Anda akan mengembalikan terlalu banyak data atau terlalu sedikit (menghasilkan lebih banyak permintaan). Kedua situasi menyebabkan ketegangan yang tidak perlu pada jaringan yang mengakibatkan kinerja yang buruk. Di sisi pengembang, kecepatan pengembangan mungkin berkurang karena API Anda diperbaiki dan tidak lagi sesuai dengan data yang mereka minta.

Nilai jual GraphQL adalah mengatasi kelemahan REST. Berikut adalah beberapa solusi utama yang ditawarkan GraphQL kepada pengembang:

  1. Titik akhir tunggal: GraphQL menggunakan titik akhir tunggal untuk menanyakan data. Tidak perlu membuat beberapa API agar sesuai dengan bentuk data. Ini menghasilkan lebih sedikit permintaan melalui jaringan.

  2. Mengambil: GraphQL memecahkan masalah abadi pengambilan berlebihan dan kurang dengan hanya mendefinisikan data yang Anda butuhkan. GraphQL memungkinkan Anda membentuk data agar sesuai dengan kebutuhan Anda sehingga Anda hanya menerima apa yang Anda minta.

  3. Abstraksi: GraphQL API berisi beberapa komponen dan sistem yang menggambarkan data menggunakan standar agnostik bahasa. Dengan kata lain, bentuk dan struktur data distandarisasi sehingga baik front- dan backend tahu bagaimana data akan dikirim melalui jaringan. Ini memungkinkan pengembang di kedua ujungnya untuk bekerja dengan sistem GraphQL dan bukan di sekitarnya.

  4. Iterasi cepat: Karena standardisasi data, perubahan pada satu ujung pengembangan mungkin tidak diperlukan di sisi lain. Misalnya, perubahan presentasi frontend mungkin tidak menghasilkan perubahan backend yang ekstensif karena GraphQL memungkinkan spesifikasi data untuk dimodifikasi dengan mudah. Anda cukup menentukan atau memodifikasi bentuk data agar sesuai dengan kebutuhan aplikasi saat tumbuh. Hal ini mengakibatkan pekerjaan pengembangan yang kurang potensial.

Ini hanya beberapa manfaat GraphQL. Dalam beberapa bagian berikutnya, Anda akan mempelajari bagaimana GraphQL terstruktur dan properti yang menjadikannya alternatif unik untuk REST.