Menerbitkan API internal ke pengguna eksternal

Azure API Management
Azure Application Gateway
Azure DevOps
Azure Monitor
Azure Virtual Network

Dalam skenario ini, organisasi mengkonsolidasikan beberapa API secara internal menggunakan Azure API Management yang diterapkan di dalam Jaringan Virtual.

Sistem

Diagram arsitektur yang menunjukkan siklus hidup lengkap API internal yang dikonsumsi oleh pengguna eksternal.

Unduh file Visio arsitektur ini.

Diagram sebelumnya mencakup siklus hidup lengkap API internal yang digunakan oleh pengguna eksternal.

Aliran data

Data mengalir sebagai berikut:

  1. Pengembang memeriksa kode ke repositori GitHub yang terhubung ke agen alur CI/CD yang diinstal pada Azure VM.
  2. Agen mendorong build ke aplikasi API yang dihosting di ILB ASE.
  3. Azure API Management menggunakan API sebelumnya melalui header HOST yang ditentukan dalam kebijakan API Management.
  4. API Management menggunakan nama DNS App Service Environment untuk semua API.
  5. Application Gateway memaparkan pengembang API Management dan portal API.
  6. Azure Private DNS digunakan untuk merutekan lalu lintas secara internal antara ASE, API Management, dan Application Gateway.
  7. Pengguna eksternal menggunakan portal pengembang yang diekspos untuk menggunakan API melalui IP publik Application Gateway.

Komponen

  • Azure Virtual Network memungkinkan sumber daya Azure untuk berkomunikasi secara aman dengan satu sama lain, internet, dan jaringan lokal.
  • Azure Private DNS memungkinkan nama domain diselesaikan dalam jaringan virtual tanpa perlu menambahkan solusi DNS kustom.
  • Azure API Management membantu organisasi menerbitkan API ke pengembang eksternal, mitra, dan internal untuk membuka potensi data dan layanan mereka.
  • Application Gateway adalah penyeimbang beban lalu lintas web yang membantu Anda mengelola lalu lintas ke aplikasi web Anda.
  • Internal Load Balancer App Service Environment adalah fitur Azure App Service yang menyediakan lingkungan yang sepenuhnya terisolasi dan berdedikasi untuk menjalankan aplikasi App Service dengan aman dalam skala tinggi.
  • Azure DevOps adalah layanan untuk mengelola siklus hidup pengembangan Anda dan mencakup fitur untuk perencanaan dan manajemen proyek, manajemen kode, membangun, dan merilis.
  • Application Insights adalah layanan Manajemen Performa Aplikasi (APM) yang dapat diperluas untuk pengembang web di berbagai platform.
  • Azure Cosmos DB adalah layanan Microsoft dengan database berbagai model yang didistribusikan secara global.

Alternatif

  • Dalam skenario lift dan shift Azure yang diterapkan ke Azure Virtual Network, server back-end dapat langsung ditangani melalui alamat IP pribadi.
  • Jika menggunakan sumber daya lokal, instans API Management dapat menjangkau kembali ke layanan internal secara privat melalui gateway Azure VPN dan koneksi VPN Internet Protocol Security (IPSec) situs-ke-situs atau ExpressRoute yang membuat skenario Azure dan lokal hibrid.
  • Penyedia DNS yang ada atau sumber terbuka dapat digunakan sebagai pengganti Layanan DNS berbasis Azure.
  • API internal yang diterapkan di luar Azure masih dapat memperoleh manfaat dengan mengekspos API melalui API Management Service.

Detail skenario

Dalam skenario ini, organisasi menghosting beberapa API menggunakan Azure Application Service Environment (ILB ASE), dan mereka ingin mengonsolidasikan API ini secara internal dengan menggunakan Azure API Management (APIM) yang disebarkan di dalam Virtual Network. Instans API Management internal juga dapat diekspos ke pengguna eksternal untuk memungkinkan pemanfaatan potensi API secara penuh. Paparan eksternal ini dapat dicapai menggunakan permintaan penerusan Azure Application Gateway ke layanan API Management internal, yang pada gilirannya menggunakan API yang disebarkan di ASE.

  • API web dihosting melalui protokol HTTPS yang aman dan akan menggunakan Sertifikat TLS.
  • Application Gateway juga dikonfigurasi melalui port 443 untuk panggilan keluar yang aman dan andal.
  • Layanan API Management dikonfigurasi untuk menggunakan domain kustom menggunakan sertifikat TLS.
  • Meninjau konfigurasi jaringan yang disarankan untuk App Service Environments
  • Perlu ada penyebutan eksplisit tentang port 3443 yang memungkinkan API Management untuk mengelola melalui portal Microsoft Azure atau PowerShell.
  • Manfaatkan kebijakan dalam APIM untuk menambahkan header HOST untuk API yang dihosting di ASE. Ini memastikan bahwa penyeimbang beban ASE akan meneruskan permintaan dengan benar.
  • API Management menerima entri DNS ASE untuk semua aplikasi yang dihosting di bawah App Service Environments. Tambahkan kebijakan APIM untuk secara eksplisit mengatur header HOST untuk memungkinkan load balancer ASE membedakan antara Aplikasi di bawah Lingkungan App Service.
  • Pertimbangkan untuk Mengintegrasikan dengan Azure Application Insights, yang juga memunculkan metrik melalui Azure Monitor untuk pemantauan.
  • Jika Anda menggunakan alur CI/CD untuk menyebarkan API Internal, pertimbangkan untuk membangun Agen yang Dihosting Anda sendiri pada VM di dalam Virtual Network.

