Memperkenalkan Manajer API InterSystems (+ webinar)

Kami baru-baru ini merilis InterSystems API Manager (IAM), komponen baru dari Platform Data IRIS InterSystems yang memberikan visibilitas, kontrol, dan pengelolaan lalu lintas API web di seluruh infrastruktur TI.

Dalam artikel ini, saya akan menunjukkan cara menyiapkan IAM dan mendemonstrasikan beberapa dari banyak kemampuan yang tersedia untuk Anda dengan IAM. Manajer API InterSystems memungkinkan Anda untuk:

  • Pantau API, pahami siapa yang menggunakan API, API mana yang paling populer, dan mana yang memerlukan perbaikan.
  • Kontrol siapa yang menggunakan API dan batasi penggunaan API dari pembatasan akses sederhana hingga pembatasan berbasis permintaan - Anda memiliki kontrol khusus dan dapat dengan cepat merespons perubahan pola konsumsi API.
  • Amankan API menggunakan mekanisme keamanan terpusat seperti OAuth2.0, LDAP, atau Otentikasi Token Kunci.
  • Permudah pengembang pihak ketiga dan berikan mereka pengalaman API yang unggul dengan membuka portal pengembang khusus.
  • Skalakan API dan pastikan latensi respons minimal.

Manajemen API sangat penting untuk transisi ke SOA atau arsitektur layanan mikro, menyederhanakan integrasi antara layanan individual (mikro), menjadikannya tersedia untuk semua konsumen eksternal dan internal. Hasilnya, API baru menjadi lebih mudah dibuat, dipelihara, dan digunakan.

Jika Anda sudah menggunakan InterSystems IRIS, Anda dapat menambahkan opsi IAM ke lisensi Anda. Opsi IAM gratis untuk pelanggan InterSystems IRIS, namun Anda harus meminta kunci lisensi baru dari InterSystems untuk mulai menggunakan IAM.

Jika Anda belum menggunakan InterSystems IRIS dan berencana mencoba InterSystems API Manager, silakan hubungi InterSystems.

Memulai dan Instalasi

Pelanggan InterSystems dapat mengunduh distribusi IAM dari situs web WRC bagian "Distribusi Perangkat Lunak" dan dijalankan sebagai wadah Docker. Persyaratan sistem minimal:

Awalnya, Anda perlu mengunduh image Docker (Penting! Arsip dengan WRC bukan image Docker, Anda perlu membongkarnya, ada image Docker di dalamnya):

docker load -i iam_image.tar

Perintah ini akan membuat image IAM tersedia untuk digunakan nanti di server Anda. IAM berjalan sebagai kontainer terpisah, sehingga Anda dapat menskalakannya secara independen dari InterSystems IRIS. Menjalankan IAM memerlukan akses ke InterSystems IRIS untuk mengunduh lisensi.

Siapkan IRIS InterSistem:

  • Aktifkan aplikasi web /api/IAM
  • Aktifkan pengguna IAM
  • Ubah kata sandi pengguna IAM

Sekarang mari kita mulai penampung IAM. Di arsip Anda akan menemukan skrip iam-setup untuk Windows dan Unix (dan Mac). Skrip ini akan membantu Anda mengatur variabel lingkungan dengan benar, memungkinkan kontainer IAM membuat koneksi dengan InterSystems IRIS. Berikut ini contoh skrip yang berjalan di Mac:

source ./iam-setup.sh 
Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.
This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.
Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx               
Enter the web server port for your InterSystems IRIS instance: 52773
Enter the password for the IAM user for your InterSystems IRIS instance: 
Re-enter your password: 
Your inputs are:
Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx
Web server port for your InterSystems IRIS instance: 52773
Would you like to continue with these inputs (y/n)? y
Getting IAM license using your inputs...
Successfully got IAM license!
The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license
WARNING: The environment variable is set for this shell only!
To start the services, run the following command in the top level directory: docker-compose up -d
To stop the services, run the following command in the top level directory: docker-compose down
URL for the IAM Manager portal: http://localhost:8002

Seperti yang Anda lihat, hanya nama gambar lengkap, alamat IP, port IRIS InterSystems, dan kata sandi untuk pengguna IAM yang Anda perlukan untuk memulai.

Daripada menjalankan skrip, Anda dapat mengatur variabel lingkungan secara manual:

ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license

Luncurkan

Sekarang mari luncurkan IAM dengan menjalankan perintah:

docker-compose up -d

Perintah ini mengatur kontainer IAM dan memastikan semuanya berjalan dengan benar. Status kontainer diperiksa menggunakan perintah:

docker ps

Buka antarmuka admin di browser Anda localhost:8002.

