Apa itu federasi GraphQL?

Banyak orang sedang bekerja di kantor terbuka yang sibuk

Penyusun

Chrystal R. China

Staff Writer, Automation & ITOps

IBM Think

Michael Goodwin

Staff Editor, Automation & ITOps

IBM Think

Apa itu federasi GraphQL?

Federasi GraphQL adalah pendekatan arsitektur terdistribusi yang memungkinkan para pengembang untuk menggunakan satu API di beberapa layanan GraphQL (yaitu, layanan yang ditulis dalam bahasa kueri sumber terbuka, GraphQL).

Federasi membagi skema—kontrak antara operasi back-end dan front-end—menjadi komponen dan layanan mikro yang lebih mudah dikelola, memungkinkan tim untuk membangun, menerapkan, dan mengelola bagian dari skema secara mandiri, sambil mempertahankan grafik data terpadu untuk berinteraksi dengan klien. 

Dalam lingkungan GraphQL berfederasi, gateway GraphQL mengintegrasikan beberapa skema—juga disebut subgraf atau layanan—ke dalam satu grafik (atau router). Setiap subgraf mendefinisikan bagian dari skema keseluruhan dan menangani logika bisnis dan pengambilan data untuk jenis dan bidangnya sendiri. Gateway kemudian menggabungkan subgraf yang berdiri sendiri menjadi supergraf, yang memungkinkan klien untuk melakukan kueri sumber data di seluruh layanan seolah-olah berinteraksi dengan skema GraphQL tunggal.

 

Pemandangan udara dari jalan raya

Dapatkan ketenangan saat menggunakan cloud 


Dapatkan Buletin Think mingguan untuk mendapatkan panduan pakar dalam mengoptimalkan pengaturan multicloud di era AI.

Evolusi federasi GraphQL

Sebelum federasi, salah satu metode utama untuk menggabungkan beberapa skema GraphQL adalah schema stitching, di mana skema dan resolver yang berbeda digabungkan secara manual. Ini mengharuskan pengembang untuk menentukan bagaimana skema digabungkan dan bagaimana data akan disatukan. Selain itu, meskipun memang menawarkan solusi pemersatu untuk skema GraphQL, skema stitching juga rumit dan rentan terhadap kesalahan, sehingga sulit untuk dikelola.

Untuk mengatasi masalah ini dan merampingkan proses penyatuan skema, para insinyur di balik Apollo—sebuah implementasi GraphQL untuk rekayasa produk dan aplikasi—mengembangkan federasi Apollo. Federasi Apollo memperkenalkan kata kunci "key", "external", "requires", dan "extends" untuk mendefinisikan hubungan antar-tipe dalam layanan yang berbeda. Fitur referensi silang yang baru memungkinkan pengembang untuk menggunakan gateway Apollo untuk membuat grafik data yang kohesif tanpa bergantung pada logika penyatuan yang terlalu rumit.

Namun, federasi GraphQL Apollo bukan hanya seperangkat alat dan pustaka baru. Itu juga merupakan spesifikasi sistem yang menjelaskan arsitektur dan cara layanan dapat berkomunikasi untuk membentuk grafik terdistribusi. Ini memungkinkan implementasi dan alat lain untuk mengadopsi prinsip-prinsip federasi dan membantu menetapkan standar untuk membangun API GraphQL berfederasi.

Sejak diperkenalkan, federasi GraphQL telah mengalami banyak perbaikan. Federasi terkelola, misalnya, dapat memfasilitasi pengumpulan metrik dan memungkinkan pembaruan gateway otomatis ketika subgraf berubah, semuanya tanpa intervensi manual atau waktu henti sistem.

Kemajuan juga mencakup pengembangan Federation21, sebuah inovasi yang menyederhanakan penggabungan skema lintas-layanan dan eksekusi kueri, peningkatan modularitas untuk kontrol yang lebih besar atas komposisi skema, dan visibilitas kesalahan yang lebih baik untuk pelacakan dan debugging yang lebih mudah.

WebMethods Hybrid Integration

Transformasikan integrasi untuk era AI

IBM WebMethods Hybrid Integration menampilkan bagaimana bisnis dapat menghubungkan aplikasi cloud dan aplikasi on premises dengan lancar, memungkinkan transformasi digital yang tangkas dan dapat diskalakan. 

Apollo vs federasi terbuka

