솔라나의 파이프라이닝: 트랜잭션 처리 장치

솔라나 네트워크가 웹-스케일의 속도와 성능으로 트랜잭션을 검증하고 복제하는 과정에 대해 알아봅시다.

GM Chung
솔라나 한국
5 min readJun 4, 2020

--

솔라나가 세계 최초의 웹 스케일 블록체인이 되기 위해, 단순히 빠른 합의를 통한 1초 미만의 컨펌시간과 트랜잭션 처리능력은 기존의 문제점을 해결하기에는 부족하였습니다. 솔라나 팀은 대규모의 트랜잭션 블록을 검증함과 동시에 네트워크 전체로 신속하게 복제하는 방법의 필요성을 인지하였습니다. 이를 위해 CPU 설계 시 최적화를 위해 자주 사용되는 방식인 파이프라이닝(Pipelining)을 솔라나 네트워크 상에서 발생하는 트랜잭션 검증 과정에 도입하였습니다.

파이프라이닝은 일정한 순서로 처리해야 하는 입력 데이터 스트림이 존재함과 동시에, 각기 다른 하드웨어를 통해 처리되어야 할 때 적합한 방식입니다. 적절한 비유를 들어보자면, 많은 양의 빨랫감을 세탁기와 드라이어를 사용하여 세탁/드라이/정리 순서로 해내는 것과 같습니다. 드라이 이전 빨랫감은 세탁되어야 할 것이고, 정리되기 전 드라이가 끝나야 하는 것처럼 말이죠. 각 절차를 담당하는 기계는 따로 구분되어 있는 것도 같은 맥락입니다.

효율성을 최대화하기 위해서는 단계별로 파이프라인이 필요합니다. 위의 예시를 사용한다면 세탁을 1단계, 드라이를 2단계, 정리를 3단계라 가정하겠습니다. 한 바구니의 빨랫감이 드라이어로 들어가고, 새로운 빨랫감이 세탁기에 들어가면서 파이프라인은 가동되기 시작합니다. 이와 같이, 첫 빨랫감이 정리되고, 두 번째 빨랫감이 드라이어에 들어가면 세 번째 빨랫감이 세탁기에 들어갈 것입니다. 이런 방식으로 세 바구니의 빨랫감은 동시에 처리될 수 있게 됩니다. 빨랫감이 무한하다면, 파이프라인은 가장 오랜 시간이 걸리는 단계의 속도를 따라 지속적으로 세탁물을 처리하게 될 것입니다.

“저희는 네트워크 카드, CPU 코어, GPU 코어, 모든 하드웨어가 상시 가동될 수 있는 방법을 찾아야 했고, CPU 디자인에서 힌트를 얻을 수 있었습니다.” 솔라나의 창립자이자 CTO인 그렉(Greg Fitzgerald)은 이를 다음과 같이 설명하였습니다. “저희는 소프트웨어에 4단계의 트랜잭션 프로세서를 포함시켰습니다. 저희는 이를 TPU(Transaction Processing Unit, 트랜잭션 처리 장치)라 칭합니다.”

솔라나 네트워크는 파이프라인 메커니즘 — 트랜잭션 처리 장치, TPU — 은 커널 레벨의 데이터 펫칭(Data Fetching), GPU 레벨의 서명 검증(Signature Verification), CPU 레벨의 뱅킹(Banking), 커널 공간의 쓰기(Writing), 총 4단계로 이루어져 있습니다. TPU가 벨리데이터들에게 블록을 전송하면, 다음 데이터 패킷들은 미리 불려오고, 서명을 검증하고, 토큰 정산을 시작하게 됩니다.

벨리데이터 노드는 두 가지 파이프라인 작업을 동시에 진행합니다. 하나는 리더 모드일 때 쓰이는 TPU 그리고 벨리데이터 모드에서 사용되는 TVU입니다. 두 가지 모두 같은 하드웨어, 네트워크 입력값, GPU, CPU 코어, 디스크와 네트워크 출력값을 갖지만, 하드웨어를 사용하는 방식은 다릅니다. TPU는 장부의 기록을 위해 사용되지만 TVU는 원장 내역을 검증하기 위해 존재합니다.

그렉은 “저희는 서명 검증이 병목현상을 야기한다는 사실을 알게 되었습니다. 하지만 검증이 운영의 맥락을 크게 헤치지 않아 GPU로 작업 분량을 덜어낼 수 있다는 사실 또한 알게 되었습니다.”라고 말했으며 이어, “가장 큰 부하를 만들어내는 작업이 오프로딩 되고 나서도, 네트워크 드라이버와의 상호작용, 스마트 컨트랙트의 데이터 의존성 관리 등, 동시성에 영향을 끼치는 몇몇 병목구간은 여전히 존재하게 됩니다.”

GPU로 병렬화된 4단계의 파이프라인 사이에서 솔라나 TPU는 언제나 50,000건의 트랜잭션을 동시에 처리할 수 있습니다. 그렉은 다음과 같이 강조하고 있습니다. “이 모든 것은 $5,000 이하의 시중 제품으로 구현될 수 있습니다. 슈퍼컴퓨터 없이 말이죠.”

솔라나의 GPU 트랜잭션 처리 장치로 부담을 덜어냄과 동시에, 네트워크는 단일 노드의 효율성을 구현할 수 있게 되었습니다. 이는 솔라나의 시작부터 달성하고자 했던 목표입니다.

CTO 그렉은 “다음 문제는 블록을 리더 노드로부터 네트워크 체증이나, 처리량의 저하 없이, 어떻게든 벨리데이터 노드로 넘기는 것이었습니다. 이를 위해 저희는 터빈(Turbine)이라 불리는, 저희만의 블록 전파 전략을 만들어냈습니다.”

“터빈을 통해 저희는 벨리데이터 노드들을 여러 레벨로 구분하였습니다. 각 레벨은 적어도 상위 레벨보다 2배의 사이즈를 가지도록 말이죠. 이런 구조로 인해, 컨펌 시간은 노드의 수가 아닌, 그보다 훨씬 적은 트리의 높이를 따라가에 됩니다. 네트워크의 크기가 두 배씩 늘어나더라도 컨펌 시간엔 아주 미세한 변동만 일어나게 됩니다.”

파이프라이닝과 같은 기술 구현 외에도 솔라나의 웹 스케일 블록체인을 가능케한 여러 중요 혁신들이 있습니다. 솔라나 블로그를 통해 더 자세히 알아보시길 바랍니다:

솔라나 네트워크를 가능하게 해준 8가지 주요 혁신들은 다음과 같습니다:

솔라나 공식 커뮤니티에 참여하세요

공식 홈페이지 | 텔레그램 | 디스코드 | 트위터

--

--