Pola Perutean Gateway

Azure Application Gateway

Rutekan permintaan ke beberapa layanan atau beberapa instans layanan menggunakan satu titik akhir. Pola ini berguna ketika Anda ingin:

  • Mengekspos beberapa layanan pada satu titik akhir dan rutekan ke layanan yang sesuai berdasarkan permintaan
  • Mengekspos beberapa instans layanan yang sama pada satu titik akhir untuk tujuan penyeimbangan beban atau ketersediaan
  • Memaparkan berbagai versi dari layanan yang sama melalui satu titik akhir dan mengatur lalu lintas di antara versi-versi yang berbeda

Konteks dan masalah

Ketika klien perlu menggunakan beberapa layanan, beberapa instans layanan atau kombinasi keduanya, klien harus diperbarui saat layanan ditambahkan atau dihapus. Pertimbangkan skenario berikut.

  • Beberapa layanan yang beragam - Aplikasi e-niaga mungkin menyediakan layanan seperti pencarian, ulasan, keranjang, checkout, dan riwayat pesanan. Setiap layanan memiliki API berbeda yang harus berinteraksi dengan klien, dan klien harus tahu tentang setiap titik akhir agar dapat terhubung ke layanan. Jika API berubah, klien juga harus diperbarui. Jika Anda melakukan refaktor pada layanan menjadi dua atau beberapa layanan terpisah, kode harus diubah baik dalam layanan dan klien.
  • Beberapa instans layanan yang sama - Sistem dapat memerlukan menjalankan beberapa instans dari layanan yang sama di wilayah yang sama atau berbeda. Menjalankan beberapa instans dapat dilakukan untuk tujuan penyeimbangan beban atau untuk memenuhi persyaratan ketersediaan. Setiap kali instans diputar ke atas atau ke bawah untuk menyesuaikan permintaan, client harus diperbarui.
  • Beberapa versi layanan yang sama - Sebagai bagian dari strategi penyebaran, versi baru layanan dapat disebarkan di sepanjang versi yang ada. Ini dikenal sebagai penyebaran hijau biru. Dalam skenario ini, klien harus diperbarui setiap kali ada perubahan pada persentase lalu lintas yang dirutekan ke versi baru dan titik akhir yang ada.

Solusi

Tempatkan gateway di depan kumpulan aplikasi, layanan, atau penerapan. Gunakan perutean lapisan aplikasi 7 untuk merutekan permintaan ke instans yang sesuai.

Dengan pola ini, aplikasi klien hanya perlu mengetahui tentang satu titik akhir dan berkomunikasi dengan satu titik akhir. Berikut ini menggambarkan bagaimana pola Perutean Gateway membahas tiga skenario yang diuraikan di bagian konteks dan masalah.

Beberapa layanan yang berbeda

Diagram gateway yang berada di depan layanan pencarian, layanan checkout, layanan riwayat pesanan, layanan keranjang, dan layanan ulasan.

Pola perutean gateway berguna dalam skenario ini di mana klien mengakses beberapa layanan. Jika layanan dikonsolidasikan, diurai, atau diganti, klien tidak selalu memerlukan pembaruan. Ini dapat terus membuat permintaan ke gateway, dan hanya perutean yang berubah.

Gateway juga memungkinkan Anda mengabstraksi layanan backend dari klien, sehingga Anda dapat menjaga panggilan klien tetap sederhana selagi memungkinkan perubahan dalam layanan backend di belakang gateway. Panggilan klien dapat dialihkan ke satu atau beberapa layanan apa pun yang diperlukan untuk menangani perilaku klien yang diharapkan, sehingga Anda dapat menambahkan, membagi, dan mengatur ulang layanan di belakang gateway tanpa mengubah klien.

Beberapa instans layanan yang sama

Diagram gateway yang terletak di depan layanan pencarian di wilayah 1 dan layanan pencarian di wilayah 2.

Elastisitas adalah kunci dalam komputasi cloud. Layanan dapat diaktifkan untuk memenuhi permintaan yang meningkat atau dinonaktifkan ketika permintaan rendah untuk menghemat uang. Kompleksitas mendaftarkan dan membatalkan pendaftaran instans layanan dienkapsulasi di gateway. Klien tidak menyadari peningkatan atau penurunan jumlah layanan.

Instans layanan dapat disebarkan dalam satu atau beberapa wilayah. Pola Geode merinci bagaimana penyebaran multi-wilayah aktif-aktif dapat memperbaiki latensi dan meningkatkan ketersediaan layanan.

Beberapa versi layanan yang sama

Diagram gateway yang berada di depan layanan pencarian versi 1 dan layanan pencarian versi 1.1.

Pola ini dapat digunakan untuk penyebaran, dengan memungkinkan Anda mengelola bagaimana pembaruan diluncurkan kepada pengguna. Versi baru layanan Anda yang disebarkan dapat digunakan secara paralel dengan versi yang ada. Perutean memungkinkan Anda mengontrol jenis versi layanan yang disajikan kepada klien, sehingga memberikan Anda fleksibilitas untuk menggunakan berbagai strategi rilis, baik peluncuran pembaruan secara bertahap, paralel, atau lengkap. Setiap masalah yang ditemukan setelah layanan baru disebarkan dapat dengan cepat dikembalikan dengan membuat perubahan konfigurasi di gateway, tanpa memengaruhi klien.

