1편 — 루니버스는 왜 하이퍼레저 패브릭을 선택했을까?

Jarry
Luniverse
Published in
6 min readJan 7, 2020
Luniverse Hyperledger Fabric

소개

서비스형 블록체인 플랫폼인 BaaS(Blockchain as a Service)는 클라우드 상에 블록체인 노드를 설치하여 빠르고 쉽게 블록체인 개발 환경을 구축해 주는 것을 기본 기능으로 블록 조회, 트랜잭션 API, 데이터 분석 등의 추가 편의 기능을 제공합니다.

루니버스 하이퍼레저 패브릭 이벤트 보기

그동안 루니버스는 이더리움 기반의 BaaS 서비스를 제공하여 많은 파트너사들과 블록체인 생태계를 넓혀가는 노력을 해왔습니다. 이런 과정을 거치면서 하이퍼레저 패브릭을 원하는 파트너사들의 요구가 끊임없이 있다는 것을 확인하게 되어 현재 하이퍼레저 패브릭 기반의 BaaS 기능을 준비하고 있습니다. 1편에서는 하이퍼레저 패브릭의 특징을 살펴 보고 실제 사용에 있어 어떤 불편함이 있는지 알아보겠습니다.

하이퍼레저와 패브릭

하이퍼레저 패브릭의 특성을 알아보기 전에 먼저 하이퍼레저와 하이퍼레저 패브릭이 각각 무엇인지 알아보겠습니다. 하이퍼레저(Hyperledger)는 기업용 블록체인을 만들기 위한 오픈소스 프로젝트로 2015년 리눅스 재단에서 처음 시작되었으며, 해당 프로젝트는 크게 하이퍼레저 프레임워크와 하이퍼레저 툴 프로젝트로 나눠져 있습니다. 이 중 하이퍼레저 프레임워크가 실제로 블록체인을 서비스하는 프로젝트입니다. 하이퍼레저 패브릭(Hyperledger Fabric) 가장 왕성하게 활동 중인 하이퍼레저 프레임워크 프로젝트로 비즈니스 이해 관계가 맞는 다수의 기업이나 기관 등의 조직이 함께 구축하는 프라이빗 블록체인을 표방합니다. IBM이 제공한 44,000 라인의 코드를 기반으로 시작되었으며, 최신 버전으로 1.4.4가 공식 릴리즈 되어 있습니다. 현재 1.4.x와 별개로 2.0 베타 버전이 릴리즈 된 상태로, 2.0 버전의 주요 변경 사항은 Chain Code LifeCycle, Raft Ordering Service, Alpine Image 등이 있습니다.

하이퍼레저 패브릭의 특성

하이퍼레저 패브릭은 다음과 같은 장점이 있습니다.

  • 유연한 네트워크 확장과 강력한 퍼미션 관리
    여러 개 기업(조직) 간에 필요에 따라 서로 Private한 채널을 맺어 원장(Ledger)을 공유할 수 있습니다. 각 조직은 별도의 CA를 운영하여 퍼미션 관리를 할 수 있으며 Peer 노드 하나가 여러 개의 채널에 속함으로써 복수의 블록체인 서비스를 진행 할 수 있습니다.
  • 친숙한 개발 언어
    체인코드, DApp 개발 언어로 개발자들이 일반적으로 많이 쓰는 익숙한 언어를 지원합니다. 체인코드란 원장의 데이터를 조회하거나 기록할 때 사용 되는 프로그램 이더리움의 스마트 컨트랙트와 동일한 개념입니다. 현재까지 지원되는 언어는 node.js, java, go 세 가지 입니다. 이렇게 일반적이고 다양한 언어를 지원할 수 있는 것은 보통의 퍼블릭 블록체인과 달리 체인코드가 일부의 Peer에서만 실행되어 그 결과만 전달하므로, 전체 네트워크에 큰 영향을 미치지 않기 때문입니다.
  • 효율적 자원 활용과 성능
    일반적인 블록체인의 경우 매번 Block이 생성될 때마다 모든 노드에서 트랜잭션을 일일이 실행을 시켜야 하는 불편함이 있는 반면 하이퍼레저 패브릭은 하나의 Peer에서 실행하고 결과만 Block으로 취합하여 배포 가능합니다. 따라서 노드 자원을 효율적으로 사용할 수 있으며 트랜잭션을 Peer 별로 나누어서 처리하는 방식을 통해 Peer 숫자에 비례하여 처리량(TPS)을 높일 수 있습니다.
  • Private Network로서의 장점
    Private Network 참여자는 계약을 통한 운영 비용을 지불하기 때문에, Block을 생성하기 위해 필요한 복잡한 합의 과정, 노드 운영에 대한 토큰 보상 매커니즘 및 트랜잭션 비용으로부터 자유로울 수 있습니다. 이는 허가된 사용자만 네트워크에 참여함으로써 악의적인 공격이 거의 없다고 가정하기 때문입니다. 대신 중요한 기능에 대해서는 보증 정책으로 보완할 수 있습니다.

