Memperkenalkan Manajer API InterSystems

Kami baru-baru ini merilis InterSystems API Manager (IAM), komponen baru Platform Data IRIS InterSystems yang menyediakan pemantauan, kontrol, dan kontrol lalu lintas ke / dari API web dalam infrastruktur TI.


Pada artikel ini saya akan menunjukkan kepada Anda bagaimana mengkonfigurasi IAM dan menunjukkan beberapa dari banyak fitur yang tersedia untuk Anda dengan IAM. InterSystems API Manager memungkinkan Anda untuk:


  • Tonton API, pahami siapa yang menggunakan API, API mana yang paling populer, dan mana yang perlu diperbaiki.
  • Kontrol siapa yang menggunakan API dan batasi penggunaan API dari pembatasan akses sederhana hingga pembatasan tergantung pada permintaan - Anda memiliki kontrol yang dapat disesuaikan dan Anda dapat dengan cepat merespons perubahan dalam pola konsumsi API.
  • Lindungi API dengan mekanisme keamanan terpusat seperti OAuth2.0, LDAP, atau Otentikasi Token Kunci.
  • Sederhanakan pekerjaan pengembang pihak ketiga dan berikan mereka pengalaman luar biasa dengan API dengan membuka portal khusus untuk pengembang.
  • Skala API dan memastikan keterlambatan minimal dalam merespons.

Manajemen API diperlukan untuk transisi ke arsitektur SOA atau layanan mikro, menyederhanakan integrasi antara layanan individu (mikro), menjadikannya dapat diakses oleh semua konsumen eksternal dan internal. Akibatnya, API baru menjadi lebih mudah untuk dibuat, dirawat, dan dikonsumsi.


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


Jika Anda belum menggunakan IRIS InterSystems dan hanya berencana untuk mencoba Manajer API InterSystems, hubungi InterSystems.


Memulai dan menginstal


Pelanggan IAM InterSystems dapat mengunduh bagian "Distribusi Perangkat Lunak" dari situs WRC dan menjalankannya sebagai wadah Docker. Persyaratan sistem minimum:



Awalnya, Anda harus mengunduh gambar Docker (Penting! Arsip dari WRC bukan gambar Docker, Anda harus membongkar, di dalam gambar Docker):


docker load -i iam_image.tar 

Perintah ini akan membuat gambar IAM tersedia untuk digunakan nanti di server Anda. IAM berfungsi sebagai wadah yang terpisah, sehingga Anda dapat menskalakannya secara independen dari InterSystems IRIS. Untuk menjalankan IAM, Anda memerlukan akses ke InterSystems IRIS untuk mengunduh lisensi.


Konfigurasikan InterSystems IRIS:


  • Nyalakan aplikasi web /api/IAM
  • Aktifkan Pengguna IAM
  • Ubah Kata Sandi Pengguna IAM

Sekarang jalankan wadah IAM. Dalam arsip Anda akan menemukan skrip iam-setup untuk Windows dan Unix (dan Mac). Skrip ini akan membantu Anda mengatur variabel lingkungan dengan benar, memungkinkan wadah IAM terhubung ke InterSystems IRIS. Berikut ini contoh skrip 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, nama gambar lengkap, alamat IP, port IRIS InterSystems dan kata sandi untuk pengguna IAM adalah semua yang Anda butuhkan untuk memulai.


Alih-alih 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 jalankan IAM dengan menjalankan perintah:


 docker-compose up -d 

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


 docker ps 

Buka localhost:8002 admin antarmuka di browser.



Sejauh ini, itu kosong karena ini adalah situs yang sama sekali baru. Mari kita ubah. IAM mendukung konsep ruang kerja untuk membagi API menjadi modul dan / atau tim. Buka ruang kerja "default" yang akan kami gunakan untuk percobaan kami.


Toolbar ruang kerja default


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


  • Layanan - API, yang ingin kami berikan akses kepada konsumen. Dengan demikian, REST API di InterSystems IRIS adalah Layanan, seperti, misalnya, Google API, jika Anda ingin menggunakannya.
  • Rute memutuskan Layanan mana permintaan masuk harus diarahkan ke. Setiap Rute memiliki serangkaian ketentuan khusus, dan jika dipenuhi, permintaan dikirim ke Layanan terkait. Misalnya, sebuah Rute mungkin cocok dengan IP, domain pengirim, metode HTTP, bagian dari URI, atau kombinasi dari contoh-contoh ini.

Layanan


Mari kita membuat Layanan IRIS InterSystems, dengan nilai-nilai berikut:


LapanganNilaiDeskripsi
namairisNama Layanan
tuan rumahIPHost server IRIS atau ip InterSystems
pelabuhan52773InterSystems Port Web Server IRIS
jalan/ api / atelierJalur root
protokolhttpProtokol

Biarkan nilai yang tersisa secara default. Klik tombol Create dan tuliskan ID dari Layanan yang dibuat.


Rute


Sekarang mari kita buat rute:


LapanganNilaiDeskripsi
jalan/ api / atelierJalur root
protokolhttpProtokol
service.idtuntunan dari 3Layanan (ID dari langkah sebelumnya)

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


Pengujian


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


