기술 면접 단골 질문 ‘동시성과 병렬성’ 간편 정리
동시성(Concurrency)과 병렬성(Parallelism)은 대규모 트래픽과 데이터를 다루는 데 중요한 개념입니다. 많은 기업들이 이 두 기법을 조합하여 높은 성능을 달성하며, 기술 면접에서도 이들 차이에 대한 질문이 많습니다. 이번 글을 통해 개념을 명확히 이해해봅시다.

동시성(Concurrency) 개념 정리
동시성은 하나의 CPU Core만 사용하더라도 빠른 작업 전환(Context Switching)을 통해 여러 작업이 함께 실행되는 것처럼 보이게 만드는 기법입니다. 주로 I/O 작업이 빈번한 환경에서 효과적입니다.
Threading
스레드를 사용하면 한 프로세스 내 여러 흐름을 생성할 수 있습니다. 그러나 스레드 수가 많아질수록 자원 충돌 문제가 발생할 수 있어 조율이 필요합니다.
Async I/O
비동기 I/O는 대기 시간에 CPU가 다른 작업을 처리하도록 하는 방식입니다. Node.js나 Python의 asyncio 등이 예시로, 대규모 요청을 처리하는 데 유리합니다.
병렬성(Parallelism) 개념 정리
병렬성은 여러 개의 CPU 코어 또는 서버에서 동시에 연산을 수행하는 기법으로, 처리 속도를 크게 향상시킵니다.
Multi-Processing
멀티프로세싱은 여러 프로세스를 동시에 실행하여 병렬 처리를 이루는 방식입니다. 독립된 메모리 공간으로 자원 관리가 용이하지만, 프로세스 간 통신에 추가 비용이 소요됩니다.
분산 시스템
여러 서버를 네트워크로 연결하여 작업을 분산 처리하는 아키텍처입니다. 예를 들어 Hadoop이나 Spark가 있습니다.

동시성과 병렬성의 차이점
- 동시성(Concurrency): 단일 CPU에서 빠른 전환으로 여러 작업이 동시에 진행되게 하는 기법.
- 병렬성(Parallelism): 여러 CPU Core 또는 서버에서 실제로 여러 작업이 물리적으로 처리되는 기법.
동시/병렬 처리 예시 살펴보기
웹 서버와 비동기 처리
웹 서버에서는 비동기 I/O와 멀티코어 활용으로 대규모 트래픽을 빠르게 처리합니다.
머신러닝과 병렬 연산
머신러닝에서는 대규모 데이터 연산을 위해 병렬성을 활용해 학습 시간을 단축합니다.
Microservices 아키텍처
Microservices는 여러 작은 서비스로 나누어 동작하며, 병렬성과 동시성을 동시에 활용합니다.
Real-time Data Streaming
실시간 데이터 스트리밍 환경에서는 분산 처리로 빠르게 이벤트를 처리합니다.

정리하며
결론적으로, 동시성(Concurrency)과 병렬성(Parallelism)은 각각 용도에 따라 다르지만 현대 시스템에서는 둘을 함께 적용하여 최적 성능을 추구해야 합니다.
이번 글이 동시성과 병렬성의 개념을 이해하는 데 도움이 되길 바랍니다.
해당 기사는 GPT를 이용하여 요약한 내용입니다.