System Design의 Block Diagram 이해

블록은 시스템 설계, 소프트웨어 아키텍처 및 엔지니어링의 기초 도구입니다. 그들은 복잡한 시스템을 관리 할 수있는 시각적 표현으로 감소, 그것은 쉽게 의존성, 데이터 흐름 및 잠재적 인 스케일링 문제를 식별하는 데 용이하게. 잘 만들어진 블록 다이어그램은 간단한 기하학적 모양을 사용하여 - 조직 또는 하위 시스템을 대표, 관계, 통신 경로, 또는 데이터 움직임을 나타내는 화살표 또는 라인에 의해 연결. 이 명확성은 확장성 및 유연성의 일부로 인해 다른 시스템의 교체를 통해 다른 시스템의 변화에 대한 계획 할 때 필수적입니다.

블록 다이어그램의 아나토믹

각 구획 도표는 3개의 1 차적인 성분을 이루어져 있습니다:

  • Blocks - 특정 기능 단위, 서비스, 또는 하드웨어 구성 요소를 나타냅니다.
  • Connectors - 데이터 흐름, 제어 신호, 물리적 연결 방향을 보여주는 선 또는 화살표.
  • Labels – 각 블록 또는 커넥터를 사용하는 짧은 설명 텍스트, 종종 처리량, 지연, 또는 프로토콜과 같은 중요한 속성을 포함.

이 요소는 omits 구현 세부 사항이 omits에 초점을 맞추기 위해 엔지니어가 시스템 동작] 코드를 대신. 블록 다이어그램 컨벤션에 깊은 다이빙을 위해 Wikipedia의 블록 다이어그램 개요를 참조하십시오.

왜 블록 다이어그램은 확장성 및 유연성을 밀어줍니다.

현대 시스템은 빠르게 성장하는 사용자 기반, 새로운 기능 및 이동 인프라를 수용하기 위해 진화해야합니다. 블록 다이어그램은 생산 문제되기 전에 건축 약점을 탐험함으로써 이것을 달성합니다. 이점은 콘크리트와 저렴합니다.

  • Bottleneck Identification – 블록을 통해 데이터 흐름을 추적함으로써, 당신은 빌드 또는 실패의 단일 지점이 존재하는 곳을 볼 수 있습니다. 이 직접 수평 스윙윙윙 또는 로드 밸런스를 추가하는 확장성 개선을 알려줍니다.
  • Modularity – 느슨하게 결합된 블록을 사용하는 다이어그램은 마이크로서비스 또는 플러그인 아키텍처를 권장합니다. 전체 시스템을 재건축하지 않고, 교체, 업그레이드 또는 스케일 개별 블록을 할 수 있습니다.
  • Granular Scaling – 각 블록이 명확하게 정의된 인터페이스를 가지고 있을 때, 당신은 다른 스케일링 전략을 적용할 수 있습니다 (예를들면, 데이터베이스에 대한 수직 스케일링, 무수한 서비스에 대한 수평). 다이어그램은 블록이 stateless vs. stateful이다.
  • Reconfiguration Readiness – Flexibility는 종종 시스템 내에서 리어 레인지 구성품을 의미한다. 블록 다이어그램은 처리 단계, 캐시를 소개하거나, 모놀리를 나눌 수 있도록 청사진 역할을 한다.

실제 관점에서 AWS Well-Architected Framework는 확장성과 성능 거래의 평가를 위해 건축 다이어그램을 사용하는 것이 좋습니다.

확장성 계획을위한 효과적인 블록 다이어그램 구축 단계

실제로 시스템 디자인을 개선하는 다이어그램을 만들기 위해서는 그림 상자보다 더 필요합니다. 이 구조적 접근법을 따르십시오.

단계 1: Inventory 모든 시스템 구성 요소

모든 기능 구성 요소를 나열하여, 사용자 직면 frontends에서 배경 노동자 및 외부 APIs. Load balancers, 메시지 큐 및 데이터베이스와 같은 인프라 요소를 잊지 마십시오. 기능 분해]를 사용하여 복잡한 하위 시스템을 작고 단일 목적 블록으로 파괴하십시오.

2단계: 상호 작용과 데이터 흐름 정의

각 블록의 경우, 입력이 예상되는 것을 문서와 출력이 생성되는 것을. 이것은 연결 수준을 식별하는 곳입니다. 예를 들어, 블록 B에서 비동기 응답이 필요한 경우, 독립적 인 스케일링을 방해 할 수있는 단단한 커플링을 만듭니다. 요청, 이벤트 또는 데이터 스트림의 흐름을 표시하는 방향 화살표를 사용합니다.

단계 3: Baseline 다이어그램을 그리십시오

버전 및 협업을 지원하는 도구는 다음과 같습니다 diagrams.net (무료, 오픈 소스), Lucidchart], 또는 Draw.io. 논리 레이어의 배열 블록 (예 : 프리젠 테이션, 응용 프로그램, 데이터) 또는 배포 영역 (예 :) (예 :) 또는 (예 :). (예 :), 비공개 네트워크는 분명합니다.

4 단계 : Scaling Boundaries를 식별

기본 다이어그램으로, 현재 용량 제한이 있는 각 블록을 두 번째, 저장 용량 또는 CPU 활용 당 연결과 같은 표시하십시오. 그런 다음 "비동이 두 배가 발생하면 어떻게됩니까?"고경 블록은 Bottlenecks가됩니다. 이것은 horizontal scaling (더 많은 인스턴스 추가) 또는 vertical scaling] (업그레이딩 하드웨어).