Kemungkinan kasus penggunaan

  • Sinkronkan informasi alamat pelanggan secara internal setelah pelanggan melakukan perubahan.
  • Menarik pengembang ke platform Anda dengan mengekspos aset data unik.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Keandalan

Keandalan memastikan aplikasi Anda dapat mencapai komitmen yang Anda buat kepada pelanggan Anda. Untuk informasi selengkapnya, lihat Gambaran umum pilar keandalan."

Ketersediaan

Anda dapat menyebarkan layanan Azure API Management sebagai penyebaran Multi-Wilayah untuk ketersediaan yang lebih tinggi dan juga untuk mengurangi latensi. Fitur ini hanya tersedia dalam mode Premium. Layanan API Management dalam skenario khusus ini menggunakan API dari App Service Environments. Anda juga dapat menggunakan APIM untuk API yang dihosting di infrastruktur internal lokal.

App Service Environments dapat menggunakan profil Traffic Manager untuk mendistribusikan lalu lintas yang dihosting di App Service Environments untuk skala dan ketersediaan yang lebih tinggi.

Ketahanan

Meskipun skenario contoh ini berbicara lebih lanjut tentang konfigurasi, API yang dihosting di Lingkungan App Service harus cukup tangguh untuk menangani kesalahan dalam permintaan, yang akhirnya dikelola oleh layanan API Management dan Application Gateway. Pertimbangkan pola pemecah Retry dan Circuit dalam desain API. Untuk panduan umum tentang cara merancang solusi yang tangguh, lihat Mendesain aplikasi yang tangguh untuk Azure.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keamanan.

Karena skenario contoh sebelumnya dihosting sepenuhnya di jaringan internal, API Management dan ASE sudah disebarkan pada infrastruktur aman (Azure VNet). Anda dapat mengintegrasikan Application Gateway dengan Microsoft Defender untuk Cloud untuk menyediakan cara yang mulus untuk mencegah, mendeteksi, dan merespons ancaman terhadap lingkungan. Untuk panduan umum tentang mendesain solusi aman, lihat Dokumentasi Keamanan Azure.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Gambaran umum pilar pengoptimalan biaya.

API Management ditawarkan dalam empat tingkatan: pengembang, dasar, standar, dan premium. Anda dapat menemukan panduan terperinci tentang perbedaan tingkatan ini di panduan harga Azure API Management di sini.

Pelanggan dapat menskalakan API Management dengan menambahkan dan menghapus unit. Setiap unit memiliki kapasitas yang tergantung pada tingkatannya.

Catatan

Anda dapat menggunakan tingkat Pengembang untuk evaluasi fitur API Management. Anda tidak boleh menggunakan tingkat Pengembang untuk produksi.

Untuk melihat biaya yang diproyeksikan dan menyesuaikan dengan kebutuhan penyebaran, Anda dapat mengubah jumlah unit timbangan dan instans App Service di Kalkulator Harga Azure.

Demikian pula, Anda dapat menemukan panduan harga App Service Environments.

Anda dapat mengonfigurasi harga Application Gateway tergantung pada tingkat dan sumber daya yang diperlukan.

Efisiensi kinerja

Efisiensi performa adalah kemampuan beban kerja Anda untuk diskalakan agar memenuhi permintaan yang diberikan oleh pengguna dengan cara yang efisien. Untuk informasi selengkapnya, lihat Gambaran umum pilar efisiensi performa.

Skalabilitas

Anda dapat menskalakan instans API Management tergantung pada sejumlah faktor, seperti jumlah dan tingkat koneksi bersamaan, jenis dan jumlah kebijakan yang dikonfigurasi, ukuran permintaan dan respons, dan latensi back-end pada API. Opsi instans penskalaan tersedia di Tingkat Dasar, Standar, dan Premium, tetapi terikat oleh batas skala atas di tingkat Dasar dan Standar. Instans disebut sebagai Unit dan dapat ditingkatkan hingga maksimal dua unit di tingkat Dasar, empat unit di tingkat Standar dan sejumlah unit di tingkat Premium. Opsi Penskalaan Otomatis juga tersedia untuk mengaktifkan skala berdasarkan aturan.

Lingkungan App Service dirancang untuk skala dengan batas berdasarkan tingkat harga. Anda dapat mengonfigurasi aplikasi yang dihosting di bawah Lingkungan App Service untuk memperluas skala (jumlah instans) atau meningkatkan skala (ukuran instans) tergantung pada persyaratan aplikasi.

