핵심 인사이트 (3줄 요약)
- 본질: 프로세스 뷰(Process View)는 실행 중인 프로세스와 스레드(Thread)의 동시 동작을 설명하는 동적 설계 관점이다.
- 가치: 경합, 교착 상태, 병목을 미리 보게 해 성능과 안정성을 같이 설계할 수 있다.
- 판단 포인트: 프로세스, 스레드, 동기화, IPC (Inter-Process Communication)를 구분해 부하 기준으로 검증해야 한다.
Ⅰ. 개요 및 필요성
프로세스 뷰(Process View)는 Kruchten의 4+1 View Model에서 실행 시점의 구조를 보여 준다. 정적 다이어그램만으로는 보이지 않는 입출력(I/O, Input/Output) 대기, 자원 경합, 스레드 간 협업을 드러내기 때문에 성능 중심 시스템에서 중요하다.
즉, 이 뷰는 “무엇이 존재하는가”가 아니라 “무엇이 동시에 움직이는가”를 묻는다.
- 📢 섹션 요약 비유: 사람이 많은 복도는 출입문과 동선까지 봐야 이해된다.
Ⅱ. 아키텍처 및 핵심 원리
| 구성 요소 | 역할 | 설계 포인트 |
|---|---|---|
| 프로세스 | 자원 경계와 격리 단위 | 장애 격리 |
| 스레드(Thread) | 실행 흐름 | 공유 상태 경합 |
| 동기화 | 임계 구역 보호 | mutex (mutual exclusion), semaphore |
| IPC (Inter-Process Communication) | 프로세스 간 통신 | 지연과 직렬화 비용 |
| 성능 지표 | 처리량과 응답시간 | 큐 길이, 꼬리 지연 |
┌─────────┐ request ┌──────────────────┐ │ Client │───────▶│ Process A │ └─────────┘ │ ┌────────────┐ │ │ │ Thread Pool │ │ │ └──┬────┬────┘ │ │ │ │ │ │ ┌─▼┐ ┌─▼┐ │ │ │T1│ │T2│ │ │ └─┬┘ └─┬┘ │ │ │ lock │ │ ┌──▼────────┐ │ │ │ Shared │ │ │ │ Queue │ │ │ └──┬────────┘ │ └─────┼───────────┘ ▼ ┌──────────┐ │Database │ └──────────┘
- 📢 섹션 요약 비유: 누가 동시에 움직이고 어디서 막히는지 보는 지도다.
Ⅲ. 비교 및 연결
| 비교 항목 | Process View | Logical View | Development View | Physical View |
|---|---|---|---|---|
| 주 질문 | 동시에 무엇이 실행되는가 | 기능이 무엇인가 | 어떤 모듈로 나뉘는가 | 어디에 배치되는가 |
| 위험 | 경합, 교착, 과부하 | 요구 누락 | 결합도 증가 | 지연, 장애 도메인 |
| 검증 | 부하 테스트, 스레드 덤프 | 시나리오 검토 | 의존성 확인 | 배치 확인 |
Process View는 다른 뷰를 대체하지 않고, 실행 문제를 보완한다.
- 📢 섹션 요약 비유: 정적 설계와 실행 설계는 역할이 다르다.
Ⅳ. 실무 적용 및 기술사 판단
-
스레드 수를 CPU (Central Processing Unit) 코어 수와 단순 1:1로 보지 않는다.
-
공유 상태는 소유자와 수명 주기를 먼저 정한다.
-
입출력(I/O) 대기, 타임아웃, 재시도 정책을 함께 설계한다.
-
부하 테스트에서 평균뿐 아니라 꼬리 지연과 큐 길이를 본다.
-
교착 상태와 기아가 재현되는 시나리오를 만든다.
-
❌ 하나의 거대한 mutex로 전체 요청을 잠그는 설계
-
❌ 블로킹 I/O를 메인 스레드에 그대로 두는 설계
-
❌ 스레드 수만 늘리면 성능이 오른다고 가정하는 태도
-
📢 섹션 요약 비유: 한 줄로 다 잠그면 성능도 같이 묶인다.
Ⅴ. 기대효과 및 결론
프로세스 뷰는 성능 문제를 사후 장애가 아니라 사전 설계 문제로 바꾼다. 동시성 구조를 먼저 모델링해야 병목을 설계 단계에서 줄일 수 있다.
- 📢 섹션 요약 비유: 동시성 그림이 있으면 튜닝이 감이 아니라 근거가 된다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| 프로세스 뷰 | 실행 중 동시성의 전체 그림이다. |
| 스레드 풀 | 요청을 나눠 처리량을 높인다. |
| IPC (Inter-Process Communication) | 프로세스 간 협력 비용을 드러낸다. |
| 동기화 | 공유 자원 보호와 경합 제어를 맡는다. |
| 성능 지표 | 병목이 어디서 생기는지 알려 준다. |
📈 관련 키워드 및 발전 흐름도
요구사항 → 동시성 시나리오 → 프로세스/스레드 분해 → IPC·동기화 설계 → 부하 테스트 → 병목 분석
👶 어린이를 위한 3줄 비유 설명
- 식당에서 손님 동선과 주방 동선을 같이 그려야 안 막힌다.
- 주문표가 여러 사람 손을 거치면, 누가 어디서 기다리는지 알아야 빨라진다.
- 문이 열리는 순서까지 봐야 건물이 덜 막힌다.