5 단계 : Scalable Future State 설계

두 번째 다이어그램을 작성하여 용량을 개선합니다. 웹 서버의 부하 잔량을 추가하거나 캐싱 레이어를 도입하거나 여러 블록에서 데이터베이스를 sharding 할 수 있습니다. 이 과정을 사기는 유효성 검사하는 두 가지 다이어그램을 비교하면 기존 데이터 흐름을 깰 수 없습니다.

6 단계 : 블록을 재구성하여 Prototype Flexibility

블록이 전체 시스템을 찢어지 않고 스왑 할 수 있는 유연성 요구. 예를 들어, 관계 데이터베이스에서 NoSQL 저장소로 전환하는 세 번째 다이어그램을 그릴 수 있습니다. 커넥터가 유효하다면 아키텍처가 유연합니다. 여러 블록을 다시 그리려면 ]]refactoring candidates를 식별해야합니다.

Real-World Scalability Scenarios에 Block Diagram 적용

E-Commerce Checkout 시스템

체크 아웃 흐름이 인증, 재고 검사, 지불 처리 및 주문 확인을 포함 하는 온라인 상점을 고려. 블록 다이어그램은 메시지 큐에 의해 연결된 분리 블록으로 각 서비스를 표시할 수 있습니다. 블랙 금요일 교통 스파이크 때, 다이어그램은 재고 블록 데이터베이스 연결의 제한된 수를 있다. 솔루션: 추가 복제 및 재고 쿼리의 앞에 캐싱 블록. 다이어그램은이 상호 작용을 명백하게 만들 수 있습니다.

IoT 데이터 Ingestion Pipeline

IoT 시스템에서 센서는 클라우드 게이트웨이에 데이터를 전송합니다. 스트림 프로세서에, 마지막으로 시간 시리즈 데이터베이스에. 블록 다이어그램은 lynchpin로 스트림 프로세서를 보여줍니다. 실패하면 전체 파이프라인 중지. 확장성을 개선하려면, 당신은 수평으로 스트림 프로세서 블록을 스케일 할 수 있습니다 (예 : Apache Kafka 파티션을 사용하여) 버퍼 블록을 추가 (Amazon Kinesis와 같은) 파열을 흡수합니다. 다이어그램은 이러한 변경을 통해 기술자가 아닌 기술자가 아닌 기술적 이해를 돕습니다.

일반적인 실수 및 Them을 방지하는 방법

  • ]다이어그램 – 너무 많은 블록이나 커넥터가 소음을 생성합니다. “하나의 다이어그램, 하나의 관심사”의 원리에 스틱. 확장성, 보안 및 배포 토폴로지용 별도의 다이어그램을 만듭니다.
  • Ignoring State – 블록 홀딩 상태가 흩어지는 결정이 흠뻑 빠르지 않는 표시. Stateful 블록은 특수 핸들링을 사용하며 데이터베이스 복제 또는 배포 캐시를 사용할 수 있습니다.
  • 외국 대응 – 제3자 APIs, 레거시 시스템 및 물리적 인프라는 보이지 않는 블록으로 나타납니다. 항상 실패 모드로 명시된 블록으로 포함.
  • Static Diagrams – 인쇄된 도표는 순간을 체계 변화에 나타낸다. 코드 저장소 (예를들면, ]Structurizr]]]를 통합하는 살아있는 도표로 만드는 공구를 사용하여 C4 모형을 위해 이렇게 도표는 동기화에서 남아 있습니다.

Long-Term 유지 보수를위한 모범 사례

블록 다이어그램을 보장하기 위해 시스템은 성장하고, 이러한 관행을 채택한다.

  • 일관된 표기] - 서비스(rectangles), 데이터 상점(cylinders), 외부 액자(circles)에 대한 모양에 따라 표준. 전설을 포함.
  • Version은 다이어그램을 제어] – 스토어 다이어그램 소스 파일 (예: .drawio, .dslx) 코드를 동일한 저장소에. 이로 인해 리뷰 및 변경 내역을 허용합니다.
  • Automate diagram generation – 큰 시스템의 경우, Mermaid 또는 PlantUML과 같은 텍스트 기반 다이어그램 도구를 사용하면 마크 업에서 다이어그램을 생성합니다. 이 코드가 진실한 때문에 그들을 계속합니다.
  • ]모든 건축 검토]에 대한 검토 다이어그램 검사를 포함해서 새로운 기능이나 사기 이니셔티브를 제안할 때 필수 단계로.

관련 기사

블록은 단순한 문서의 해석이 아닙니다. 이 시스템은 시스템 확장성 및 유연성에 대한 이유로 활동적 도구입니다. 모듈 블록으로 시스템을 파괴함으로써 데이터 흐름을 매핑하고 미래 상태 다이어그램을 통해 이식하고 엔지니어링 팀은 건축 부채를 방지하고 비용을 재작업을 피할 수있는 결정을 알려 줄 수 있습니다. 모든 분은 잠재적 인 스케일링 문제를 처리하는 데 걸리는 시간을 절약합니다. 현재 시스템의 간단한 다이어그램으로 시작하면 한 병, 넥 목 및 확장 가능한 버전이 어떻게 변화시킬 수 있는지 알 수 있습니다.