Interview
concurrency(동시성)와 parallelism(병렬성)의 차이
DevOps Engineer
2025. 3. 24. 00:03
728x90
구분 | Concurrency (동시성) | Parallelism (병렬성) |
정의 | 여러 작업을 번갈아 가며 처리 | 여러 작업을 동시에 처리 |
목적 | 효율적인 자원 사용 | 빠른 실행 속도 |
실행 방식 | 한 번에 하나만 실행되지만 빠르게 전환 | 진짜 동시에 여러 개 실행 |
전제 조건 | 하나의 CPU 코어로도 가능 | 둘 이상의 CPU 코어 필요 |
예시 | 바텐더가 여러 고객을 순차 처리 | 바텐더 3명이 각자 고객을 동시에 처리 |
🔍 더 구체적으로 비교
✅ 1. Concurrency (동시성)
- 시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 함
- 실제로는 작업을 잘게 쪼개서 빠르게 스위칭
- OS의 스레드 스케줄링, Go의 goroutine, Node.js의 event loop가 대표 예
💡 예시
한 명의 요리사가 여러 요리를 동시에 준비하려고,
A요리를 끓이는 동안 B요리를 자르러 가고, 다시 A로 돌아오는 방식
✅ 2. Parallelism (병렬성)
- 여러 작업을 진짜 동시에 실행
- 일반적으로 멀티코어 CPU에서만 가능
- 병렬 처리를 위한 쓰레드/프로세스를 여러 개 돌림
💡 예시
4명의 요리사가 각각 요리를 동시에 함 → 처리 속도 빠름
🧠 그림으로 이해
# Concurrency (동시성)
[Task A]----| |----| |
[Task B] |----| |----| (순차 스위칭)
# Parallelism (병렬성)
[Task A]----|----|----|----| (CPU1)
[Task B]----|----|----|----| (CPU2)
✅ 함께 쓰이는 경우도 많다
현대 시스템은 보통 둘 다 사용합니다:
- Concurrency → 효율적인 자원 스케줄링 (많은 요청 핸들링)
- Parallelism → 속도 향상 (다중 코어 활용)
예: Go 언어는 goroutine으로 concurrency, GOMAXPROCS로 parallelism
📌 예시로 정리
예시 | 동시성? | 병렬성? |
웹 서버가 1,000개의 요청을 goroutine으로 처리 | ✅ | ✅ (CPU가 여러 개일 경우) |
싱글 스레드 Node.js가 여러 파일 I/O 처리 | ✅ | ❌ |
멀티코어 머신에서 동영상 인코딩을 병렬 수행 | ❌ | ✅ |
✅ 정리
핵심 포인트 | 설명 |
Concurrency | 여러 작업을 진행 중일 수 있도록 함 (시간 분할) |
Parallelism | 여러 작업을 동시에 실행함 (코어 분할) |
둘의 관계 | 동시성은 논리적, 병렬성은 물리적 |
728x90