-
concurrency(동시성)와 parallelism(병렬성)의 차이Interview 2025. 3. 24. 00:03728x90
구분 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'Interview' 카테고리의 다른 글
Elasticsearch/OpenSearch 관련 인터뷰 질문 (0) 2025.03.25 go 언어 관련 인터뷰 질문들 (0) 2025.03.24 Error Budget의 개념과 소진 시 대응 방안 (0) 2025.03.18 MTTR(Mean Time to Recovery) 단축 방법 (0) 2025.03.18 Postmortem(사후 분석) 문서를 작성할 때 가장 중요한 요소 (0) 2025.03.18