하이퍼레저 패브릭은 이처럼 강력하고 다양한 기능을 제공하는 기업용 프라이빗 블록체인으로 자리 잡고 있지만 사용하기 어렵고 불편하다는 단점도 있습니다. 먼저 초기 학습에 상당한 시간이 소요됩니다.

일반적인 블록체인은 동일한 기능을 하는 노드에서 모든 작업을 처리하지만, 하이퍼레저 패브릭의 경우 노드의 종류부터 Peer, Orderer, Fabric-CA, Tool 등으로 다양하며 각자가 하이퍼레저 네트워크 상에서 특별한 역할들을 수행합니다. Peer는 체인코드(Chaincode)를 실행하고 블록을 저장하는 역할을 하고, Orderer는 각 Peer에서 요청한 트랜잭션을 모아서 주기적으로, 혹은 일정 개수 이상의 트랜잭션이 쌓이면 블록을 생성하는 역할을 합니다. Fabric-CA는 권한 관리를 위한 msp를 생성하는 역할을 하고 Tool은 각 노드에 명령을 내리기 위한 인터페이스를 제공합니다. 이와 더불어 조직, 채널 등의 개념이 복잡하게 얽혀서 더 학습을 어렵게 만듭니다. 또한 트랜잭션도 여러 번의 과정을 거쳐서 처리가 되어 처음 접하는 사람은 쉽게 이해하기가 어렵습니다. 하이퍼레저 패브릭의 트랜잭션 처리 과정을 자세히 이해하고 싶으신 분들은 아래 공식 도큐먼트를 참고하시기 바랍니다.

Hyperledger Fabric Transactions 알아보기

그러나 하이퍼레저 패브릭의 개념에 대해 약간의 선행 학습이 되었다고 해도 실제로 블록체인 서비스 개발에 들어가면 네트워크 설정부터 꽤나 어려운 작업들을 마주치게 됩니다. 여러 가지 컴포넌트들에 대한 설정 파일들이 복잡하고 설정의 자유도가 높기 때문에 처음 접하는 개발자는 어디서부터 어떤 설정을 하면서 시작을 해야 할 지 어려움에 부딪히게 됩니다. 이 때문에 경험이 없는 개발자들은 실제로 서비스에 필요한 DApp 개발을 시작하기까지 상당한 시간이 소요됩니다.

뿐만 아니라 운영을 위한 관리, 모니터링 도구가 없어서 불편합니다. command line으로 명령을 내리는 인터페이스는 있으나 기능이 한정적이고, 특히 시각화된 툴이 없어서 하이퍼레저 패브릭을 처음 접하는 사람들은 전체적인 그림을 파악하기 힘들고 운영하기가 어렵습니다. Hyperledger Explorer를 비롯하여 이를 해결하기 위한 프로젝트가 몇몇 있긴 하지만 전반적으로 진행이 잘 되고 있지는 않습니다.

마지막으로 어디서부터 어떻게 어플리케이션 개발을 진행해야 할 지에 대한 가이드라인이 없기 때문에 계속해서 문제에 직면하게 됩니다. 체인코드를 개발할 때 보안 문제나 코딩 실수는 없는지, DApp을 개발할 때 트랜잭션을 어떤 방식으로 처리해야 하는지 등등 실제로 개발을 하다 보면 궁금하거나 막히는 부분이 많이 있습니다. 따라서 이러한 허들을 넘기 위한 편리한 개발 기능들을 제공받는다면 개발이 용이해집니다. 다음 2편에서는 루니버스가 제공하는 하이퍼레저 패브릭 BaaS의 어떤 기능들이 있는지 알아보겠습니다. 현재, 루니버스 하이퍼레저 패브릭 정식 버젼이 출시되었습니다. 관련 사항은 이곳에서 확인해주세요.

Luniverse

--

--