Memperkenalkan Manajer API InterSystems (+ webinar)

Ini kosong untuk saat ini karena ini adalah node yang benar-benar baru. Mari kita ubah itu. IAM mendukung konsep ruang kerja untuk membagi API menjadi modul dan/atau perintah. Pergi ke ruang kerja "default" yang akan kita gunakan untuk eksperimen kita.

Memperkenalkan Manajer API InterSystems (+ webinar)

Jumlah permintaan untuk ruang kerja ini masih nol, namun Anda akan mendapatkan gambaran tentang konsep dasar IAM pada menu di sebelah kiri. Dua elemen pertama: Layanan dan Rute adalah yang paling penting:

  • Layanan adalah API yang ingin kami berikan aksesnya kepada konsumen. Jadi, REST API di InterSystems IRIS adalah sebuah Layanan, seperti misalnya Google API jika Anda ingin menggunakannya.
  • Rute memutuskan ke Layanan mana permintaan masuk harus diteruskan. Setiap Rute memiliki serangkaian ketentuan tertentu, dan jika terpenuhi, permintaan akan dikirim ke Layanan terkait. Misalnya, Rute dapat mencocokkan IP, domain pengirim, metode HTTP, bagian dari URI, atau kombinasi dari contoh-contoh ini.

Layanan

Mari buat Layanan IRIS InterSystems, dengan nilai berikut:

Lapangan
Nilai
Описание

nama
bunga iris
Nama layanan

tuan rumah
IP
Host atau ip server InterSystems IRIS

pelabuhan
52773
Port web server InterSystems IRIS

path
/api/atelier
Jalur akar

protokol
http
Protokol

Biarkan nilai lainnya sebagai default. Klik tombolnya Create dan tuliskan ID Layanan yang dibuat.

Rute

Sekarang mari buat rute:

Lapangan
Nilai
Описание

path
/api/atelier
Jalur akar

protokol
http
Protokol

layanan.id
panduan dari 3
Layanan (ID dari langkah sebelumnya)

Biarkan nilai lainnya sebagai default. Klik tombolnya Create dan tuliskan ID Rute yang dibuat. Secara default, IAM mendengarkan permintaan masuk pada port 8000. Sekarang permintaan dikirim ke http://localhost:8000 dan dimulai dengan /api/atelier dialihkan ke InterSystems IRIS.

Pengujian

Mari kita coba membuat permintaan di klien REST (saya menggunakan Tukang pos).

Memperkenalkan Manajer API InterSystems (+ webinar)

Mari kirim permintaan GET ke http://localhost:8000/api/atelier/ (jangan lupa / di akhir) dan menerima respons dari InterSystems IRIS. Setiap permintaan melewati IAM yang mengumpulkan metrik:

  • Kode status HTTP.
  • Menunda.
  • Pemantauan (jika dikonfigurasi).

Saya membuat beberapa permintaan lagi (termasuk dua permintaan ke endpoint yang tidak ada seperti /api/atelier/est/), hasilnya langsung terlihat di dashboard:

Memperkenalkan Manajer API InterSystems (+ webinar)

Bekerja dengan plugin

Sekarang kita telah mengonfigurasi Rute, kita dapat mengelola API kita. Kami dapat menambahkan fitur yang akan melengkapi layanan kami.

Cara paling umum untuk mengubah perilaku API adalah dengan menambahkan plugin. Plugin mengisolasi fungsionalitas individual dan dapat dihubungkan ke IAM baik secara global atau hanya ke entitas individual, seperti Pengguna (grup pengguna), Layanan, atau Rute. Kita akan mulai dengan menambahkan plugin Pembatas Tarif ke Rute. Untuk membuat koneksi antara plugin dan rute, kita memerlukan pengenal unik (ID) dari rute tersebut.

Membatasi jumlah permintaan

Klik Plugin di menu sidebar kiri. Anda dapat melihat semua plugin yang aktif di layar ini, tetapi karena server IAM ini masih baru, belum ada plugin yang aktif. Jadi lanjutkan ke langkah berikutnya dengan mengklik “Plugin Baru”.

Plugin yang kita butuhkan ada dalam kategori “Traffic Control” dan disebut “Rate Limiting”. Pilih itu. Ada beberapa pengaturan yang dapat Anda atur di sini, tetapi kami hanya memperhatikan dua bidang:

Lapangan
Nilai
Описание

rute_id
ID
ID rute

config.menit
5
Jumlah permintaan per menit

Itu saja. Plugin telah dikonfigurasi dan aktif. Perhatikan bahwa kita dapat memilih interval waktu yang berbeda, seperti satu menit, satu jam, atau satu hari. Pengaturan dapat digabungkan (misalnya, 1000 permintaan per jam dan sekaligus 100 permintaan per menit). Saya memilih menit karena memudahkan untuk memeriksa fungsionalitas plugin.

