Concurrency vs.Parallelism 동시성과 병렬성은 현대 시스템 설계에서 성능 최적화의 핵심 개념이다. 동시성은 작업 간 전환을 통해 단일 자원으로 다수 작업을 논리적으로 처리하며, 병렬성은 다중 코어 또는 분산 환경에서 여러 작업을 실제 동시에 실행해 처리량을 극대화한다. 두 개념은 멀티스레딩, 비동기 I/O, GPU 병렬 처리, 분산 시스템 등 다양한 분야에서 상호 보완적으로 사용되며, 시스템의 응답성, 확장성, 자원 효율성을 크게 향상시킨다.
등장 배경 및 발전 과정 시기 기술 발전 흐름 주요 내용 요약 1950~1960 년대 초기 컴퓨팅 구조 - 단일 프로그램 실행 환경 (batch processing)
- CPU 유휴 시간 발생, 자원 활용 비효율성 문제 대두 1960 년대 중후반 시분할 시스템 및 멀티프로그래밍 도입 - Multiprogramming: 여러 작업을 메모리에 상주시켜 CPU 활용 극대화
- Time-Sharing System: 사용자 간 자원 공유 지원 1970~1980 년대 멀티태스킹 운영체제, GUI 시대 개막 - Preemptive Scheduling 기반의 멀티태스킹 OS 등장
- 사용자 인터페이스가 GUI 로 진화하며, 백그라운드 동작 (Concurrency) 중요성 증가 1990 년대 네트워크 기반 시스템 확산 - 클라이언트 - 서버 구조 확산
- 웹 서비스 및 이벤트 처리 요구 증가
- 스레드 기반 모델 활성화 2000 년대 초반 멀티코어 프로세서 상용화 - Dual/Quad Core CPU 등장
- 병렬 처리를 위한 물리적 인프라 확보
- 멀티스레딩의 하드웨어적 기반 제공 2010 년대 이후 클라우드, 분산 시스템, 비동기 모델 확산 - Cloud-native 시스템 확산
- 대규모 데이터 처리, 이벤트 기반 아키텍처 필요성 증가
- Async/Await, Reactive, Actor Model 도입 2020 년대~현재 AI, IoT, 엣지 컴퓨팅 시대 - 병렬화 가능한 작업 증가 (딥러닝, 센서 데이터 등)
- GPGPU 병렬 처리, 서버리스 기반 동시성 처리 활용 확대 Concurrency 의 필요성은 CPU 의 유휴 자원 방지와 사용자 응답성 확보에서 출발했으며, 멀티태스킹 OS, GUI 환경, 네트워크 서비스로 이어지며 발전했다. Parallelism 의 발전은 물리적 제약 (CPU 단일코어) 의 극복을 위한 하드웨어 진보 (멀티코어, GPU) 와 맞물려 성능 향상을 목적으로 발전해왔다. 최근에는 클라우드, 분산 시스템, AI/ML, IoT 환경의 확산으로 병렬성과 동시성을 동시에 활용하는 설계가 일반화되었다. 특히, 비동기 처리 모델(Promise, async/await, Rx, coroutine 등) 과 Actor Model, Dataflow 등의 설계 패턴은 실시간성과 확장성을 동시에 요구하는 현대 시스템에서 핵심 기술로 자리잡고 있다. 목적 및 필요성 성능 향상 및 처리량 극대화
...