English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

게스트
1 / ?
수업 목록으로

입력 및 출력을 서로 다른 집합으로

네트워크 아키텍처에서의 이분 그래프

이분 그래프는 노드를 두 개의 집합으로 나누며, 엣지는 오직 집합 간에만 허용됩니다(같은 집합 내에서는 허용되지 않음).

네트워크 경계에는 자연스러운 이분 구조가 있습니다:

- 입구 측: 한쪽에는 외부 클라이언트, 다른 쪽에는 내부 서비스가 위치합니다. 엣지: 들어오는 외부 요청, 나가는 내부 응답.

- Egress 측: 한쪽에는 내부 서비스, 다른 쪽에는 외부 대상이 있습니다. 엣지: 내부 서비스가 시작하는 아웃바운드 호출, 그리고 돌아오는 외부 응답.

비대칭성:

- Ingress: 소스 집합은 무한정입니다(인터넷의 누구나). 대상 집합은 작습니다(몇 개의 서비스). 볼륨은 사용자 수에 따라 확장됩니다.

- Egress: 소스 집합은 작습니다(몇 개의 내부 서비스). 대상 집합은 유한합니다(몇 개의 알려진 파트너). 볼륨은 내부 활동에 따라 확장됩니다.

단일 박스 설계는 하나의 노드를 통해 이분 그래프의 양쪽을 모두 통합합니다. 해당 노드는 외부에서 들어오는 팬인(ingress)과 내부에서 들어오는 팬인(egress의 역방향)을 모두 가집니다. 노드의 부하 = 양쪽의 합계.

분리 설계는 이분 그래프의 양쪽을 별도의 노드에 유지합니다. 각 노드는 적절한 확장 축을 가진 하나의 역할을 처리합니다.

Bipartite ingress & egress: separate node sets, separate cut vertices

작은 SaaS에 대한 이분 그래프를 그려보세요: 5개의 외부 고객 엔드포인트(요청을 보내는 쪽), 3개의 내부 서비스(백엔드), 그리고 4개의 외부 파트너 API(아웃바운드 호출 대상). 어떤 엣지가 ingress 이분 그래프 반쪽에 속하고 어떤 엣지가 egress 이분 그래프 반쪽에 속하는지 식별하세요. 내부 서비스 중 하나가 실패할 때 그래프 연결성에 어떤 일이 일어나는지 예측해 보세요.

분할 이전: 어디에나 있는 절단 꼭짓점

단일 박스: 모든 것을 지탱하는 하나의 꼭짓점

분할 이전에는 모든 외부/내부 쌍 사이에 단일 프록시 박스가 위치합니다. 그래프 관점에서 이는 고차 컷 정점(cut vertex)입니다: 이 정점을 제거하면 모든 클라이언트가 모든 백엔드와, 모든 내부 서비스가 모든 외부 파트너와 연결이 끊깁니다.

이 노드의 연결성(Connectivity)은 1입니다. 이 노드를 방해하는 모든 것(프로세스 충돌, 네트워크 장애, OOM 킬)은 모든 종속 경로의 연결을 끊습니다.

분할 이후: 컷 정점이 두 개의 가벼운 노드로 대체됨

인그레스(ingress)와 에그레스(egress)로 분할하면 하나였던 그래프 노드가 두 개가 됩니다. 각 노드는 이제 이분 그래프(bipartite)의 한쪽 절반에만 위치합니다:

- 인그레스 노드: 외부 클라이언트에서 내부 서비스로 가는 이분 그래프 절반에 대한 컷 정점

- 에그레스 노드: 내부 서비스에서 파트너로 가는 이분 그래프 절반에 대한 컷 정점

헤어핀 루프(hairpin loop)가 기하학적으로 사라집니다: 단일 박스 그래프에서 내부 서비스가 공개 주소를 통해 외부로 노출되는 서비스에 도달하려면 같은 정점을 두 번 통과해야 했습니다(에그레스 역할로 나가고, 인그레스 역할로 들어옴). 분할된 그래프에서는 이 경위가 두 개의 서로 다른 정점을 통과합니다.

각 측면의 연결성은 여전히 1이지만, 두 개의 컷 정점은 독립적으로 대체될 수 있습니다. 두 번째 인그레스 프록시를 추가하면 에그레스 측면을 변경하지 않고 인그레스 측면의 연결성을 2로 높일 수 있습니다.

측면별 복제

생산 환경 플릿은 종종 2개 이상의 인그레스 프록시(HA)와 2개 이상의 에그레스 프록시(HA)를 실행합니다. 각 측면은 독립적으로 연결성 2를 달성합니다. 용량은 필요에 따라 각 측면에서 수평적으로 확장됩니다.

한 팀이 현재 하나의 프록시 박스(양방향 모두에 대한 단일 절단 정점)를 실행하고 있습니다. 이를 인그레스 1개와 에그레스 1개로 분리한 후, 나중에 두 번째 인그레스(HA 페어)를 추가하지만 단일 에그레스를 유지합니다. 각 단계에서 그래프 연결성이 어떻게 변화하는지 단계별로 추적하고, 3단계 이후에도 여전히 1-연결된 이분 그래프의 절반(따라서 여전히 가장 낮은 내성의 장애 모드인 부분)을 식별하십시오.

네트워크 분할 내성

종합

이제 네트워크 아키텍처를 이분 그래프로 읽고, 절단 꼭짓점을 식별하며, 각 절반에 대한 연결성을 추적할 수 있습니다.

이 개념을 네트워크 분할에 적용해 보겠습니다.

네트워크 분할은 그래프 절단입니다: 분할을 가로지르는 엣지가 실패하며, 양쪽은 계속 작동하지만 서로에 도달할 수 없습니다.

지리적으로 분산된 시스템에는 단일 DC 간 링크로 연결된 두 개의 데이터센터가 있습니다. 유입 트래픽은 DC1을 통해 들어오며, 유출 트래픽은 외부 파트너로 향하기 위해 DC1을 경유합니다. 일부 내부 서비스는 DC2에 위치하며, 상태 유지(stateful) 작업을 위해 DC1로 콜백을 수행합니다.

DC 간 링크가 실패할 경우 다음을 예측해 보세요: (1) 각 DC 내에서 이분 그래프의 어떤 절반이 연결 상태를 유지하는지, (2) 어떤 트래픽 플로우가 계속되고 어떤 것이 중단되는지, (3) 시스템이 완전한 장애가 아닌 제한된 성능 저하로 이 분할을 견디도록 하는 아키텍처 변경 사항을 하나 제안해 보세요.

동반 노트

동반 노트

이 기하학 수업은 Ingress & Egress Separation 메인 수업을 이분 그래프 분석으로 재구성합니다.

다음 동반 수업인 geometry_of_failure_modes_and_blast_radius에서는 betweenness centrality(병목 노드 식별)와 min-cut(영향 범위 상한 설정)를 유도합니다.

잘 하셨습니다.