Inkomend & Uitgaand als afzonderlijke verzamelingen
Tweedelige grafen in netwerkarchitectuur
Een tweedelige graaf verdeelt knopen in twee verzamelingen, waarbij randen alleen tussen de verzamelingen zijn toegestaan (nooit binnen één verzameling).
Netwerkgrenzen hebben een natuurlijke tweedelige structuur:
- Ingress-kant: externe clients aan de ene kant, interne services aan de andere kant. Randen: externe aanvragen die binnenkomen, interne antwoorden die naar buiten gaan.
- Egress-zijde: interne services aan de ene kant, externe bestemmingen aan de andere kant. Randen: interne services die uitgaande oproepen initiëren, externe antwoorden die terugkomen.
De asymmetrie:
- Ingress: de bronverzameling is onbegrensd (iedereen op het internet). De bestemmingsverzameling is klein (een paar services). Het volume schaalt met het aantal gebruikers.
- Egress: de bronverzameling is klein (een paar interne services). De bestemmingsverzameling is begrensd (een paar bekende partners). Het volume schaalt met de interne activiteit.
Eenbakontwerp (single-box design) vouwt beide tweedelige (bipartite) helften samen via één node. Die node heeft fan-in van buitenaf (ingress) EN fan-in van binnenuit (de omgekeerde richting van egress). De belasting van de node = som van beide kanten.
Gesplitst ontwerp (split design) behoudt beide tweedelige (bipartite) helften op aparte nodes. Elke node verwerkt één rol met de bijbehorende schaalingsas.
Vóór de splitsing: Een knooppunt overal
Eén vakje: Eén knooppunt houdt alles vast
Vóór de splitsing zit er één proxy-doos tussen elk extern/intern paar. In grafische termen is dit een snijpunt van hoge graad: het verwijderen ervan verbreekt alle clients van alle backends EN alle interne services van alle externe partners.
Verbinding op deze knoop = 1. Wat dan ook deze knoop verstoort (procescrash, netwerkstoring, OOM-kill) verbreekt elk afhankelijk pad.
Na de Splitsing: Snijpunt Vervangen door Twee Lichtere Knopen
Het splitsen in ingress + egress creëert twee grafknopen waar er er één was. Elke knoop zit nu op slechts één tweedelige helft:
- Ingress-knoop: snijpunt voor de tweedelige helft van externe-clients-naar-interne-services
- Egress-knoop: snijpunt voor de tweedelige helft van interne-services-naar-partners
De haarspeldlus verdwijnt geometrisch: in de graf met één doos vereiste een interne service die via het openbare adres probeert te bereiken een externe-facing service, het doorlopen van dezelfde knoop twee keer (uit via de egressrol, dan in via de ingressrol). In de gesplitste graf raakt de doorloop twee verschillende knopen.
De verbinding per kant blijft op 1, maar de twee snijpunten kunnen onafhankelijk worden vervangen. Het toevoegen van een tweede ingress-proxy verhoogt de verbinding aan de ingress-kant naar 2 zonder de egress-kant te veranderen.
Replicatie per kant
Productievlootten draaien vaak 2+ ingress-proxies (HA) EN 2+ egress-proxies (HA). Elke kant bereikt connectiviteit 2 onafhankelijk. De capaciteit schaalt horizontaal per kant naar behoefte.
Netwerkpartitietolerantie
Synthese
Je kunt nu netwerkaritecturen lezen als bipartiete grafen, knipknopen identificeren & verbinding per helft bijhouden.
Pas dit toe op netwerkpartities.
Een netwerkpartitie is een graafkniip: kanten over de partitie falen; beide zijden blijven werken, maar kunnen elkaar niet bereiken.
Een geografisch gedistribueerd systeem heeft twee datacenters die verbonden zijn via één inter-DC-koppeling. Inkomend verkeer komt binnen via DC1; uitgaand verkeer gaat via DC1 naar externe partners; sommige interne services bevinden zich in DC2 & roepen terug naar DC1 voor stateful operaties.
Begeleidende notities
Begeleidende notities
Deze les over geometrie herformuleert de hoofdlees Ingress & Egress Separation als een analyse van een bipartiete graaf.
De volgende begeleidend, geometry_of_failure_modes_and_blast_radius, leidt tussenheidscentraliteit af (identificeert knelpuntknooppunten) & min-cut (beperkt de blast radius).
Goed gedaan.