Penskalaan otomatis Azure Application Gateway tersedia sebagai bagian dari SKU zona redundan di semua wilayah Azure global. Lihat fitur pratinjau publik mengenai Penskalaan otomatis gateway aplikasi.

Menyebarkan skenario ini

Prasyarat dan asumsi

  1. Anda perlu membeli nama domain kustom.
  2. Anda memerlukan sertifikat TLS (kami menggunakan sertifikat wildcard dari Azure Certificates Service) untuk menggunakannya untuk semua domain kustom kami. Anda juga dapat mendapatkan sertifikat yang ditandatangani sendiri untuk skenario Dev Test.
  3. Penyebaran khusus ini menggunakan nama domain contoso.org dan sertifikat TLS kartubebas untuk domain.
  4. Penyebaran menggunakan nama sumber daya dan ruang alamat yang disebutkan di bagian Penyebaran. Anda dapat mengonfigurasi nama sumber daya dan ruang alamat.

Menyebarkan dan menempatkan potongan-potongan bersama-sama

Sebarkan ke Azure

Anda perlu mengonfigurasi lebih lanjut komponen yang disebarkan menggunakan templat Resource Manager sebelumnya sebagai berikut:

  1. VNet dengan konfigurasi berikut:

    • Nama: ase-internal-vnet
    • Ruang alamat untuk VNet: 10.0.0.0/16
    • Empat Subnet
      • backendSubnet untuk Layanan DNS: 10.0.0.0/24
      • apimsubnet untuk Internal API Management Service: 10.0.1.0/28
      • asesubnet untuk ILB ASE: 10.0.2.0/24
      • VMSubnet untuk VM Uji dan Agen Host Azure DevOps Internal VM: 10.0.3.0/24
  2. Layanan DNS privat (Pratinjau Publik) karena menambahkan layanan DNS mengharuskan VNet kosong.

  3. Lingkungan App Service dengan opsi Internal Load Balancer (ILB): aseinternal (DNS: aseinternal.contoso.org). Setelah Deployment selesai, unggah sertifikat wild-card untuk ILB

  4. App Service Plan dengan ASE sebagai lokasi

  5. Aplikasi API (App Services untuk kesederhanaan) - srasprest (URL: https://srasprest.contoso.org) – ASP.NET API web berbasis Model-View-Controller (MVC). Setelah penyebaran, konfigurasikan:

    • Aplikasi web untuk menggunakan sertifikat TLS
    • Application Insights ke aplikasi sebelumnya: api-insights
    • Buat layanan Azure Cosmos DB untuk API web yang dihosting internal ke VNet: noderestapidb
    • Membuat entri DNS pada zona DNS privat yang dibuat
    • Anda dapat menggunakan Azure Pipelines untuk mengonfigurasi agen di Komputer Virtual untuk menyebarkan kode untuk Aplikasi Web di Jaringan internal
    • Untuk menguji Aplikasi API secara internal, buat VM pengujian di dalam subnet VNet
  6. Buat layanan API Management: apim-internal

  7. Konfigurasikan layanan untuk terhubung ke VNet internal di Subnet: apimsubnet. Setelah penyebaran selesai, lakukan langkah-langkah tambahan berikut:

    • Mengonfigurasi domain kustom untuk LAYANAN APIM menggunakan TLS
      • Portal API (api.contoso.org)
      • Portal Dev (portal.contoso.org)
      • Di bagian API, konfigurasikan Aplikasi ASE menggunakan nama DNS ASE menambahkan Azure Policy untuk Header HOST untuk aplikasi Web
      • Gunakan VM pengujian yang dibuat sebelumnya untuk menguji internal layanan API Management di Virtual Network

    Catatan

    Menguji APIM dari portal Azure tidak akan berfungsi, karena api.contoso.org tidak dapat diselesaikan secara publik.*

  8. Konfigurasikan Application Gateway untuk mengakses layanan API: apim-gateway pada port 80. Tambahkan sertifikasi TLS ke Application Gateway dan pemeriksaan kesehatan dan pengaturan HTTP yang sesuai. Konfigurasikan juga Aturan dan Pendengar untuk menggunakan sertifikat TLS.

Setelah langkah-langkah sebelumnya berhasil diselesaikan, konfigurasikan entri DNS dalam entri api.contoso.org CNAME pencatat web dan portal.contoso.org dengan nama DNS publik Application Gateway: ase-appgtwy.westus.cloudapp.azure.com. Verifikasi bahwa Anda dapat menjangkau Portal Dev dari Publik dan Anda dapat menguji API layanan APIM menggunakan portal Azure.

Catatan

Ini bukan praktik yang baik untuk menggunakan URL yang sama untuk titik akhir internal dan eksternal untuk layanan APIM.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

  • Sarwa Srikant | Insinyur Pelanggan Senior

Kontributor lain:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya

Memigrasikan aplikasi web menggunakan Azure API Management