두 단어를 "비슷한 거 아니냐"로 묶는지, 아니면 구조 vs 실행의 차이와 CPU/I/O 바운드별 적정 모델까지 풀 수 있는지를 가른다.
동시성은 "여러 일을 같이 다루는 능력"이다. 단일 코어에서도 컨텍스트 스위칭이나 이벤트 루프로 여러 작업을 번갈아 진행해 사용자에겐 동시에 처리되는 것처럼 보이게 한다. 응답성·자원 활용도가 강점이다. 병렬성은 "실제로 같은 순간에 여러 작업을 수행"하는 것으로, 여러 코어가 있어야 가능하다. 처리량(throughput) 향상이 강점이다. 정리하면 동시성은 구조(어떻게 진행 흐름을 나누느냐)이고, 병렬성은 실행(같은 시점에 몇 개가 도느냐)이다. 둘은 양자택일이 아니라 동시성 위에 병렬성을 얹는 식으로 같이 간다.
I/O 동시성으로는 풀리지 않는 CPU 바운드 작업을 워커/스레드 풀로 옮겨 풀어 본 경험이 있다면 "동시성과 병렬성을 같이 얹는다"는 사례로 보여 줄 수 있다
비동기로 바꿨는데도 응답이 안 빨라진 경험이 있다면 "병목이 사실은 CPU였다"는 이야기로 풀어낼 수 있다
코어 수를 늘렸는데 락 경합 때문에 처리량이 그대로였던 경험이 있다면 "병렬성의 천장은 동기화 비용"이라는 일반화로 이어갈 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.