Files
2nd/10_Wiki/Topics/02_Architecture_Principles/Distributed Computing.md
T
2026-05-02 16:24:15 +09:00

74 lines
11 KiB
Markdown

---
id: P-REINFORCE-WIKI-C20FFA20
category: "10_Wiki/💡 Topics/02_Architecture_Principles"
confidence_score: 0.95
tags: ['distributed-computing', 'space-based-architecture-pattern', 'peer-to-peer-architecture-pattern', 'microservices-architecture-pattern', 'broker-architecture-pattern', 'architecture-principles']
last_reinforced: 2026-05-02
---
# [[Distributed Computing]]
## 📌 Brief 시 Summary
소프트웨어 아키텍처는 크게 모놀리식(Monolithic) 아키텍처와 분산 아키텍처(Distributed Architecture) 두 가지 주요 유형으로 분류된다 [1]. 분산 컴퓨팅 패턴은 데이터 처리와 저장, 그리고 애플리케이션의 워크로드를 여러 대의 서버나 노드로 분할하여 처리하는 구조를 말한다 [2], [3]. 공간 기반 아키텍처(Space-based Architecture), 마이크로서비스, 클라이언트-서버, P2P, 브로커 패턴 등 다양한 아키텍처 패턴이 이러한 분산 컴퓨팅의 원리를 기반으로 설계되어 대규모 트래픽, 동시성 및 확장성 문제를 해결하는 데 사용된다 [2], [4], [5], [6], [7].
## 📖 Core Content
* **분산 컴퓨팅 기반의 주요 아키텍처 패턴**
* **공간 기반 아키텍처 (Space-Based Architecture):** 클라우드 기반 또는 튜플 공간 아키텍처라고도 불리며, 여러 인스턴스에 애플리케이션 워크로드를 분산시켜 높은 트래픽과 확장성 문제를 해결하는 분산 컴퓨팅 패턴이다 [2]. 중앙 데이터베이스 병목 현상을 피하기 위해 여러 서버의 RAM에 데이터를 저장하는 인메모리 데이터 그리드(IMDG)를 활용하여 노드 간 데이터를 효율적으로 공유한다 [8].
* **클라이언트-서버 및 피어-투-피어 (P2P):** 클라이언트-서버 패턴은 자원과 데이터 관리를 중앙 서버가 담당하고 여러 클라이언트가 네트워크를 통해 이에 분산 접속하는 구조다 [5], [9]. 반면, 탈중앙화된 피어-투-피어(P2P) 아키텍처는 모든 노드(피어)가 동등한 권한을 갖고 클라이언트와 서버 역할을 동시에 수행하며, 중앙 서버 없이 서로 직접 자원을 공유하는 분산 네트워크 모델이다 [10], [7].
* **마이크로서비스 아키텍처 (Microservices Architecture):** 거대한 단일 애플리케이션을 작고 독립적으로 배포 가능한 개별 서비스들의 집합으로 분할하는 패턴이다 [4], [11]. 각 서비스는 분산된 환경에서 자체 프로세스를 실행하며 API와 같은 가벼운 메커니즘을 통해 상호 통신한다 [12], [11].
* **브로커 및 마스터-슬레이브 패턴:** 브로커(Broker) 아키텍처는 분산 시스템 내에서 분리된 컴포넌트 간의 통신과 조정을 중앙 브로커가 관리하여 유연성을 높인다 [13], [6]. 마스터-슬레이브(Master-Slave) 아키텍처는 분산 컴퓨팅 환경에서 마스터 컴포넌트가 여러 슬레이브 컴포넌트에 작업을 분배하고 병렬 처리 및 부하 분산을 수행하도록 돕는 패턴이다 [14], [15].
## ⚖️ Trade-offs & Caveats
* **강력한 확장성과 고가용성 (장점):** 분산 컴퓨팅을 활용하는 아키텍처는 수요에 따라 독립적인 서비스나 노드를 수평적으로 추가하여 유기적인 확장이 가능하다 [2], [16], [17]. 또한, 분산된 노드들이 작업을 나누어 처리하므로 단일 장애점(SPOF)을 제거하거나 최소화하여 시스템의 내결함성(Fault Tolerance)과 회복 탄력성을 극대화할 수 있다 [10], [6].
* **복잡한 분산 운영 및 디버깅 (단점):** 분산 시스템을 설계, 구현, 관리하는 것은 단일(Monolithic) 시스템보다 기하급수적으로 복잡하다 [18], [17]. 독립적인 서비스들 간의 복잡한 상호작용으로 인해 분산 작업의 흐름을 이해하고 문제를 추적, 디버깅하는 것이 매우 어렵다 [19], [20], [21].
* **네트워크 지연과 데이터 일관성 한계 (단점):** 분산된 컴포넌트 및 서비스 간의 통신은 네트워크를 경유해야 하므로 네트워크 지연(Latency)과 데이터 전송 오버헤드가 발생한다 [20], [22], [17]. 또한 각 서비스나 노드가 자체 데이터를 가질 경우, 강한 일관성(ACID)을 유지하기 어려우며 최종 일관성(Eventual Consistency) 모델이나 Saga 패턴 같은 복잡한 트랜잭션 관리를 도입해야 하는 제약이 따른다 [23], [21], [24].
* **분산 컴퓨팅의 오류 위험:** 이벤트 기반 설계 등 분산 컴퓨팅의 원리를 따르는 아키텍처는 네트워크가 항상 신뢰할 수 있다고 가정하는 등의 '분산 컴퓨팅의 오류(Fallacies of distributed computing)'에 취약하며, 이러한 잘못된 가정은 소프트웨어 구현 및 배포 시 심각한 문제를 초래할 수 있다 [25].
## 🔗 Knowledge Connections
### Related Concepts
#### [분산 시스템 아키텍처 패턴]
* [[Space-based Architecture Pattern]]
* 연결 이유: 고부하 분산 처리를 위해 중앙 데이터베이스를 배제하고 메모리 공간을 공유하는 가장 대표적인 분산 컴퓨팅 패턴이기 때문이다 [2], [26].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 분산 시스템에서 데이터베이스 병목을 회피하기 위한 인메모리 데이터 그리드(IMDG)의 원리와 높은 트래픽 환경에서의 수평적 확장 방법 [8], [27].
* [[Peer-to-Peer Architecture Pattern]]
* 연결 이유: 클라이언트-서버와 대비되는 극단적인 분산 네트워크 형태로, 모든 노드가 서버이자 클라이언트 역할을 분담하기 때문이다 [10], [28].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 중앙 통제 없이 네트워크의 참여자가 늘어날수록 컴퓨팅 자원과 확장성이 증가하는 유기적 확장성과 탈중앙화 시스템의 결함 허용성 [10], [29].
* [[Microservices Architecture Pattern]]
* 연결 이유: 현대 소프트웨어 생태계에서 분산 컴퓨팅 패러다임을 비즈니스 애플리케이션 구조로 가장 흔히 구체화한 아키텍처 패턴이기 때문이다 [4], [11].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 분산된 개별 서비스들이 어떻게 독립적인 배포 파이프라인을 가지고 동작하며, 분산 트랜잭션(Saga 등)이나 분산 쿼리를 어떻게 조율하는지에 대한 실무적 해결책 [4], [24].
#### [분산 환경의 통신 및 제어 구조]
* [[Broker Architecture Pattern]]
* 연결 이유: 분리된 컴포넌트 간의 분산된 요청과 메시징을 연결하고 라우팅해 주는 중앙 조정 역할을 수행하기 때문이다 [13], [6].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 마이크로서비스 또는 이벤트 기반 분산 시스템에서 결합도를 낮추고 비동기 메시지 기반의 통신을 가능하게 하는 네트워크 미들웨어의 작동 원리 [30], [6].
* [[Master-Slave Architecture Pattern]]
* 연결 이유: 분산 컴퓨팅 시스템에서 워크로드 분산과 병렬 처리, 데이터 복제를 구현할 때 널리 쓰이는 기본 아키텍처이기 때문이다 [31], [15].
* 이 개념을 통해 더 깊게 이해할 수 있는 부분: 중앙 조정자(마스터)를 통해 하위 노드(슬레이브)에 작업을 동시 할당함으로써 성능과 신뢰성을 향상시키는 방법 [31], [32].
### Deeper Research Questions
* 마이크로서비스나 공간 기반 아키텍처 같은 분산 컴퓨팅 환경에서 데이터 무결성을 유지하기 위해 ACID 트랜잭션 대신 활용되는 최종 일관성(Eventual Consistency)과 Saga 패턴의 구체적인 작동 원리와 그 한계는 무엇인가? [21], [24]
* 분산 환경 내의 독립적인 서비스들 간 통신을 위해 적용되는 브로커(Broker)와 메디에이터(Mediator) 토폴로지는 시스템의 결합도와 성능 최적화에 어떠한 트레이드오프를 발생시키는가? [33], [34]
* 이벤트 기반 아키텍처를 도입할 때 마주하게 되는 '분산 컴퓨팅의 오류(Fallacies of Distributed Computing)'는 소프트웨어 엔지니어링 과정에서 어떠한 설계적 부채나 장애로 이어질 수 있는가? [25]
* P2P(Peer-to-Peer) 분산 네트워크 아키텍처는 클라이언트-서버 모델이 가지는 갑작스러운 부하(High Load) 문제를 어떤 유기적인 자원 공유 메커니즘을 통해 해결하는가? [35], [36]
* 네트워크 지연과 서비스 간의 통신 복잡성이 존재하는 분산 마이크로서비스 아키텍처에서, 분산 트레이싱(Distributed Tracing) 및 시스템 가시성(Observability)을 확보하기 위한 최적의 방안은 무엇인가? [37], [38]
### Practical Application Contexts
* **Implementation:** 애플리케이션을 구현할 때, 단일 코드베이스가 아닌 네트워크를 통해 통신하는 여러 개의 모듈이나 서비스로 작업을 분할하고 비동기 메시징 및 원격 프로시저 호출(RPC)을 적용하여 분산 환경을 구축한다 [4], [13].
* **System Design:** 시스템 디자인 시 폭발적인 사용자 트래픽이나 높은 데이터 처리량이 예상될 때, 모놀리식 구조의 한계를 벗어나고자 마이크로서비스, P2P, 또는 공간 기반 아키텍처와 같은 분산 컴퓨팅 패턴을 전략적으로 채택해야 한다 [2], [39].
* **Operation / Maintenance:** 개별 분산 컴포넌트의 유연한 확장은 가능하지만, 수많은 노드나 서비스 간 통신 장애 시 디버깅이 어렵기 때문에 중앙 집중형 로깅, 분산 추적, 그리고 서비스 메쉬(Service Mesh) 등 고도화된 운영/모니터링 체계가 필수적이다 [37], [40].
* **Learning Path:** 소프트웨어 아키텍처 학습에 있어서, 초기의 단일(Monolithic) 또는 계층형 아키텍처를 이해한 뒤, 이들이 분산 시스템으로 분리되면서 겪는 상태 관리, 통신 패턴, 그리고 데이터 일관성의 난제들을 학습하는 심화 과정으로 이어진다 [24], [1].
* **My Project Relevance:** '아키텍처 패턴 지식'을 탐구함에 있어, 시스템의 확장성 및 대규모 동시성 처리를 위해 분산 컴퓨팅 개념이 적용된 아키텍처(EDA, MSA, Space-based 등)가 어떻게 시스템 설계의 트레이드오프(성능 vs 복잡도)를 결정하는지 핵심 지식으로 활용해야 한다 [41], [42].
### Adjacent Topics
* [[Event-Driven Architecture]]
* 확장 방향: 분산 컴퓨팅 시스템 내에서 개별 컴포넌트나 노드들이 강하게 결합되지 않도록, 비동기적인 '이벤트'를 매개체로 하여 통신하고 반응하는 구조적 접근법으로 조사를 확장할 수 있다 [43], [44].
* [[Serverless Architecture]]
* 확장 방향: 분산된 인프라(서버)의 관리 책임 자체를 클라우드 제공자에게 위임하고, 필요할 때마다 동적으로 컴퓨팅 자원을 할당받아 작은 기능(Function) 단위로 실행하는 차세대 클라우드 분산 아키텍처 기술로 연결해 알아볼 수 있다 [45], [46].
---
*Last updated: 2026-05-02*