Jika Anda mengirim permintaan yang sama lagi di Postman, Anda akan melihat bahwa respons dikembalikan dengan 2 header tambahan:

  • XRateLimit-Batas-menit: 5
  • XRateLimit-Sisa-menit: 4

Ini memberi tahu klien bahwa ia dapat membuat hingga 5 permintaan per menit dan dapat membuat 4 permintaan lagi dalam slot waktu saat ini.

Memperkenalkan Manajer API InterSystems (+ webinar)

Jika Anda membuat permintaan yang sama berulang kali, pada akhirnya Anda akan kehabisan kuota yang tersedia dan malah menerima kode status HTTP 429 dengan isi respons berikut:

Memperkenalkan Manajer API InterSystems (+ webinar)

Tunggu sebentar dan Anda akan dapat mengirimkan permintaan lagi.

Ini adalah mekanisme praktis yang memungkinkan Anda untuk:

  • Lindungi backend dari lonjakan beban.
  • Beri tahu klien berapa banyak permintaan yang dapat mereka buat.
  • Uangkan API.

Anda dapat menetapkan nilai untuk interval waktu yang berbeda dan dengan demikian memperlancar lalu lintas API selama jangka waktu tertentu. Katakanlah Anda mengizinkan 600 permintaan per jam pada Rute tertentu. Rata-rata ada 10 permintaan per menit. Namun tidak ada yang menghalangi klien untuk menyelesaikan semua 600 permintaan dalam menit pertama. Mungkin ini yang Anda butuhkan. Anda mungkin ingin mendapatkan beban yang lebih merata dalam waktu satu jam. Dengan mengatur nilai bidang config.minute Nilai 20 memastikan bahwa pengguna Anda membuat tidak lebih dari 20 permintaan per menit dan 600 permintaan per jam. Hal ini memungkinkan terjadinya lonjakan kecil dalam interval satu menit dibandingkan dengan aliran rata-rata penuh sebesar 10 permintaan per menit, namun pengguna tidak dapat menggunakan kuota per jam selama satu menit. Sekarang mereka memerlukan setidaknya 30 menit untuk menggunakan semua permintaan mereka. Klien akan menerima header tambahan untuk setiap interval waktu yang ditentukan, misalnya:

Tajuk HTTP
Nilai

X-RateLimit-Limit-jam
600

X-RateLimit-Sisa-jam
595

X-RateLimit-Limit-menit
20

X-RateLimit-Sisa-menit
16

Tentu saja, ada banyak cara berbeda untuk mengonfigurasi batas kueri bergantung pada apa yang ingin Anda capai.

Temuan

Saya akan selesaikan disini, saya rasa sudah cukup materi untuk artikel pertama tentang InterSystems API Manager. Kami hanya menggunakan satu dari lebih dari 40 plugin. Masih banyak lagi hal menarik yang dapat Anda lakukan dengan IAM:

  • Tambahkan mekanisme autentikasi pusat untuk semua API Anda.
  • Skalakan beban menggunakan penyeimbang beban di beberapa Layanan.
  • Tambahkan fungsionalitas baru dan perbaikan bug ke audiens uji sebelum pembaruan penuh.
  • Menyediakan portal web khusus bagi pengembang internal dan eksternal yang mendokumentasikan semua API.
  • Permintaan cache untuk mengurangi waktu respons dan mengurangi beban pada backend sistem.

referensi

Webinar

Kami mengundang Anda ke webinar “Manajemen API dengan Manajemen API InterSystems”, yang akan berlangsung pada 21 November pukul 10:00 waktu Moskow (GMT+3).
InterSystems API Manager (IAM) adalah komponen baru Platform Data IRIS InterSystems yang menyediakan pemantauan, pengendalian, dan pengelolaan lalu lintas ke/dari API web dalam infrastruktur TI. Di webinar kami akan mendemonstrasikan kemampuan utama InterSystems API Management:

  • Alat pemantauan lalu lintas API.
  • Kontrol lalu lintas API, termasuk kontrol bandwidth, membatasi jumlah panggilan API, memelihara daftar daftar alamat IP yang diizinkan dan ditolak, dll.
  • Alat konfigurasi keamanan API.
  • Portal pengembang untuk menerbitkan dokumentasi API interaktif.
  • Titik akses tunggal ke API.

Webinar ini ditujukan untuk arsitek, pengembang, dan administrator sistem.

Pendaftaran diperlukan!

Sumber: www.habr.com

Tambah komentar