Masalah dan pertimbangan

  • Layanan gateway dapat memperkenalkan satu titik kegagalan. Pastikan dirancang dengan benar untuk memenuhi persyaratan ketersediaan Anda. Pertimbangkan kemampuan ketahanan dan toleransi kesalahan dalam implementasi.
  • Layanan gateway dapat memperkenalkan hambatan. Pastikan gateway memiliki performa yang memadai untuk menangani beban dan dapat dengan mudah menskalakan sesuai dengan ekspektasi pertumbuhan Anda.
  • Lakukan pengujian beban terhadap gateway untuk memastikan Anda tidak menimbulkan kegagalan berantai pada layanan.
  • Perutean pada gateway berada di level 7. Ini dapat didasarkan pada IP, port, header, atau URL.
  • Layanan gateway dapat berskala global atau regional. Azure Front Door adalah gateway global, sementara Azure Application Gateway bersifat regional. Gunakan gateway global jika solusi Anda memerlukan penyebaran layanan multi-wilayah. Pertimbangkan untuk menggunakan Application Gateway jika Anda memiliki beban kerja regional yang memerlukan kontrol terperinci bagaimana lalu lintas seimbang. Misalnya, Anda ingin menyeimbangkan lalu lintas antara komputer virtual.
  • Layanan gateway adalah titik akhir publik untuk layanan yang berada di depannya. Pertimbangkan untuk membatasi akses jaringan publik ke layanan backend, dengan membuat layanan hanya dapat diakses melalui gateway atau melalui jaringan virtual privat.

Kapan menggunakan pola ini

Gunakan pola ini ketika:

  • Klien perlu menggunakan beberapa layanan yang dapat diakses di belakang gateway.
  • Anda ingin menyederhanakan aplikasi klien dengan menggunakan satu titik akhir.
  • Anda perlu merutekan permintaan dari titik akhir yang dapat dialamatkan secara eksternal ke titik akhir virtual internal, seperti mengekspos port pada VM ke alamat IP virtual kluster.
  • Klien perlu menggunakan layanan yang berjalan di beberapa wilayah untuk latensi atau manfaat ketersediaan.
  • Anda ingin merutekan lalu lintas jauh dari wilayah dengan emisi karbon tinggi ketika alternatif emisi yang lebih rendah ada di pool backend.
  • Klien perlu menggunakan jumlah variabel instans layanan.
  • Anda ingin menerapkan strategi penyebaran di mana klien mengakses beberapa versi layanan secara bersamaan.

Pola ini mungkin tidak cocok ketika Anda memiliki aplikasi sederhana yang hanya menggunakan satu atau dua layanan.

Desain beban kerja

Arsitek harus mengevaluasi bagaimana pola Perutean Gateway dapat digunakan dalam desain beban kerja mereka untuk mengatasi tujuan dan prinsip yang tercakup dalam pilar Azure Well-Architected Framework. Contohnya:

Pilar Bagaimana pola ini mendukung tujuan pilar
Keputusan desain keandalan membantu beban kerja Anda menjadi tangguh terhadap kerusakan dan untuk memastikan bahwa beban kerja tersebut pulih ke status berfungsi penuh setelah kegagalan terjadi. Perutean gateway memungkinkan Anda merutekan lalu lintas hanya ke simpul sehat di sistem Anda.

- RE:05 Redundansi
- PEMANTAUAN KESEHATAN RE:10
Keunggulan Operasional membantu memberikan kualitas beban kerja melalui proses standar dan kohesi tim. Perutean gateway memungkinkan Anda memisahkan permintaan dari backend, yang pada gilirannya memungkinkan backend Anda mendukung model penyebaran tingkat lanjut, transisi platform, dan satu titik manajemen untuk resolusi dan enkripsi nama domain saat transit.

- Alat dan proses OE:04
- OE:11 Praktik penyebaran yang aman
Efisiensi Performa membantu beban kerja Anda memenuhi tuntutan secara efisien melalui pengoptimalan dalam penskalaan, data, kode. Perutean gateway memungkinkan Anda mendistribusikan lalu lintas di seluruh simpul di sistem Anda untuk menyeimbangkan beban.

- PE:05 Penskalaan dan pemartisian

Seperti halnya keputusan desain apa pun, pertimbangkan kompromi terhadap tujuan lain dari pilar-pilar tersebut yang mungkin diperkenalkan oleh pola ini.

Contoh

Menggunakan Nginx sebagai router, contoh berikut menunjukkan file konfigurasi untuk server yang merutekan permintaan untuk aplikasi yang berada di direktori virtual yang berbeda ke komputer yang berbeda di ujung belakang.

server {
    listen 80;
    server_name domain.com;

    location /app1 {
        proxy_pass http://10.0.3.10:80;
    }

    location /app2 {
        proxy_pass http://10.0.3.20:80;
    }

    location /app3 {
        proxy_pass http://10.0.3.30:80;
    }
}

Layanan Azure berikut ini dapat digunakan untuk menerapkan pola pengaturan rute gateway:

  • Instance Application Gateway, yang menyediakan perutean regional lapisan level-7.
  • Instans Azure Front Door, yang menyediakan perutean lapisan-7 global.