Federasi Apollo merupakan kemajuan yang signifikan dalam membangun ekosistem API yang efisien, dan tetap menjadi pilihan bagi bisnis yang ingin menerapkan arsitektur TI berfederasi.

Namun, pendekatan federasi berbasis Apollo mengunci pengembang ke dalam implementasi vendor tunggal, karena lingkungan federasi Apollo hanya dapat menerima arahan dan jenis yang ditentukan Apollo dari Apollo atau teknologi backend yang sesuai dengan Apollo. Dengan kata lain, federasi Apollo sering membatasi fleksibilitas sistem, bahkan ketika teknologi baru muncul.

Pengembang yang ingin mengoptimalkan fleksibilitas sambil mempertahankan fungsionalitas lapisan terpadu dari federasi Apollo mungkin lebih memilih federasi terbuka. Pendekatan federasi terbuka memungkinkan sistem untuk menggabungkan data dari vendor atau tipe API apa pun, termasuk API non-GraphQL. Dengan menggunakan alat seperti IBM API Connect, bisnis dapat menyesuaikan dan menskalakan aset TI mereka tanpa batasan kompatibilitas dan terus mengadopsi inovasi dari berbagai komunitas teknologi.

Bagaimana cara kerja federasi GraphQL?

GraphQL membantu klien meminta dengan tepat data yang mereka butuhkan tanpa sumber daya yang kurang atau berlebihan, menjadikannya pilihan yang tepat bagi bisnis yang ingin mengoptimalkan efisiensi operasional.

Mengingat fleksibilitasnya, tidak mengherankan bahwa GraphQL menjadi bahasa kueri dan waktu proses yang makin populer untuk API.2 Namun, seiring dengan makin canggihnya aplikasi web dan seluler, penerapan satu server GraphQL monolitik (dan semua dependensinya) dapat menjadi tidak dapat dipertahankan. Federasi menyederhanakan ekosistem GraphQL dengan membantu subgraf yang berbeda bekerja bersama sebagai satu layanan GraphQL yang kohesif.

Menerapkan arsitektur GraphQL berfederasi melibatkan proses utama berikut.

Mendefinisikan skema subgraf

Mendefinisikan skema subgraf melibatkan identifikasi batas domain dan memutuskan bagaimana batas-batas tersebut harus berinteraksi. 

Dalam arsitektur berfederasi, setiap skema subgraf mewakili bagian tertentu dari keseluruhan grafik data; skema ini berisi jenis, konfigurasi, kueri, mutasi, dan langganan yang berlaku untuk layanan atau domain. Layanan produk, misalnya, mungkin memiliki skema subgraf yang mencakup jenis seperti produk dan ulasan, sementara layanan pengguna mungkin memiliki jenis pengguna dan profil.

Skema subgraf didefinisikan dengan cara yang sama seperti skema GraphQL standar, tetapi dengan tambahan arahan khusus federasi. Arahan federasi memberikan instruksi tentang bagaimana sistem memperluas entitas di seluruh skema dan bagaimana gateway harus menyelesaikan bidang tertentu di seluruh layanan. Arahan federasi juga mendefinisikan kunci untuk referensi entitas.

Sebagai salah satu contoh, arahan @key menentukan bidang yang mengidentifikasi tipe di seluruh graf federasi; ketika diterapkan, arahan ini meminta gateway untuk mengambil entitas dari layanan yang memiliki tipe yang ditentukan. Arahan @extends mengindikasikan bahwa sebuah tipe yang didefinisikan dalam satu skema subgraf memperluas sebuah tipe yang berasal dari skema lain, sehingga memudahkan perluasan tipe (dengan bidang tambahan) dalam layanan lain.

Menyiapkan layanan subgraf

Layanan subgraf adalah layanan back-end yang mengimplementasikan logika bisnis untuk API subgraf yang sesuai. Setiap layanan subgraf mendefinisikan bagiannya dari grafik data dan menangani kueri dan mutasi yang terkait dengan domainnya. Resolver masing-masing mengambil data terkait dari sumber data, basis data, atau REST API yang sesuai.

Layanan subgraf juga mengungkapkan titik akhir GraphQL mereka ke gerbang federasi, yang menggunakannya untuk menyusun skema federasi secara keseluruhan. Perlu diingat bahwa layanan ini dapat ditulis dalam bahasa pemrograman apa pun, dengan asumsi bahasa tersebut mendukung GraphQL.

