본문으로 건너뛰기
0%

Alchemy의 애플리케이션 모니터링 도구 사용법

작성자: Deric Cheng

마지막 업데이트: 2021년 11월 10일4분 읽기

블록체인과 통신하기 위해 노드를 사용하는 방법에 대한 저희 글과, 자체 노드를 운영하는 대신 Alchemy 같은 노드 제공업체가 필요한 이유에 대한 글을 이미 읽어보셨을 겁니다!

하지만 아직 충분히 다루지 않은 부분이 있는데, 바로 일반적인 노드 제공업체와 비교했을 때 저희를 이용하면서 얻을 수 있는 추가적인 이점들입니다.

특히, 저희가 Ethereum 생태계의 상위 앱 중 70%를 차지하고 있는 주된 이유 중 하나는, 개발자로서의 작업을 훨씬 수월하게 만들어주는 개발자 친화적인 도구 모음을 제공하기 때문입니다.

이러한 도구들은 앱을 더 빠르게 구축하는 것부터, 노드 엔드포인트를 통해 전송되는 요청과 응답을 분석하는 것, 그리고 트래픽과 사용자 상태를 실시간으로 모니터링하는 것까지 다양한 영역을 다룹니다! 이 글을 읽는 대신 직접 사용해보고 싶으시다면, 여기서 사용해보실 수 있습니다.

대시보드 홈 페이지
대시보드 홈 페이지

‍개발 초기 단계에서 이 대시보드가 필요 없다고 느끼시더라도, 믿어주세요 - 일단 dApp을 공개적으로 배포하고 다른 사람들이 여러분의 인프라를 통해 요청을 보내기 시작하면, 이 도구들은 디버깅 과정에서 큰 도움이 될 것입니다.

Alchemy 익스플로러: 과거 요청 조회하기

블록체인에 단일 요청을 보내면, 일반적으로 노드로부터 즉시 쿼리에 대한 응답을 받게 됩니다. 하지만 다음과 같은 경우에는 어떻게 해야 할까요?

  • 요청 중 일부가 잘못된 형식이어서, 지난 하루 동안 실패한 모든 요청을 확인하여 패턴을 파악하고 싶은 경우 (예: -32000 노드 오류 코드를 가진 모든 응답 찾기).
  • dApp을 프로덕션에 배포했고, 사용자들이 인프라 내에서 블록체인 요청을 발생시키는 요청을 보내고 있습니다. 특정 트랜잭션이 블록체인에 도달하지 못하고 실패한다는 보고가 들어오기 시작해서, 해당 트랜잭션 전송 요청을 디버깅하고 싶은 경우.

이 과정을 관리해줄 도구가 없다면, 압축된 텍스트 파일에 저장된 수많은 로그 페이지를 뒤지고, 시간순으로 파일을 정렬하고, grep 문을 사용해 필요한 정보를 찾아내야 할 것입니다. 구식이죠, 저희도 압니다 - 그래서 Request Explorer가 필요한 이유입니다!

지난 이야기: “JSON-RPC API 요청 디버깅하기”
지난 이야기: “JSON-RPC API 요청 디버깅하기”
Alchemy Request Explorer: 과거 JSON-RPC 요청 검색 및 필터링
새롭게 개선된 요청 디버거!

저희 Explorer를 사용하면 1초 전부터 최대 10일 전까지, 저희 인프라를 통해 전송된 과거 요청과 응답을 검색할 수 있습니다! 더 이상 로그를 뒤질 필요 없이, 현대적인 기술을 바로 활용하실 수 있습니다.

이러한 요청에 대해 메서드 유형, HTTP 응답, 노드별 오류 등 다양한 매개변수로 쿼리를 필터링할 수 있습니다! 타임스탬프, 요청 소요 시간 등 다양한 기준으로 요청을 확인할 수 있습니다.

눈에 띄는 요청을 찾았다면, 일반적으로 다음 두 가지 작업을 하고 싶으실 겁니다:

  1. 로그에서 유사한 요청을 검색하여 특정 문제의 발생 빈도를 파악합니다.
  2. 동일한 요청을 다시 시도하여 여전히 실패하는지 확인합니다.

첫 번째 경우, 각 요청 옆에 있는 편리한 “Explore Similar” 버튼을 통해 일치하는 매개변수로 새로운 검색을 수행할 수 있습니다! 두 번째 경우는 다음으로 이어집니다:

