패스잇
CS 기초 · 심화

멀티코어 환경에서 동시성 애플리케이션의 성능을 논할 때, 확장성(scalability)과 처리량(throughput)은 어떤 관계를 가지며, 특정 워크로드에서 이 두 가지 지표를 최대화하기 위한 동시성 설계 전략은 어떻게 달라져야 하는지 구체적인 사례를 들어 설명해 주십시오.

힌트 · 확장성은 더 많은 자원을 추가했을 때 성능이 얼마나 선형적으로 증가하는지를 나타내며, 처리량은 단위 시간당 완료되는 작업의 양입니다. Amdahl의 법칙은 병렬화 가능한 부분의 비율이 확장성에 미치는 영향을 보여주며, 동시성 설계 시 공유 자원 경합을 최소화하고 작업 분할 전략을 최적화해야 합니다.

암달의 법칙병목 현상Lock contention데이터 분할비동기 프로그래밍

모범답안

멀티코어 환경에서 확장성과 처리량은 동시성 애플리케이션 성능의 핵심 지표입니다. 확장성은 코어 수를 늘렸을 때 성능이 얼마나 비례적으로 향상되는지를, 처리량은 단위 시간당 얼마나 많은 작업을 완료하는지를 나타냅니다.

이 둘은 밀접하게 연관되어 있지만, 항상 비례하지는 않습니다. 암달의 법칙에 따르면, 애플리케이션의 순차적인 부분은 아무리 많은 코어를 추가해도 성능 향상에 한계가 있습니다. 따라서 확장성을 높이려면 병렬화 가능한 부분을 최대화해야 합니다.

처리량을 최대화하기 위해서는 공유 자원 경합(Lock contention)을 최소화하고, 작업 분할 전략을 최적화하는 것이 중요합니다. 예를 들어, 데이터베이스 접근 시 락을 최소화하기 위해 읽기/쓰기 분리, 비관적 락 대신 낙관적 락을 사용하거나, 아예 락이 필요 없는 데이터 구조를 사용하는 것을 고려할 수 있습니다.

워크로드에 따라 전략은 달라집니다. CPU 바운드 워크로드에서는 작업 분할을 통해 여러 코어에 작업을 분산시키는 것이 확장성과 처리량 모두에 효과적입니다. 반면 I/O 바운드 워크로드에서는 비동기 프로그래밍을 통해 I/O 대기 시간을 최소화하여 전체 처리량을 높이는 데 집중해야 합니다. 예를 들어, 웹 서버는 수많은 동시 요청을 처리해야 하므로, 논블로킹 I/O와 이벤트 기반 아키텍처를 사용하여 확장성과 처리량을 극대화합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기