그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Concurrency
Concurrency

동시성과 병렬성에 대해 설명해 주세요.

실무4/5
설계4/5
인간3/5
기초4/5

면접관의 질문 의도

두 단어를 "비슷한 거 아니냐"로 묶는지, 아니면 구조 vs 실행의 차이와 CPU/I/O 바운드별 적정 모델까지 풀 수 있는지를 가른다.

큐레이션 답변

학습 자료

동시성은 "여러 일을 같이 다루는 능력"이다. 단일 코어에서도 컨텍스트 스위칭이나 이벤트 루프로 여러 작업을 번갈아 진행해 사용자에겐 동시에 처리되는 것처럼 보이게 한다. 응답성·자원 활용도가 강점이다. 병렬성은 "실제로 같은 순간에 여러 작업을 수행"하는 것으로, 여러 코어가 있어야 가능하다. 처리량(throughput) 향상이 강점이다. 정리하면 동시성은 구조(어떻게 진행 흐름을 나누느냐)이고, 병렬성은 실행(같은 시점에 몇 개가 도느냐)이다. 둘은 양자택일이 아니라 동시성 위에 병렬성을 얹는 식으로 같이 간다.

좋은 답변 구조

  1. 01동시성은 "같이 다루는 구조", 병렬성은 "같은 시점에 수행하는 실행"이라는 핵심 차이로 출발한다
  2. 02단일 코어에서도 동시성이 가능하지만 병렬성은 불가능한 점을 예시로 든다
  3. 03CPU 바운드·I/O 바운드 작업에서 각각 어느 쪽이 효과적인지 분기로 설명한다
  4. 04동시성 위에 병렬성을 얹는 실무 모델(스레드 풀, 이벤트 루프 + 워커)로 마무리한다

자주 실수하는 포인트

동시성과 병렬성을 같은 의미로 묶어 "다중 스레드 = 병렬"로 설명한다
비동기 코드를 무조건 "빠른 코드"로 단정한다
CPU 바운드 작업에 스레드를 더 던지면 항상 빨라진다고 단정한다
코어 수를 늘리면 락 경합·동기화 비용 없이 자동으로 처리량이 오른다고 가정한다

실무 맥락

  • Node 이벤트 루프에서 I/O 동시성으로 처리량을 끌어올리되 CPU 바운드 작업은 워커 스레드로 빼는 백엔드
  • JVM 환경에서 짧은 I/O 요청은 가상 스레드/Reactor로 풀고, 무거운 연산은 별도 스레드 풀에 보내는 시스템
  • CPU 바운드 데이터 처리가 많아 멀티 코어 + 작업 분할(병렬)로 시간 단축이 필요한 배치

본인 경험에 녹이는 힌트

I/O 동시성으로는 풀리지 않는 CPU 바운드 작업을 워커/스레드 풀로 옮겨 풀어 본 경험이 있다면 "동시성과 병렬성을 같이 얹는다"는 사례로 보여 줄 수 있다

비동기로 바꿨는데도 응답이 안 빨라진 경험이 있다면 "병목이 사실은 CPU였다"는 이야기로 풀어낼 수 있다

코어 수를 늘렸는데 락 경합 때문에 처리량이 그대로였던 경험이 있다면 "병렬성의 천장은 동기화 비용"이라는 일반화로 이어갈 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1CPU 바운드와 I/O 바운드 작업에서 각각 어떤 동시성 모델이 유리한가요
Q2동시성 환경에서 데드락·레이스 컨디션은 어떻게 줄이나요
Q3병렬 처리의 동기화 오버헤드는 어떻게 측정하나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문