무지개다리의 프리즘 타워: Web3와 미들웨어 — Kafka
출처: Confluent Kai Wahner
편집: Masterdai
1: 배경과 전망
2016년 InfoQ 국제 회의에서 Kai Wahner는 "블록체인------미들웨어의 다음 큰 일"이라는 제목의 발표를 했습니다. 그는 당시 블록체인 데이터와 미들웨어를 기반으로 한 참조 아키텍처를 제안했으며, 이 아키텍처는 현재 많은 기술 통합업체와 공급업체에 의해 채택되고 있습니다.
그러나 그는 어떤 암호화폐 스타트업에도 합류하지 않았습니다. 대신 2017년에 Confluent에 합류했는데, 그는 "거래 및 분석형 작업 부하를 통해 모든 규모의 동적 데이터를 처리하는 것이 더 중요한 패러다임 전환"이라고 생각했습니다. Confluent에 합류한 결정에 대해 Kai는 자신이 옳았다고 생각하며, Kai는 블로그에서 "현재 대부분의 기업이 Kafka를 MQ, ETL 및 ESB 도구의 대체 미들웨어로 사용하거나 서버리스 Kafka를 사용하여 클라우드 네이티브 iPaaS를 구현하고 있다"고 썼습니다.
이야기는 여기서 끝나지 않았습니다. 블록체인, 암호화 기술 및 NFT의 출현과 대규모 채택은 미들웨어와 같은 오픈 소스 기반 소프트웨어에 대한 수요를 급증시켰습니다. 충분한 이유로(규모성, 신뢰성, 실시간성), 많은 암호화 시장 웹사이트, 블록체인 모니터링 인프라 및 호스팅 은행이 Kafka 위에 구축되었습니다. 이러한 고객의 성공의 핵심은 블록체인, 암호화폐와 기업 서비스 소프트웨어, 데이터베이스 및 데이터 레이크를 통합한 것입니다.
우리가Chainlink 와 같은 오라클을 온체인 네트워크와 오프체인 세계를 연결하는 무지개 다리에 비유한다면, Kafka , Flink 와 같은 미들웨어는 그 무지개 빛을 굴절시키는 프리즘 타워입니다.
2: 미들웨어란 무엇인가
미들웨어는 운영 체제와 그 위에서 실행되는 응용 프로그램 사이에 위치한 소프트웨어로, 분산 응용 프로그램 간의 통신 및 데이터 관리를 지원합니다. 때때로 파이프라인이라고도 불리며, 두 응용 프로그램을 연결하여 데이터와 데이터베이스가 "파이프라인" 사이에서 쉽게 전달될 수 있도록 합니다. 일반적인 미들웨어에는 데이터베이스 미들웨어, 애플리케이션 서버 미들웨어, 메시지 지향 미들웨어 등이 있습니다. 다시 말해, 이는 하나의 응용 프로그램과 다른 응용 프로그램 간의 대화와 통신을 구현하며, 마치 다국적 파티의 중간 소개자이자 번역가와 같습니다. Kafka는 메시지 미들웨어의 일종입니다.
Apache Kafka
Kafka는 오픈 소스 분산 이벤트 스트리밍 처리 플랫폼으로, 2011년 LinkedIn에서 처음 생성되어 오픈 소스화되었습니다.
Kafka는 세 가지 핵심 기능을 통해 사용자가 엔드 투 엔드 솔루션을 구현하는 이벤트 스트림을 구축할 수 있도록 합니다.
이벤트 스트림을 게시(쓰기)하고 구독(읽기)하며, 다른 시스템에서 지속적으로 데이터를 가져오거나 내보낼 수 있습니다.
이벤트 스트림을 지속적이고 신뢰성 있게 저장합니다.
순간적으로 발생하거나 과거에 발생한 이벤트 스트림을 처리합니다.
이벤트 스트림: 다양한 데이터 소스(데이터베이스, 센서, 모바일 장치, 클라우드 서비스, 애플리케이션)에서 데이터를 스트리밍 이벤트 형태로 수집하고, 후속 검색을 위해 지속적으로 저장하며, 실시간 및 추적 가능한 방식으로 이벤트 스트림을 조작하고 응답하며, 필요에 따라 이벤트를 다양한 목표로 전달하는 기술입니다. 이벤트 스트림은 데이터의 연속적인 흐름과 표현을 보장하여, 올바른 정보가 올바른 시간에 올바른 위치에 나타나도록 합니다.
Apache Kafka의 사용 사례
메시지 전송: Kafka는 전통적인 메시지 브로커를 대체할 수 있습니다. 메시지 브로커는 데이터 저장 및 처리의 디커플링, 처리되지 않은 응답 메시지의 버퍼링 등에 적합합니다.
웹사이트 활동 추적: 사용자 활동을 추적하는 파이프라인을 실시간 게시-구독 소스로 재구성합니다. 사용자가 사이트에서 수행하는 활동(페이지 조회, 검색, 클릭 등)을 중앙 주제로 게시하며, 각 활동 유형마다 주제가 있습니다. 이러한 구독 소스는 실시간 처리, 모니터링 및 Hadoop 또는 오프라인 데이터 웨어하우스 시스템으로 로드하여 처리 및 보고하는 다양한 사용 사례에 사용할 수 있습니다.
로그 집계: Kafka를 로그 집계 솔루션의 대체품으로 사용합니다. 로그 집계는 일반적으로 서버에서 로그 파일을 수집하고 이를 중앙 위치(파일 서버 또는 HDFS)에 저장하여 처리합니다. Kafka는 파일의 세부 사항을 추상화하고 로그 또는 이벤트 데이터를 더 명확한 데이터 스트림으로 추출하여 여러 데이터 소스 및 분산 데이터베이스 상황에서 더 낮은 지연 시간으로 데이터 처리를 가능하게 합니다.
3: Kafka와 Web3의 관계
아래 그림은 매우 전형적인 Dapp 기술 구현 원리이지만, 많은 사람들에게 잘못된 인상을 주었습니다. 마치 프론트엔드만 있으면 이더리움 네트워크에 데이터 요청을 하여 온체인과 오프체인 행동의 상호작용을 구현할 수 있는 것처럼 보입니다. 실제 개발 과정에서는 훨씬 더 복잡하며, 블록체인 백엔드와 프론트엔드 사이에 구조가 추가됩니다.
이러한 구조에서 우리는 다음을 구현할 수 있습니다:
Kafka는 사이드 체인 또는 오프체인 방식으로 대규모 실시간 데이터 계산을 수행하며, 블록체인 기술과 기업의 다른 소프트웨어 부분(CRM, 빅데이터 분석 및 기타 맞춤형 비즈니스 애플리케이션)과의 통합을 포함합니다. 즉, Kafka는 블록체인 통합의 미들웨어 역할을 합니다.
암호화 기업 아키텍처에서 더 일반적인 사용 사례는 Kafka를 블록체인과 기업 애플리케이션 간의 확장 가능한 실시간 데이터 센터로 활용하는 것입니다. 아래는 몇 가지 예시이며, Kafka가 도움을 줄 수 있는 기술 사용 사례를 탐구합니다.
3.1. Kafka를 메타버스의 데이터 허브로
소매업체와 사용자 간의 소통은 반드시 실시간이어야 하며, 당신이 실물 의류, 휴대폰을 판매하고 싶든, NFT 거래 시장에서 가상 상인과 가격을 협상하고 싶든 마찬가지입니다. 아래 아키텍처는 다양한 암호화 및 비암호화 애플리케이션 간의 정보 흐름을 조정하여 모든 규모의 가상 세계 아키텍처를 실시간으로 지원합니다.
3.2. Kafka가 암호화 거래 및 시장에서 데이터 허브 역할을 하는 경우
사용자가 모바일 지갑에서 비트코인 거래를 수행합니다. 실시간 애플리케이션은 오프체인 데이터를 모니터링하고, 관련 데이터를 대시보드에 표시하며 푸시 알림을 보냅니다. 또 다른 완전히 독립적인 부서는 배치 처리 과정에서 Kafka 로그의 과거 이벤트를 재생하여 전용 분석 도구를 사용하여 규정 준수를 검사합니다.
Kafka 생태계는 블록체인 및 암호화 세계의 데이터를 전통적인 IT 데이터와 함께 사용할 수 있는 많은 기능을 제공합니다.
4: Kafka가 제공할 수 있는 기술 사용 사례
블록체인 인프라, 암호화폐 및 Dapp의 상태를 모니터링하여 다운타임을 방지하고 인프라를 보호하며 블록체인 데이터를 접근 가능하게 합니다.------인프라 유지 관리
Kafka Stream 또는 ksqlDB를 통해 스트림 처리를 수행하여 DeFi, NFT 등 관련 거래 시장에서 실시간 데이터 처리를 수행합니다.------온체인 데이터 분석
Kafka를 오라클 통합 채널로 사용합니다: 예를 들어 Chainlink에서 Kafka로, 다시 IT 인프라로 전달합니다.
Kafka 브로커에서의 스로틀링 및 난수 관리를 통해 백프레스를 처리하고(데이터 흐름이 업스트림 생산자에서 다운스트림 소비자로 전송되는 과정에서 업스트림 생산 속도가 다운스트림 소비 속도보다 빠르면 다운스트림의 버퍼가 넘치는 현상), 거래를 체인으로 스트리밍합니다.------Gamefi 및 Socialfi
여러 체인을 동시에 처리합니다: 이더리움, 솔라나, BSC 블록체인에서 거래를 병렬로 모니터링하고 연관시킵니다.------크로스 체인 관련
우리는 새로운 세대의 Gamefi, DeFi, Socialfi 및 모바일 Dapp의 증가와 함께, 과거에 온체인 데이터를 데이터베이스와 데이터 레이크에 수집하는 방법이 현재의 새로운 애플리케이션의 요구를 충족하지 못할 것이라는 점을 알 수 있습니다. 아키텍처 설계에서 메시지 미들웨어의 특성을 충분히 활용하면 대부분의 사용자가 요구하는 실시간성과 신뢰성을 충족할 수 있습니다.
5: 암호화 및 DeFi 세계에서 Kafka의 실제 사례
TokenAnalyst: 암호화 시장의 시각화
EthVM: 블록체인 탐색기 및 분석 엔진
Kaleido: 블록체인 및 스마트 계약을 위한 REST API 게이트웨이
Chainlink: 스마트 계약을 블록체인에서 현실 세계로 연결하는 오라클 네트워크
5.1. TokenAnalyst -- 암호화 시장의 시각화
TokenAnalyst는 기업급 API 서비스를 제공하는 온체인 데이터 분석 도구입니다. 이 프로젝트는 2020년 5월 운영 중단을 발표했으며, 팀의 대부분이 Coinbase에 합류했습니다. 그러나 그의 사례는 여전히 참고할 가치가 있습니다.------그는 Kafka 스택(Connect, Streams, ksqlDB, Schema Registry)을 사용하여 비트코인과 이더리움의 블록체인 데이터를 그의 분석 도구와 통합했습니다.
"온체인 데이터에 접근하려면 노드가 필요하며, 이는 사람들이 생각하는 것만큼 간단하지 않습니다(버전 및 지역 간의 데이터 차이). 또한, 또 다른 도전 과제는 그들이 네트워크와 동기화 상태를 유지하는 것입니다. 우리는 제로 다운타임을 달성하고 최고의 데이터 품질과 신뢰성을 보장하기 위해 Kafka와 Confluent 플랫폼을 사용하기로 결정했습니다."
TokenAnalyst는 Ethsync라는 내부 솔루션을 개발했습니다. 각 노드와 Ethsync는 데이터를 해당 Kafka 주제로 푸시합니다. 아래 그림과 같이, 여러 노드를 실행하여 중복성을 확보해야 합니다. 주제로 푸시된 블록은 업데이트되며 클라이언트는 새로운 유효 블록으로 수신합니다. 그러나 블록체인의 특성상 블록체인 분기가 발생할 수 있습니다(대체 체인이 길어져 다른 체인이 무효화됨). 따라서 이전에 유효했던 블록이 무효가 될 수 있습니다. (필자 주: 이 문제는 현재 많은 프로젝트에서도 발생하고 있습니다.)
Kafka Streams 기반의 블록 확인기: TokenAnalyst는 다운스트림 집계 계산에서 무효 블록을 사용하는 것을 방지하기 위해 Scala의 Kafka Streams를 기반으로 한 블록 확인기 구성 요소를 개발했습니다. 이는 임시로 블록을 보유하여 재구성 시나리오를 해결하고, 일정 수의 확인 블록(해당 블록을 채굴한 서브 블록)에 도달했을 때만 이를 전파합니다.
확인기는 규범 체인을 검증하는 문제를 해결할 뿐만 아니라, 확인을 통해 폐기된 블록과 이미 등록된 블록을 통해 유효한 한 번의 의미(Exactly-once semantics)를 가진 확인 블록을 출력할 수 있습니다. 이 구성 요소는 오류 복구 메커니즘을 최대한 활용할 수 있어 제로 다운타임 환경의 롤링 배포에 적합합니다.
5.2. EthVM -- 블록체인 탐색기 및 분석 엔진
비트코인과 이더리움과 같은 공공 탈중앙화 블록체인의 멋진 점은 투명성입니다. 변조 방지 로그는 블록체인 탐색기가 모든 거래를 모니터링하고 분석할 수 있게 합니다.
EthVM은 Apache Kafka의 지원을 받는 오픈 소스 이더리움 블록체인 데이터 처리 및 분석 엔진입니다. 이 도구는 블록체인 감사 및 의사 결정을 지원합니다. EthVM은 거래 및 스마트 계약의 실행을 검증하고, 잔액을 확인하며 가스 가격을 모니터링합니다. 이 인프라는 Kafka Connect, Kafka Streams 및 Schema Registry를 사용하여 구축되었습니다. 또한 클라이언트 시각화 블록 리소스 관리자를 포함합니다.
EthVM이 Kafka를 사용하게 된 계기는 Boerge Svingen이 Confluent 블로그에 발표한 "뉴욕 타임즈에서 Apache Kafka를 사용하여 게시하기"라는 제목의 기사에서 비롯되었습니다. 이 기사는 상징적인 뉴욕 타임즈가 혼합된 API, 서비스, 생산자 및 소비자에서 Kafka 기반의 로그 아키텍처로 전환하는 과정을 설명합니다.
블록체인은 본질적으로 블록으로 병합되고 암호학적으로 연결된 기록 목록의 지속적인 성장입니다.------프로그래머의 말로는 체인 리스트입니다. Kafka 용어에서 이더리움 클라이언트는 생산자로, 즉 로그의 새로운 항목을 생성하는 역할을 합니다.
5.3. Kaleido -- 암호화 및 스마트 계약을 위한 Kafka 네이티브 게이트웨이
Kaleido는 스마트 계약을 배포하고 관리하며 이더리움 거래를 전송하고 블록체인 데이터를 쿼리하기 위한 기업급 블록체인 API를 제공합니다. 이는 이더리움 거래 제출, Web3 클라이언트 라이브러리, nonce 관리, RLP 인코딩, 거래 서명 및 스마트 계약 관리의 블록체인 복잡성을 숨깁니다.
Kaleido는 온체인 논리 및 데이터에 대한 REST API를 제공합니다. 이는 완전 관리형 고처리량 Apache Kafka 인프라에 의해 지원됩니다.
블록체인 기반의 분산 거래 시스템에서 이벤트 감지 및 반응은 피할 수 없는 요구 사항입니다. 어떤 참여자나 애플리케이션도 상태 변화를 제어할 수 없으며, 온체인의 스마트 계약 논리는 오프체인 시스템과 직접 통신할 수 없습니다.------그렇지 않으면 논리의 결정성이 손상됩니다.
이벤트(거래 "로그"를 통해 전달됨)는 프로그래밍 모델의 핵심 부분이며, 풍부한 유형 시스템을 사용하여 쉽게 발행할 수 있습니다.
이러한 이벤트는 논리를 트리거하는 데만 사용될 수 있는 것이 아니라, 체인에서 데이터 흐름으로도 사용될 수 있습니다.
웹 및 모바일에서의 효율적인 데이터 검색
실시간 분석 엔진 및 데이터 레이크
서버리스 또는 전통적인 컴퓨팅을 통해 애플리케이션 및 비즈니스 프로세스를 트리거합니다.
Kaleido는 이러한 이벤트를 처리하기 위해 두 가지 내장 기능을 제공합니다. 복잡한 원시 JSON/RPC 인터페이스를 직접 사용하거나 체크포인트 재시작/복구 또는 RLP 디코딩 및 유형 매핑을 처리할 필요가 없습니다. (각각 Chainlink 및 이벤트 스트리밍)
이벤트 스트림: REST API 게이트웨이와 통합된 REST API를 사용하여 구독하고, 간단한 Webhook을 통해 이벤트를 모든 HTTP 인터페이스로 전달하거나 Apache Kafka가 지원하는 암호화된 App 2 App Messaging 레이어를 통해 전달합니다.
5.4. Chainlink -- 스마트 계약을 블록체인에서 현실 세계로 연결하는 오라클 네트워크
Chainlink는 스마트 계약을 현실 세계에 연결하기 위한 업계 표준 오라클 네트워크입니다. "Chainlink 덕분에 개발자는 온체인 코드를 분산 오라클 네트워크가 지원하는 많은 안전한 오프체인 서비스와 결합하여 혼합 스마트 계약을 구축할 수 있습니다. 수십만 명으로 구성된 글로벌 탈중앙화 커뮤니티가 관리하며, Chainlink는 더 공정한 계약 모델을 도입합니다. 현재 Chainlink 네트워크는 탈중앙화 금융(DeFi), 보험 및 게임 생태계와 같은 분야의 스마트 계약에 수십억 달러의 가치를 제공합니다. Chainlink 네트워크의 전체 비전은 Chainlink 2.0 백서에서 확인할 수 있습니다."
Chainlink는 어떤 공개 블로그 게시물이나 회의에서 디자인 아키텍처에 대해 논의하지 않았습니다. 우리는 그들의 채용 공고에서 요구되는 기술 스택을 통해 디자인을 엿볼 수 있을 뿐입니다.------Chainlink는 전통적인 시계열 기반 모니터링에서 이벤트 기반 아키텍처로 전환하고 있습니다.
6: 요약
이러한 노드 시설 서비스 제공업체가 등장하기 전에는 일반인이 온체인 데이터 정보를 얻는 것이 매우 어려웠습니다. 그러나 이제 인터넷에 접속할 수 있는 누구나 블록체인 탐색기나 온체인 데이터 분석 도구를 통해 상대적으로 실시간으로 블록 데이터를 볼 수 있습니다.
그러나 데이터를 볼 수 있는 것과 대규모로 데이터를 사용하는 것은 완전히 다른 개념입니다.
"신들은 세계수에 오르지 않는다. 그들은 무지개 다리를 통해 여러 세계를 가로지른다. 오직 신만이 무지개 다리를 사용할 수 있다. 만약 얼음 거인이나 다른 거인이 무지개 다리를 통해 아스가르드에 오르려 한다면, 그들의 발은 타버릴 것이다."
비록 이제 우리는 노드 호스팅, Web3 API 등의 서비스의 도움을 받고 있지만, 온체인과 오프체인 간의 효율적인 실시간 통신 비용은 여전히 큽니다. 북유럽 신화의 무지개 다리처럼, 여전히 일부 신들의 전용 통로입니다. 그 이유는 온체인 데이터와 오프체인 비즈니스 간에 많은 공백이 존재하기 때문입니다. Kafka는 단지 메시지 전송의 한环节일 뿐이며, 그 사이에는 데이터의 실시간 수집, 정제 및 저장이 필요합니다. 과거에 전통 IT 비즈니스를 위해 서비스된 미들웨어, 데이터베이스 등이 현재의 Web3 IT 아키텍처에 완전히 적합하지 않을 수 있습니다. 더욱 많은 기업과 비즈니스가 암호화 분야로 진입함에 따라, 미래에는 블록체인 네트워크 기반의 새로운 오픈 소스 미들웨어 및 데이터 분석 아키텍처가 등장할 가능성이 있습니다.
나는 언젠가 모든 사람이 무지개 다리를 열 수 있는 능력을 갖기를 바랍니다. 우리는 세계수가 창조한 아홉 개의 세계를 자유롭게 오가며 모든 생명체와 소통할 것입니다.