SMALL
1. 단일 노드 (Single Node)
개념
- 하나의 서버(노드)에서 모든 서비스를 처리하는 구조.
- 예: 웹 서버, DB, API 서버가 한 시스템(물리/가상 머신)에 모두 있는 형태.
구성 예시
[Server 1]
├─ Web Server
├─ Application Server
└─ Database
장점
- 구성이 단순: 설치·운영이 쉽고 초기 세팅이 빠름
- 비용 저렴: 서버 한 대만 필요
- 디버깅 용이: 로그, 자원 모니터링이 한 곳에 집중
단점
- 확장성 부족: 트래픽 증가 시 서버 성능이 한계에 도달
- 장애 시 전체 서비스 중단: 단일 실패 지점(Single Point of Failure)
- 유지보수 어려움: 업데이트나 점검 중에는 서비스 중단 필요
구조적 관점
- 하나의 머신(물리 서버 또는 VM)에서 모든 서비스 컴포넌트(Web, App, DB, Cache 등)가 동작.
- 내부에서 프로세스 간 통신(IPC, Loopback, Localhost)으로 데이터 교환.
- 네트워크 트래픽이 내부 루프백이므로 지연이 거의 없음.
운영 특성
- 자원 공유: CPU, 메모리, 디스크, 네트워크가 모든 서비스 간 공유됨.
- 리소스 경쟁(Resource Contention)이 발생하면 전체 성능에 영향.
- 스케일 업(Scale-up)이 유일한 확장 방법 — 더 좋은 하드웨어로 교체해야 함.
장애 및 복구
- 서버 다운 = 전체 서비스 다운 (SPOF, Single Point of Failure)
- 백업 복구 외에 실시간 복구 불가능.
데이터 일관성
- 단일 DB 인스턴스이므로 ACID 보장이 쉬움.
- 트랜잭션 관리가 단순하며, 분산 트랜잭션 불필요.
요약
단일 노드는 단순하지만 취약하다.
유지보수와 이해는 쉽지만, 운영 환경에서는 위험성이 높다.
2. 다중 노드 (Multi Node)
개념
- 여러 서버(노드)가 각각 역할을 분담하여 서비스를 구성.
- 예: 웹 서버는 여러 대, DB 서버는 별도로 분리.
구성 예시
[Web Server 1] [Web Server 2]
│ │
└────→ [Load Balancer] ←────┘
│
[DB Server]
장점
- 부하 분산(Load Balancing) 가능 → 더 많은 트래픽 처리
- 부분 장애 대응: 일부 노드 다운되어도 서비스 유지 가능
- 성능 향상: 역할 분담으로 병렬 처리 가능
단점
- 구성 복잡: 네트워크, 로드밸런서, 동기화 설정 필요
- 비용 증가: 여러 서버 필요
- 데이터 일관성 관리 어려움 (특히 DB 다중 노드 환경에서)
구조적 관점
- 서비스 역할을 기능별로 분리(Decomposition)
- Web Tier (Nginx, Apache)
- App Tier (Spring, Node.js 등)
- DB Tier (MySQL, Redis 등)
- 각 계층 간에는 TCP/IP 네트워크를 통한 통신 발생.
- 로드밸런서(LB)가 여러 App 서버로 트래픽을 분산.
운영 특성
- 스케일 아웃(Scale-out) 가능: App 서버 수를 수평적으로 늘릴 수 있음.
- Stateless 설계가 중요: 세션 정보를 공유해야 함 (Redis, JWT 등 활용).
- Configuration Drift 문제 발생 가능: 서버 간 설정 불일치로 인한 장애.
장애 및 복구
- 일부 노드 장애는 전체 장애로 이어지지 않음.
- 단, LB 또는 DB 노드가 다운되면 여전히 SPOF가 될 수 있음 → DB 이중화(Master-Slave, Replication) 필요.
데이터 일관성
- 다중 DB 구성 시 Replication Lag(복제 지연), Split-brain 현상 발생 가능.
- CAP 이론 상 일관성(Consistency)과 가용성(Availability) 사이에서 선택 필요.
요약
다중 노드는 확장성과 안정성의 균형 구조이다.
실무 환경에서 가장 일반적으로 사용되는 서비스 아키텍처 형태.
3. 클러스터 (Cluster)
개념
- 여러 노드(서버)가 하나의 시스템처럼 동작하도록 구성한 형태.
- 주로 고가용성(HA), 부하분산(Load Balancing), 확장성(Scalability)을 위해 사용.
- Kubernetes, Hadoop, Cassandra 등이 대표적인 클러스터형 시스템.
구성 예시
[Node1] [Node2] [Node3]
│ │ │
└──> [Cluster Manager] <──┘
장점
- 고가용성: 일부 노드가 다운되어도 서비스 지속 가능
- 자동 확장 / 복구: 클러스터 관리자가 노드 상태 감시 및 조정
- 병렬 처리 성능 우수: 대규모 데이터나 작업 분산 처리에 적합
단점
- 운영 복잡도 높음: 설정, 모니터링, 네트워크 관리 어려움
- 비용 부담 큼: 노드 수 많고 관리 시스템 필요
- 전문 지식 필요: 클러스터링 기술(Kubernetes, Docker Swarm 등)
구조적 관점
- 여러 노드가 하나의 논리적 시스템처럼 동작.
- 분산 컴퓨팅(Distributed Computing) 모델 기반:
- 작업 분할, 데이터 분산 저장, 노드 간 상태 동기화
- 대표 예시:
- Kubernetes 클러스터: 컨테이너 오케스트레이션
- Hadoop/Spark 클러스터: 분산 데이터 처리
- DBMS 클러스터(Cassandra, CockroachDB 등): 분산 저장 및 복제
운영 특성
- Control Plane + Data Plane 구조
- Control Plane: 클러스터 상태 관리, 스케줄링, 오토스케일링
- Data Plane: 실제 워크로드 실행 (Pod, Task 등)
- 자동 복구(Self-healing) 및 오토스케일링(Auto-scaling) 기능 내장
- 노드 간 통신 프로토콜 중요: etcd, gRPC, Raft, Gossip 등
장애 및 복구
- 장애 감지 및 노드 교체 자동화 가능
- Quorum 기반 합의(Consensus)로 데이터 정합성 유지
- Split-brain(노드 간 네트워크 단절 시 복제 충돌) 위험 존재
데이터 일관성
- CAP 이론의 세 특성 중 시스템마다 선택이 다름:
- CP 시스템 (예: Zookeeper) → Consistency + Partition Tolerance
- AP 시스템 (예: Cassandra) → Availability + Partition Tolerance
- 일관성 모델 다양: Strong, Eventual, Causal 등
요약
클러스터는 자율적이고 복원력 높은 분산 시스템이다.
대규모 트래픽·데이터·고가용성을 요구하는 환경에 최적화되어 있다.
4. 비교
| 항목 | 단일 노드 | 다중 노드 | 클러스터 |
| 시스템 구조 | 단일 프로세스/머신 | 계층 분리된 여러 노드 | 분산 노드 통합 제어 |
| 확장 방식 | Scale-up | Scale-out (수평 확장) | Auto-scale (동적 확장) |
| 장애 대응 | 전체 장애 | 일부 장애 허용 | 자동 복구, 자가 치유 |
| 일관성 | 강한 일관성 (ACID) | 중간 수준, 복제 고려 필요 | CAP 기반 분산 일관성 |
| 관리 방식 | 수동 관리 | 반자동 (LB, 스크립트) | 자동 오케스트레이션 (K8s 등) |
| 운영 난이도 | 낮음 | 중간 | 높음 |
| 주요 기술 | 단일 서버 | LB, DB Replication, Redis | Kubernetes, Docker, Hadoop |
| 사용 예시 | 개발/테스트 서버 | 중형 서비스 | 클라우드, 데이터센터, AI 시스템 |
5. 개념 요약
확장성(Scalability)
- Scale-up: 단일 노드에서 하드웨어 성능 향상
- Scale-out: 다중/클러스터에서 노드 수 확장
- 클러스터에서는 Auto-scaling을 통해 동적으로 확장 가능
가용성(Availability)
- 단일 노드: 서버 장애 = 전체 서비스 중단
- 다중 노드: 일부 장애 허용, LB로 트래픽 분산
- 클러스터: 자동 감지 및 Self-healing으로 높은 가용성 확보
CAP 이론
| 요소 | 설명 |
| Consistency | 모든 노드가 동일한 데이터 상태 유지 |
| Availability | 일부 노드 장애 시에도 응답 가능 |
| Partition Tolerance | 네트워크 단절 시에도 시스템 일부 동작 가능 |
- 단일 노드: C + A 가능
- 다중 노드/클러스터: P를 고려해야 하므로 C와 A 중 선택 필요
장애 복구(Recovery Mechanism)
| 구조 | 복구 방식 | 예시 |
| 단일 노드 | 수동 재시작, 백업 복원 | 수동 OS 재부팅 |
| 다중 노드 | 헬스체크, Failover 스크립트 | Load Balancer, Keepalived |
| 클러스터 | 자동 복구(Self-Healing) | Kubernetes Controller, HA 시스템 |
운영 및 오케스트레이션
- 단일 노드: 직접 배포 및 수동 관리
- 다중 노드: Ansible, Terraform 등 자동 배포
- 클러스터: Kubernetes, Docker Swarm으로 자동화 관리
6. 사용 사례
| 환경 | 실제 예시 | 설명 |
| 단일 노드 | 개인 블로그, 내부 테스트 서버 | 단순 웹 서비스나 초기 MVP |
| 다중 노드 | 스타트업 서비스, 전자상거래 | LB + App 다중화 + DB 복제 구조 |
| 클러스터 | 대형 포털, 클라우드, AI 시스템 | Kubernetes 기반 자동 확장 및 분산 처리 |
7. 결론
단일 노드 → 다중 노드 → 클러스터로 발전할수록
단순성은 줄고 복잡성은 증가하지만,
가용성, 확장성, 안정성은 기하급수적으로 향상된다.
'시스템 구조' 카테고리의 다른 글
| Boot Loader 정리 (0) | 2025.11.10 |
|---|