Pola Gateway Routing

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
  • Mengekspos versi yang berbeda dari layanan yang sama pada satu titik akhir dan merutekan lalu lintas di berbagai versi

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 berbeda - Aplikasi e-niaga mungkin menyediakan layanan seperti pencarian, ulasan, keliru, 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 dipisahkan ke atas atau ke bawah untuk mencocokkan permintaan, klien 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 serangkaian aplikasi, layanan, atau penyebaran. Gunakan perutean Layer 7 aplikasi 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 kelir, dan layanan ulasan.

Pola perutean gateway berguna dalam skenario ini di mana klien menggunakan 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 berada di depan layanan pencarian di wilayah 1 dan layanan pencarian di wilayah 2.

Elastisitas adalah kunci dalam komputasi cloud. Layanan dapat dipisahkan untuk memenuhi permintaan yang meningkat atau dipisahkan 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 meningkatkan 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 cascading untuk layanan.
  • Perutean gateway adalah 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.
  • 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 jika 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 tahan terhadap kerusakan dan untuk memastikan bahwa keputusan 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
- Praktik penyebaran Brankas OE:11
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 tradeoff terhadap tujuan pilar lain yang mungkin diperkenalkan dengan pola ini.

Contoh

Dengan menggunakan Nginx sebagai router, berikut adalah contoh sederhana file konfigurasi untuk server yang merutekan permintaan untuk aplikasi yang berada di direktori virtual berbeda ke komputer lain di backend.

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 perutean gateway:

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