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.

Arsitektur

Diagram arsitektur yang menunjukkan siklus hidup lengkap API internal yang digunakan 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 Lingkungan App Service untuk semua API.
  5. Application Gateway mengekspos 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 load balancer 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

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.

Potensi penggunaan kasus

  • Sinkronkan informasi alamat pelanggan secara internal setelah pelanggan membuat perubahan.
  • Tarik 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.

Resiliency

Meskipun skenario contoh ini berbicara lebih banyak 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 tangguh, lihat Mendesain aplikasi tangguh untuk Azure.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disengaja 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 for Cloud untuk menyediakan cara yang mulus untuk mencegah, mendeteksi, dan merespons ancaman terhadap lingkungan. Untuk panduan umum tentang merancang 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 lingkungan App Service.

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

Efisiensi performa

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

Skalabilitas

Anda dapat memperluas skala API Management instans 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.

App Service Environment 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 kartubebas dari Layanan Sertifikat Azure) 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 for simplicity) - srasprest (URL: https://srasprest.contoso.org) – ASP.NET API web berbasis 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 Virtual Machines 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
      • API Portal (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 pada Virtual Network

    Catatan

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

  8. Konfigurasikan Application Gateway (WAF V1) untuk mengakses layanan API: apim-gateway di 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 CNAME pencatat web api.contoso.org 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 bahwa 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 (meskipun dalam demo ini, kedua URL sama). Jika Anda memilih untuk memiliki URL yang berbeda untuk titik akhir internal dan eksternal, Anda dapat menggunakan Application Gateway WAF v2, yang mendukung pengalihan http dan banyak lagi.

Kontributor

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

Penulis utama:

Kontributor lainnya:

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

Langkah berikutnya

Memigrasikan aplikasi web menggunakan Azure API Management