Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

병렬 처리 아키텍처란? SMP·MPP·NUMA 핵심 정리

서버 시장에는 크게 세 가지 기본적인 병렬 처리 하드웨어 아키텍처가 존재합니다. 바로 대칭형 멀티프로세싱(SMP), 대규모 병렬 처리(MPP), 그리고 비균등 메모리 아키텍처(NUMA)입니다. 각 아키텍처의 구조와 특징, 장단점을 살펴보겠습니다.

대칭형 멀티프로세싱(SMP)

SMP 아키텍처는 하나의 장치에 여러 개의 프로세서를 탑재하고, 단일 운영체제가 모든 프로세서를 관리하며, 동일한 디스크와 메모리 영역을 공유하는 구조입니다. 8~32개의 프로세서를 갖춘 SMP 머신에 병렬 데이터베이스, 충분한 메모리(2GB 이상), 고성능 디스크, 그리고 잘 설계된 시스템을 갖추면 중간 규모의 데이터 웨어하우스에서도 우수한 성능을 발휘할 수 있습니다.

다만 데이터베이스가 프로세스를 병렬로 실행할 수 있어야 하며, 데이터 웨어하우스 프로세스 역시 병렬 처리 능력을 최대한 활용하도록 설계되어야 합니다. 프로세서는 공유 자원(메모리와 디스크)에 빠르게 접근할 수 있지만, 이러한 자원에 도달하기 위한 통로인 백플레인(backplane)은 시스템이 확장될수록 병목 지점으로 발전할 수 있습니다.

또한 SMP 머신은 하나의 독립된 개체이기 때문에, 데이터 웨어하우스 전체에서 단일 장애점(single point of failure)이 될 수 있다는 약점이 있습니다. 이러한 문제를 극복하기 위해 하드웨어 업체들은 여러 대의 SMP 머신을 서로 연결하는 클러스터링 기술을 개발했습니다.

클러스터 환경에서는 각 노드가 자체 운영체제를 실행하는 SMP 머신이지만, 클러스터 전체는 디스크를 공유하고 장애 조치(fail-over) 백업을 제공할 수 있는 연결 장치와 제어 소프트웨어를 포함합니다. 따라서 한 대의 머신에 장애가 발생하면 클러스터 내 다른 머신이 일시적으로 해당 처리 부담을 대신 맡을 수 있습니다. 물론 이러한 이점에는 대가가 따릅니다. 클러스터링은 매우 복잡하여 관리가 까다로울 수 있으며, 클러스터 전반을 지원하는 데이터베이스 기술은 현재도 지속적으로 발전하고 있습니다.

대규모 병렬 처리(MPP)

MPP 시스템은 상대적으로 독립적인 컴퓨터들이 연결된 형태로, 각 컴퓨터는 자체 운영체제, 메모리, 디스크를 보유하며 메시지를 주고받는 방식으로 상호 조율됩니다. MPP의 가장 큰 강점은 수백 대의 머신 노드를 연결해 하나의 문제에 무차별적(brute-force) 방식으로 투입할 수 있는 능력입니다.

예를 들어 대용량 테이블에 대한 전체 테이블 스캔(full-table scan)이 필요하다면, 해당 테이블을 100개 노드로 구성된 MPP 시스템에 분산 저장하고 각 노드가 테이블의 1/100씩을 스캔하도록 하면 비교적 빠르게 작업을 완료할 수 있습니다. 이는 '많은 손이 일을 가볍게 만든다'는 속담의 컴퓨터 버전이라 할 수 있습니다.

비균등 메모리 아키텍처(NUMA)

NUMA는 SMP와 MPP를 결합하여, SMP의 공유 디스크 유연성과 MPP의 병렬 처리 속도를 동시에 얻고자 하는 아키텍처입니다. 비교적 최근에 등장한 혁신 기술로, 장기적인 관점에서 데이터 웨어하우징에 실용적인 선택지가 될 수 있습니다.

NUMA는 개념상 SMP 머신 클러스터링과 유사하지만, 더 긴밀한 연결, 더 넓은 대역폭, 그리고 노드 간 더 높은 수준의 조율을 특징으로 합니다. 데이터 웨어하우스를 상대적으로 독립적인 사용 그룹으로 분할하여 각 그룹을 별도의 노드에 배치할 수 있다면, NUMA 아키텍처가 효과적인 해결책이 될 수 있습니다.