Alchemy Dashboard Demo
Free video demo

Alchemy 대시보드 실제 화면 보기

30분 가이드 투어: 대시보드의 모든 도구를 실시간으로 시연합니다.

Watch the demo

Alchemy 컴포저: 브라우저에서 요청 테스트하기

일회성 API 요청을 수동으로 만드는 데 필요 이상으로 시간이 오래 걸린다고 느낀 적이 있으신가요? 저희도 똑같이 느낍니다. 터미널에서 curl 요청을 공들여 작성하든, 두 달 전에 이름을 잘못 지은 Postman 라이브러리를 찾아보든 - 항상 조금 성가신 일입니다.

Alchemy Composer는 기본적으로 브라우저 기반 GUI를 통해 일회성 블록체인 요청을 만들고, 같은 웹페이지에서 즉시 응답을 받을 수 있게 해줍니다.

다음과 같이 할 필요 없이

  • curl 요청을 작성하고 엔드포인트를 선택하는 대신, 테스트하고 싶은 블록체인, 네트워크, 메서드를 그냥 선택하면 됩니다.
  • 각 메서드의 매개변수를 추측하는 대신, 드롭다운에서 선택하면 됩니다!
  • JSON 객체를 파싱하는 대신, 브라우저에서 미리 파싱되어 있습니다!
Alchemy Composer: 브라우저에서 블록체인 API 요청 테스트하기
Alchemy Composer

특히 유용한 추가 기능이 하나 있습니다: 페어 프로그래머와 보고 있는 요청을 공유하고 싶다면, 오른쪽 상단의 “Copy config URL”을 클릭하면 모든 요청 정보를 유지한 채로 해당 URL을 바로 공유할 수 있습니다! 동료와 요청을 빠르고 쉽게 검증하는 방법입니다.

Alchemy 멤풀 워처: 트랜잭션 상태 확인하기

먼저, Mempool이 무엇을 하는지 이해하는 것이 중요합니다. 기본적으로 멤풀은 각 노드 내부에서 대기 중인 트랜잭션을 위한 대기실입니다. 이들은 사용자가 보낸 트랜잭션 중 아직 “마이닝”되지 않았거나 블록체인에 기록되지 않은 트랜잭션입니다.

트랜잭션이 블록체인에서 확정되기 전까지의 일반적인 흐름을 요약하면 다음과 같습니다:

  1. 사용자가 트랜잭션을 생성하고 서명한 뒤, sendTransaction 요청을 만들어 노드로 전송합니다.
  2. 해당 노드는 대기 중인 트랜잭션을 자신의 멤풀에 넣습니다. 멤풀은 트랜잭션에 대해 여러 검증을 수행하며, 그렇지 않으면 이를 거부합니다.
  3. 해당 노드는 대기 중인 트랜잭션을 가능한 많은 피어들과 공유하고, 이 과정이 반복되면서 네트워크 전역의 노드들이 이 특정 대기 트랜잭션을 자신의 멤풀에 갖게 됩니다.
  4. 블록이 마이닝되면, 채굴자는 자신의 멤풀에서 가스 가격이 가장 높은 대기 트랜잭션을 선택해 블록에 포함시킵니다. 이 대기 트랜잭션들은 이제 마이닝된 것입니다.
  5. 시간이 지나도 마이닝되지 않는 대기 트랜잭션은 결국 노드에 의해 제외될 수 있습니다.

여전히 궁금한 점이 있다면, 대기 중인 트랜잭션에 대한 이 글이 도움이 될 수 있습니다!‍

한 가지 큰 문제는 멤풀이 사용자에게 기본적으로 불투명하다는 점입니다 - 그 내용에 대한 정보에 접근하는 유일한 방법은 상태를 확인하기 위한 API 요청을 통해서인데, 이는 끝없는 로그 스트림을 반환합니다.

멤풀 상태를 조회하는 실제 성공 요청입니다. 멋지지 않나요.
멤풀 상태를 조회하는 실제 성공 요청입니다. 멋지지 않나요.

‍이것이 얼마나 번거로운 일인지 깨닫고, 저희는 CLI 대신 대시보드에서 멤풀 상태에 접근할 수 있도록 GUI를 구축하기로 했습니다!

