Inbound & Outbound sebagai Himpunan yang Berbeda
Graf Bipartit dalam Arsitektur Jaringan
Sebuah graf bipartit membagi simpul menjadi dua himpunan, dengan sisi hanya diizinkan antara himpunan (tidak pernah di dalam satu himpunan).
Batas jaringan memiliki struktur bipartit alami:
- Sisi ingress: klien eksternal di satu sisi, layanan internal di sisi lain. Sisi: permintaan eksternal yang masuk, respons internal yang keluar.
- Sisi egress: layanan internal di satu sisi, tujuan eksternal di sisi lain. Sisi (edges): layanan internal yang memulai panggilan keluar, respons eksternal yang kembali.
Asimetri:
- Ingress: himpunan sumber tidak terbatas (siapa pun di internet). Himpunan tujuan kecil (beberapa layanan). Volume berskala dengan pengguna.
- Egress: himpunan sumber kecil (beberapa layanan internal). Himpunan tujuan terbatas (beberapa mitra yang diketahui). Volume berskala dengan aktivitas internal.
Desain kotak tunggal meruntuhkan kedua belahan bipartit melalui satu node. Node tersebut memiliki fan-in dari luar (ingress) DAN fan-in dari dalam (arah terbalik egress). Beban node = jumlah dari kedua sisi.
Desain terpisah mempertahankan kedua belahan bipartit di node terpisah. Setiap node menangani satu peran dengan sumbu penskalaan yang sesuai.
Sebelum Terpisah: Vertex Potong di Mana-Mana
Kotak Tunggal: Satu Vertex Menahan Segalanya
Sebelum pemisahan, satu kotak proxy tunggal berada di antara setiap pasangan eksternal/internal. Dalam istilah graf, ini adalah vertex pemotong (cut vertex) berorde tinggi: penghapusannya memutus semua klien dari semua backend DAN semua layanan internal dari semua mitra eksternal.
Konektivitas pada node ini = 1. Apa pun yang mengganggu node ini (crash proses, gangguan jaringan, OOM kill) akan memutus setiap jalur yang bergantung.
Setelah Pemisahan: Vertex Pemotong Diganti oleh Dua Node yang Lebih Ringan
Pemisahan menjadi ingress + egress menciptakan dua node graf di tempat sebelumnya hanya ada satu. Setiap node kini hanya berada di satu sisi bipartit:
- Node Ingress: vertex pemotong untuk sisi bipartit dari klien eksternal ke layanan internal
- Node Egress: vertex pemotong untuk sisi bipartit dari layanan internal ke mitra
Loop hairpin hilang secara geometris: dalam graf kotak tunggal, layanan internal yang mencoba mencapai layanan yang menghadap eksternal melalui alamat publik memerlukan penelusuran vertex yang sama dua kali (keluar melalui peran egress, lalu masuk melalui peran ingress). Dalam graf yang terpecah, penelusuran tersebut mengenai dua vertex yang berbeda.
Konektivitas per sisi tetap pada 1, tetapi kedua vertex pemotong dapat diganti secara independen. Menambahkan proxy ingress kedua meningkatkan konektivitas sisi ingress menjadi 2 tanpa mengubah sisi egress.
Replikasi per Sisi
Fleet produksi sering menjalankan 2+ proxy ingress (HA) DAN 2+ proxy egress (HA). Setiap sisi mencapai konektivitas 2 secara independen. Kapasitas diskalakan secara horizontal di setiap sisi sesuai kebutuhan.
Toleransi Partisi Jaringan
Sintesis
Anda kini dapat membaca arsitektur jaringan sebagai graf bipartit, mengidentifikasi simpang pemotong (cut vertices), & melacak konektivitas per sisi.
Terapkan ini pada partisi jaringan.
Partisi jaringan adalah pemotongan graf (graph cut): tepi (edges) yang melintasi partisi gagal; kedua sisi tetap beroperasi tetapi tidak dapat saling menjangkau.
Sistem yang didistribusikan secara geografis memiliki dua pusat data (datacenter) yang dihubungkan oleh satu tautan antar-DC (inter-DC link). Lalu lintas masuk (ingress) masuk melalui DC1; lalu lintas keluar (egress) melewati DC1 menuju mitra eksternal; beberapa layanan internal berada di DC2 & memanggil kembali ke DC1 untuk operasi yang berstatus (stateful).
Catatan Pendamping
Catatan Pendamping
Pelajaran geometri ini membingkai ulang pelajaran utama Pemisahan Ingress & Egress sebagai analisis graf bipartit.
Pendamping berikutnya, geometry_of_failure_modes_and_blast_radius, menurunkan sentralitas betweenness (mengidentifikasi node bottleneck) & min-cut (membatasi radius ledakan).
Bagus sekali.