Permintaan SISA di tukang pos


Kami akan mengirimkan permintaan GET ke http://localhost:8000/api/atelier/ (jangan lupa / di akhir) dan dapatkan tanggapan dari InterSystems IRIS. Setiap permintaan melewati IAM yang mengumpulkan metrik:


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

Saya membuat beberapa permintaan lagi (termasuk dua permintaan untuk titik akhir yang tidak ada, seperti / api / atelier / est /), hasilnya langsung terlihat di dasbor:


Dasbor dengan beberapa metrik


Bekerja dengan plugin


Sekarang setelah Rute dikonfigurasikan, kami dapat mengontrol API kami. Kami dapat menambahkan fitur yang melengkapi layanan kami.


Cara paling umum untuk mengubah perilaku API adalah dengan menambahkan plugin. Plugin mengisolasi fungsionalitas individu dan dapat dihubungkan ke IAM baik secara global dan hanya untuk entitas individu, seperti Pengguna (grup pengguna), Layanan atau Rute. Kami akan mulai dengan menambahkan plugin "Pembatasan Nilai" ke Rute. Untuk membangun koneksi antara plug-in dan rute, kita memerlukan pengidentifikasi unik (ID) untuk rute tersebut.


Batas Permintaan


Klik Plugins di menu di bilah sisi kiri. Anda melihat semua plugin aktif di layar ini, tetapi karena server IAM ini baru, belum ada plugin aktif. Maka lanjutkan ke langkah berikutnya dengan mengklik "Plugin Baru".


Plugin yang kami butuhkan terletak di kategori "Kontrol Lalu Lintas" dan disebut "Pembatasan Tingkat". Pilih itu. Ada beberapa pengaturan yang dapat Anda atur di sini, tetapi kami hanya mementingkan dua bidang:


LapanganNilaiDeskripsi
route_idIDID rute
config.minute5Jumlah permintaan per menit

Itu saja. Plugin ini dikonfigurasi dan aktif. Saya perhatikan bahwa kita dapat memilih interval waktu yang berbeda, seperti menit, jam atau hari. Pengaturan dapat digabungkan (misalnya, 1000 permintaan per jam dan pada saat yang sama 100 permintaan per menit). Saya memilih menit, karena ini memudahkan untuk memeriksa plugin.


Jika Anda mengirim permintaan yang sama lagi ke tukang pos, Anda akan melihat bahwa respons dikembalikan dengan 2 header tambahan:


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

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


Batas kecepatan


Jika Anda membuat permintaan yang sama berulang-ulang, maka pada akhirnya Anda akan kehabisan kuota yang tersedia dan alih-alih Anda akan menerima kode status HTTP 429 dengan badan respons berikut:


API Melebihi


Tunggu sebentar dan Anda akan dapat mengirim permintaan lagi.


Ini adalah mekanisme nyaman yang memungkinkan Anda untuk:


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

Anda dapat menetapkan nilai untuk interval waktu yang berbeda dan dengan demikian memperlancar lalu lintas API untuk periode waktu tertentu. Misalkan Anda mengizinkan 600 permintaan per jam pada Rute tertentu. Ada rata-rata 10 permintaan per menit. Tetapi tidak ada yang mencegah klien menyelesaikan semua 600 permintaan di menit pertama jam tersebut. Mungkin ini yang Anda butuhkan. Anda mungkin ingin mencapai pemuatan yang lebih merata dalam waktu satu jam. Dengan menetapkan nilai bidang config.minute menjadi 20, Anda menjamin bahwa pengguna Anda membuat tidak lebih dari 20 permintaan per menit dan 600 permintaan per jam. Ini memungkinkan lompatan kecil dalam interval menit dibandingkan dengan aliran rata-rata penuh dari 10 permintaan per menit, tetapi pengguna tidak dapat menggunakan kuota per jam selama satu menit. Sekarang mereka membutuhkan setidaknya 30 menit untuk menggunakan semua pertanyaan mereka. Klien akan menerima tajuk tambahan untuk setiap interval waktu yang diberikan, misalnya:


Header HTTPNilai
X-RateLimit-Limit-hour600
X-RateLimit-Sisa-jam595
X-RateLimit-Limit-menit20
X-RateLimit-Tersisa-menit16

Tentu saja, ada banyak cara untuk menyesuaikan batas permintaan tergantung pada apa yang ingin Anda capai.


Kesimpulan


Saya akan akhiri dengan ini, saya pikir bahannya cukup untuk artikel pertama tentang InterSystems API Manager. Kami hanya menggunakan satu dari lebih dari 40 plugin. Anda dapat melakukan banyak hal menarik lainnya dengan IAM:


  • Tambahkan mekanisme otentikasi pusat untuk semua API Anda.
  • Skala beban menggunakan penyeimbang ke beberapa Layanan.
  • Tambahkan fungsionalitas dan perbaikan bug baru untuk audiens uji sebelum peningkatan penuh.
  • Menyediakan pengembang web internal dan eksternal dengan portal web khusus yang mendokumentasikan semua API.
  • Permintaan cache untuk mengurangi latensi respons dan mengurangi beban sistem backend.

Referensi


Source: https://habr.com/ru/post/id475670/


All Articles