저희의 Mempool Watcher로 멤풀을 살펴보는 모습은 다음과 같습니다:

Alchemy Mempool Watcher: 가스 가격과 상태별 대기 중인 트랜잭션 목록
Alchemy Mempool Watcher

‍왜 대기 중인 트랜잭션이 처리되지 않는지 궁금하셨던 적이 있으신가요? 대부분의 경우, 트랜잭션의 가스 가격이 현재 시세보다 낮기 때문입니다. 이런 도구를 사용하면 멤풀에 걸려 있는 트랜잭션을 빠르게 식별하고, 관련된 가스 가격을 확인하며, 시장 시세와 비교하여 더 높은 가스 가격으로 트랜잭션을 재전송할 시점인지 판단할 수 있습니다.

이 차트들은 다 무엇인가요?

Alchemy 대시보드 차트: 시간에 따른 요청량 및 사용 분석
Alchemy의 차트 및 분석

노드 제공업체로서 저희가 여러분을 위해 수집할 수 있는 유용한 정보가 많이 있으며, 이를 공유하기 위해 최선을 다하고 있습니다! 그렇지 않으면 볼 수 없는, 저희가 그래프로 보여드릴 수 있는 것들:

  • 앱별로 구분된 시간에 따른 요청 수.
  • 미국 및 세계 지도에 표시된 요청의 IP 주소 (클라이언트 앱이 Alchemy로 직접 트래픽을 보내는 경우 매우 유용합니다!)
  • 앱을 통해 전송된 최근 요청의 시각화.
  • 앱과 월별로 정렬 가능한 사용 기록으로, 트래픽 추세를 파악하는 데 도움이 됩니다!

Alchemy는 그 외에 어떤 이점을 제공하나요?

Alchemy는 블록체인을 위한 노드 인프라를 제공합니다. 즉, Ethereum 블록체인(그 외 몇 가지 체인도 포함하여!)에 요청을 보내고 받는 것과 관련된 모든 인프라를 저희가 관리합니다. 왜 노드 제공업체가 필요한지에 대한 정보는 여기 있습니다.

일단 저희 시스템을 통해 요청을 보내기 시작하면, 위에서 설명한 모든 이점을 얻게 됩니다: 앱을 더 쉽게 구축하고 모니터링할 수 있는 시각화 및 웹 기반 브라우저 도구들 말이죠.

그뿐만 아니라, 다음과 같은 것들도 제공합니다:

  • 블록체인을 괴롭히는 확장성 및 일관성 문제를 해결하는 독자적인 인프라 기반의 Alchemy Node API 접근 권한.
  • 블록체인에서 발생하는 트랜잭션 같은 이벤트에 대한 푸시 알림(웹훅)을 제공하는 도구인 Alchemy Notify 접근 권한.
  • 그렇지 않으면 계산 비용이 많이 들거나 불가능한 블록체인 요청을 만들 수 있게 해주는 Enhanced API 접근 권한.
  • 그 외에도 Flow, Crypto.org, 그리고 Polygon, Arbitrum과 같은 L2를 포함한 다양한 체인에서 이러한 기능들을 사용할 수 있는 권한까지 많은 것들을 제공합니다!

Alchemy 시작하기

Alchemy를 노드 제공업체로 설정하는 것은 매우 간단합니다 - 사실 단 한 줄의 코드면 충분합니다! web3.js나 ethers.js를 사용해오셨다면, 저희 대시보드를 통해 Alchemy 계정을 생성하고, API 키를 생성한 뒤, 인스턴스화 부분을 다음과 같이 교체하기만 하면 됩니다:

전체 튜토리얼을 원하신다면, 저희 Getting Started with Alchemy 가이드를 읽어보세요. 도움이 필요하시면, Alchemy 지원 센터를 방문해 주세요.

Alchemy 뉴스레터

출시 소식을 가장 먼저 받아보세요

뉴스레터 구독하기

Alchemy의 최신 제품 업데이트와 리소스 받기

A
O
D
+
구독자 80,000명 이상

이메일 주소를 입력하면 마케팅 커뮤니케이션 및 제품 업데이트 수신에 동의하게 됩니다. Alchemy는 저희 개인정보 처리방침에 따라 수집한 정보를 처리합니다. 언제든지 구독을 취소할 수 있습니다.