Mengkonfigurasi gateway federasi

Gerbang federasi mengatur komposisi skema dan perencanaan kueri. Dengan bantuan server federasi, gateway menyamarkan layanan subgraf individual, menyajikan API terpadu kepada klien.

Untuk mengonfigurasi gateway federasi, tim biasanya menentukan lokasi setiap layanan subgraf dan menyiapkan infrastruktur yang diperlukan untuk pengambilan skema, perencanaan kueri, eksekusi, dan penanganan kesalahan. Ketika sudah disiapkan, gateway akan terus mengambil skema dari layanan subgraf untuk memastikan bahwa gateway memiliki versi terbaru dari skema federasi.

Menerapkan dan memantau arsitektur federasi

Ketika layanan subgraf dan gerbang federasi dikonfigurasi, administrator kemudian menerapkan seluruh sistem. Ini termasuk penyediaan perangkat keras dan sumber daya cloud, menyiapkan jalur penerapan, memantau kinerja sistem dan memastikan ketersediaan sumber daya yang tinggi.

Tidak mengherankan jika pemantauan real-time yang konsisten sangat penting untuk mengoptimalkan lingkungan federasi GraphQL. Pemantauan yang cermat memungkinkan tim untuk mendeteksi dan menyelesaikan hambatan kinerja, kesalahan sistem, dan waktu henti yang tidak direncanakan sebelum menimbulkan masalah yang lebih besar. Pemantauan juga memungkinkan pelacakan kesehatan untuk layanan subgraf dan gateway federasi.

Manfaat federasi GraphQL

Federasi GraphQL menunjukkan kemajuan signifikan dalam pengembangan API GraphQL untuk sistem terdistribusi berskala besar. Ini memungkinkan tim untuk bekerja pada bagian berbeda dari skema GraphQL secara independen sambil mengintegrasikan pekerjaan mereka secara mulus ke dalam API terpadu, semuanya tanpa mengganggu pengalaman pengguna akhir.

Federasi GraphQL juga memiliki berbagai contoh penggunaan—mulai dari penerapan arsitektur layanan mikro dan caching hingga pengembangan produk dan insight operasi—dan telah diadopsi oleh perusahaan seperti Netflix, Airbnb, GitHub, dan Expedia.

Federasi GraphQL juga memfasilitasi:

Skalabilitas

Dalam lingkungan terfederasi, pengembang dapat menyebarkan tanggung jawab atas domain data tertentu ke sejumlah layanan, yang memungkinkan mereka mengatur dan meningkatkan skala layanan individual (dan fungsinya) dengan lebih gesit.

Pemisahan masalah

Karena layanan federasi dapat dikelola secara independen, anggota tim dapat mengerjakan domain masing-masing tanpa mengganggu satu sama lain.

Peningkatan efisiensi

Tidak seperti lingkungan REST API, federasi GraphQL memungkinkan klien untuk mengambil semua sumber daya dan data yang mereka butuhkan dengan satu permintaan, menghilangkan redundansi dan mengoptimalkan penerapan sumber daya.

Solusi terkait
IBM webMethods Hybrid Integration

Otomatisasi yang didukung AI meningkatkan ketangkasan di seluruh API, aplikasi, acara, file, dan B2B/EDI.

Jelajahi IBM webMethods Hybrid Integration
Perangkat lunak dan solusi integrasi

Buka potensi bisnis dengan solusi integrasi IBM, yang menghubungkan aplikasi dan sistem untuk mengakses data penting dengan cepat dan aman.

Jelajahi solusi cloud integration
Layanan konsultasi cloud 

Buka kemampuan baru dan pendorong ketangkasan bisnis dengan layanan konsultasi IBM cloud. Temukan cara menciptakan solusi berkreasi bersama, mempercepat transformasi digital, dan mengoptimalkan kinerja melalui strategi hybrid cloud dan kemitraan pakar.

Jelajahi layanan cloud
Ambil langkah selanjutnya

 

IBM webMethods Hybrid Integration menawarkan antarmuka dan panel kontrol terpadu untuk pola integrasi , aplikasi, API, B2B, dan file, dan meningkatkan ketangkasan di seluruh lokasi, lingkungan, dan tim.

 

 

Jelajahi IBM webMethods Hybrid Integration Lihat penggunaannya
Catatan kaki