Arsitektur API Gateway
API Gateway adalah sistem pengelolaan API yang menyediakan pengelolaan, pemantauan, dan autentikasi untuk API Anda. Komponen yang membentuk API Gateway meliputi:
- API Gateway: untuk mengelola semua aspek API yang di-deploy
- Service Control: untuk menerapkan aturan pengelolaan API
- Service Management: untuk mengelola konfigurasi API
- gcloud CLI: untuk men-deploy dan mengelola API Anda
- Konsol Google Cloud: untuk logging, pemantauan, dan berbagi
Arsitektur
Berikut adalah diagram tingkat tinggi dari komponen utama yang terlibat dalam API Gateway:
Dalam diagram ini:
Penyedia API bertanggung jawab untuk membuat dan men-deploy API di API Gateway. Setiap API ditentukan oleh file yang ditulis sebagai spesifikasi OpenAPI 2.0.
Spesifikasi OpenAPI menentukan URL endpoint REST yang ditampilkan secara publik untuk API, layanan backend yang diakses oleh API, dan karakteristik API lainnya seperti autentikasi, format data, dan opsi respons.
Klien API membuat permintaan REST ke API yang dihosting di API Gateway untuk mengakses layanan backend. Klien API dapat berupa aplikasi apa pun yang dapat melakukan panggilan REST, seperti browser, aplikasi seluler, atau aplikasi web.
Klien API hanya perlu mengetahui URL API, kata kerja permintaan (seperti
GET
,PUT
,POST
,DELETE
), persyaratan autentikasi apa pun, dan format data apa pun yang dikirim ke atau diterima dari API.Klien API tidak perlu mengetahui apa pun tentang implementasi backend. Bahkan, satu API yang dihosting di API Gateway dapat dikonfigurasi untuk mengakses backend yang berbeda berdasarkan informasi yang diteruskan dalam permintaan.
Komponen API Gateway
Gateway API
API Gateway menyediakan solusi bayar per penggunaan yang terkelola sepenuhnya untuk menghosting API Anda. API Gateway memberikan akses yang aman ke layanan backend melalui REST API yang ditentukan dengan baik dan konsisten di seluruh layanan Anda, terlepas dari implementasi layanan.
API Gateway terintegrasi dengan Google Cloud sehingga Anda dapat menggunakan alat pengembangan, pemantauan, logging, dan pelacakan yang sama dengan yang Anda gunakan dengan produk Google Cloud lainnya.
Jika terhubung ke layanan backend yang dihosting di luar Google Cloud, Anda tetap dapat memanfaatkan semua layanan Google Cloud, termasuk layanan autentikasi dan otorisasi yang digunakan untuk mengontrol akses ke API Anda.
Service Control API
Service Control API menerapkan aturan pengelolaan API saat runtime, seperti autentikasi kunci API, pemantauan, dan logging. Kontrol Layanan menyediakan metode berikut:
- Periksa: memverifikasi autentikasi dan kunci API, serta menunjukkan apakah panggilan harus diizinkan
- Laporan: memberi tahu sistem pencatatan untuk logging dan pemantauan
Service Management API
Anda menggunakan spesifikasi OpenAPI untuk menentukan API. Kemudian, Anda menggunakan gcloud CLI untuk mengupload spesifikasi OpenAPI ke Service Management, yang akan membuat konfigurasi API. Tugas terkait konfigurasi lainnya juga dilakukan di sini, seperti membagikan API Anda kepada developer lain, mengaktifkan atau menonaktifkan API di project yang berbeda, dan membuat kunci API.
gcloud CLI
gcloud CLI menyediakan alat command line gcloud yang dapat Anda gunakan untuk melakukan panggilan ke berbagai layanan Google Cloud. Anda menggunakan Google Cloud CLI untuk mengupload spesifikasi OpenAPI, yang membuat konfigurasi API, lalu men-deploy konfigurasi API ke API Gateway.
Cloud Console
Konsol Google Cloud adalah antarmuka pengguna grafis untuk Google Cloud. Gunakan konsol Google Cloud untuk mengekspos data pemantauan dan logging yang dicatat oleh Service Control, mengonfigurasi autentikasi dan otorisasi, serta bagi developer untuk membuat kunci API guna memanggil API.
Menangani permintaan API
Dalam konfigurasi API, ada dua jenis endpoint:
- Endpoint API: menentukan endpoint yang tersedia secara publik yang digunakan klien untuk menggunakan API Anda.
- Endpoint backend: menentukan endpoint yang digunakan API untuk terhubung ke layanan backend Anda. Setelan keamanan, seperti akses HTTP atau HTTPS, ditentukan oleh implementasi layanan backend.
Permintaan ke endpoint API Anda diteruskan ke endpoint backend, termasuk data apa pun yang diteruskan sebagai bagian dari permintaan. Respons dari layanan backend, termasuk data apa pun yang ditampilkan oleh layanan, akan diteruskan kembali ke klien.
Pemilihan rute permintaan
Saat permintaan diterima:
API Gateway membuat token rekaman aktivitas untuk Cloud Trace.
API Gateway mencocokkan jalur permintaan masuk dengan API target. Setelah menemukan rute yang cocok, API Gateway akan melakukan langkah-langkah autentikasi untuk API yang ditentukan.
Jika validasi JWT diperlukan, API Gateway akan memvalidasi autentikasi menggunakan kunci publik yang sesuai untuk penanda tangan, dan memvalidasi kolom audiens di JWT. Jika kunci API diperlukan, API Gateway akan memanggil Service Control API untuk memvalidasi kunci tersebut.
Service Control akan mencari kunci untuk memvalidasinya, dan memastikan bahwa project yang terkait dengan kunci tersebut telah mengaktifkan API. Jika kunci tidak valid atau project belum mengaktifkan API, panggilan akan ditolak dan dicatat ke dalam log melalui Service Control API.
Jika Service Control berhasil memvalidasi kunci, permintaan beserta semua header asli, ditambah header validasi JWT, jika sesuai, akan diteruskan ke backend.
Saat respons diterima dari backend, API Gateway akan menampilkan respons kepada pemanggil dan mengirimkan informasi pengaturan waktu akhir ke Trace. Titik panggilan dicatat ke dalam log oleh Service Control API, yang kemudian menulis metrik dan log ke tujuan yang sesuai.