AI Network - Blockchain for Serverless Computing
기술 명세서 분석
AI 네트워크 메인 화면에는 Open Source to Open Resource라는 문구가 있다. 전세계에 있는 오픈 소스 프로젝트들의 소스 코드들에 서버리스 기반 클라우드 서버 자원을 결합하여 서비스가 상시 운영되고 있는 상태(Open Resource)로 제공하자는 것이다. 최근 공개된 AI Network 기술 명세서(https://ai-network.gitbook.io/ai-network)에는 Open Resource 미션을 달성하기 위해 오픈 소스와 클라우드를 연결하는 이벤트 기반의 블록체인 구조가 설명되어 있다. 오픈 소스란 무엇이고, 서버리스 컴퓨팅을 위한 블록체인이란 무엇인지 자세히 알아보도록 하자.
1983 년 Richard Stallman의 GNU 프로젝트 이후 무료 오픈 소스 소프트웨어는 계속 늘어 이제는 개발을 시작할 때, 관련 오픈 소스가 있는지 먼저 검색하고 80% 이상은 오픈된 소스코드를 활용하여 서비스가 운영된다고 한다. 이러한 발전과 더불어, 소스 코드는 점점 다양해져서, 다양한 런타임 환경이나 (예, IoT), 대용량 클라우드를 필요 (예, 머신 러닝) 하는 경우가 많아졌다. Stallman이 생각했던, 누구나 다른 개발자가 작성한 프로그램을 이어 받아 계속 개선할 수 있으려면, 소스 코드와 함께 실행 가능한 자원이 제공되어야만 한다는 것이다.
개발자가 하드웨어와 컴퓨터, OS, 관련 라이브러리 등의 설치 여부에 구애 받지 않고 새로운 아이디어를 창의적으로 즉각적으로 구현할 수 있어야 한다는 Open Resource 철학을 구체화 하기위해 AI 네트워크 블록체인 팀은 컨테이너, 마이크로서비스 아키텍쳐, 서버리스 컴퓨팅 (Serverless Computing) 개념을 적극적으로 활용하는 새로운 형태의 실시간 블록체인 서비스를 제안하게 된다.
서버리스 컴퓨팅이라는 개념이 낯선 독자들을 위해서 다음 장표를 살펴 보도록 하자. 클라우드 서비스는 가장 기본적인 형태인 IaaS (Infrastructure as a Service) 부터 시작해서, PaaS 와 FaaS 형태로 발전해 왔다. IaaS가 컴퓨터와 제반 인프라스트럭처를 클라우드에서 대여해 주는 호스팅 서비스로 요약 된다면, PaaS (Platform as a Service)는 여기서 한 단계 더 나아가, 개발자들이 어플리케이션 코드만 작성하고, 서버를 유지관리 하지 않아도 되게 도와준다는 개념이다. 하지만 보통 PaaS를 서버리스 컴퓨팅으로 분류 하지는 않는데 (참고, serverless-vs-paas), 어플리케이션 전체가 서버에 배포된다는 측면에서, 스캐일 업할 때나 초기 부팅시 계속해서 신경을 써주어야 하는 구조이기 때문이다. 어플리케이션 단위의 배포 방식을 더욱더 잘게 쪼개면 FaaS (Function as a Service)로 넘어오게 되는데, 여기서는 작은 크기의 함수들이 호출 되는 시점에 자원을 사용하면서 과금되기 때문에 앞서 언급했던 Auto Scaling 문제를 신경쓰지 않아도 된다. 여기서 블록체인에 익숙한 독자라면 이 개념이 이더리움의 컨트랙트와 닮았다고 했을 때 “아하!” 하실 수 있다. 이더리움 노드들이 함수를 실행시켜 주기 때문에, 개발자는 함수를 배포하면서 기반 인프라에 신경을 쓰지 않고 있다. 즉, 스마트 컨트랙은 아주 비싸고 느린 FaaS의 일종으로 분류되며, 서버리스 컴퓨팅 영역에 해당한다고 해석할 수 있다.

그림 1. 이더리움은 아주 비싼 FaaS로 해석될 수 있다.
그런데 이더리움을 서버리스 컴퓨팅이라고 분류하거나 주장하는 사람들이 여지껏 안보이는 이유는, 비상태성(stateless), 권한제한성(permissioned), 및 연산의 병렬성(concurrent operation)의 특성을 갖는 기존 서버리스 컴퓨팅(Serverless Computing) 과 너무 다르기 때문이다. 오히려 블록체인은 네트워크의 전체 상태(global state)을 안전하게 관리하기 위하여 동기화 (synchronous)된 방식으로 함수를 수행한다.
AI Network 블록체인이 다른 블록체인과 가장 큰 차이점은, 요즘 유행하고 있는 “스마트 컨트랙트 빠르게 만들기" 패러다임에서 벗어나서, 블록체인을 네트워크 및 함수 실행 상태를 관리하는 장부로만 활용한다는 점이다. 즉, 연산의 부분은 블록체인 노드들이 실행하는 것이 아니라, 서버리스 컴퓨팅의 장점을 적극 활용하여, 클라우드 서비스 제공자 또는 분산된 자원 제공자가 동적으로 머신 자원을 할당하고, 코드 실행에 필요한 시간과 비용을 효율적으로 관리하기 위한 장부로써 블록체인을 사용하게 된다. 여기서 “탈중앙화"를 좋아하는 독자들은, “연산이 탈중앙화 되지 않으면 진정한 탈중앙화 네트워크가 아니지 않아?” 라고 생각할 수 있겠다. 네트워크의 자원 활용과 탈중앙화에 대한 자세한 설명은 AI Network Architecture Paper 를 참조하기로 하자.
그러면 이제 본격적으로 AI Network 블록체인을 뜯어 보자. AI Network 블록체인은 여느 블록체인 처럼 트렌젝션과 블록으로 이루어져 있으며, Genesis 블록 부터의 트랜젝션을 모두 실행시키면 한 상태 (State) 에 이르게 된다. AI Network의 상태는 Sharding이 용이한 트리 구조를 하고 있으며, 상태에는 값 (value), 규칙 (rule), 권한 (owner)이 포함된다. 상태의 변화는 이벤트로 전파되어 off-chain 워커(worker)를 실행 시키며, 워커는 컨테이너 기반의 다양한 하드웨어로 이루어진 클라우드로 어떠한 작업이라도 실행시킬 수 있도록 유연하게 정의되어 있다. 워커는 작업 결과를 블록체인 트랜잭션으로 전파하여 전달하고, 이 트랜잭션은 또 다른 상태 변화를 이끌어 내어 다양한 함수 들이 서로 블록체인을 통해 상호 작용 하게 되는 것이다. 워커의 작업은 앞서 말한 서버리스 컴퓨팅의 특성을 따라 Stateless 하고 Concurrent 하기 때문에, 작업 결과물이 모이는 블록체인에서 Consensus를 통해 일관된 상태를 관리한다.

그림 2. 블록체인을 통해 워커가 실행되는 모습.
스캐일 하려면 단순해야 한다. (Simple things scale.) 이라는 말이 있다. 역사적으로 과거 SQL을 기반으로한 데이터베이스 이론이 더 정확하고 더 구조화된 쿼리를 처리할 수 있는 연구를 계속하는 동안, BigTable은 NoSQL 데이터 베이스를 제안하며 과감하게 데이터 간의 JOIN을 포기하고, 읽기 쓰기를 빠르게 하는 것에 집중하여 대용량 정보 처리를 가능하게 하였다. AI 네트워크는 이 철학의 기반하여 무거운 스마트 컨트랙을 걷어내고, 블록체인의 가장 기본적인 기능인 네트워크 상의 글로벌 상태 관리에 집중하였다. 블록체인의 상태를 가장 단순하고 확장 가능한 key-value 트리 구조로 설계해서, 언제든지 하위 트리를 유지하는 더 작은 블록체인을 연결시키는 Sharding이 가능하다. AI Network 블록체인이 그 미션대로 살아있는 Open Source 들이 소통할 수 있는 중심 역할을 할 수 있을지, 앞으로의 행보를 지켜보자. ^^
