---
title: "Alchemy의 Notify API와 SDK로 연간 $3M 이상 절감한 방법"
description: "Alchemy의 Notify API와 SDK로 효율적인 운영을 통해 연간 $3M 이상을 절감한 방법을 확인하세요."
---

## 모두의 눈앞에 있던 게임 체인저급 최적화

web3에서 빌드한다면 탈중앙화 애플리케이션을 테스트해야 합니다. 하지만 실제 네트워크에서 테스트하려면 많은 비용이 듭니다. 그래서 web3 빌더들은 [Goerli 같은 테스트넷](https://www.alchemy.com/overviews/what-are-testnets)을 사용합니다. 테스트넷에서는 테스트넷 토큰을 사용해 무료로 트랜잭션을 보내고 동작을 검증할 수 있습니다.

테스트넷 토큰을 받으려면 파우셋이 필요합니다. 파우셋은 빌더들에게 무료 테스트넷 토큰을 "드립"으로 제공하는 핵심 서비스로, 이를 통해 Goerli나 Mumbai 같은 테스트넷에서 빌드할 수 있습니다.

Alchemy는 web3를 10억 명에게 전달하는 것을 목표로 하며, 특히 이러한 빌더들을 대상으로 합니다. 그래서 우리는 개발자들이 더 쉽게 빌드할 수 있도록 파우셋을 만들었고, 모든 개발자에게 전례 없는 테스트넷 토큰 접근성을 제공하는 동시에 web3 개발을 단순화하고 알렸습니다.

2021년부터 [Goerli Faucet](https://goerlifaucet.com/)과 [Mumbai Faucet](https://mumbaifaucet.com/)을 운영해왔으며 \(더 이상 사용되지 않는 Rinkeby Faucet도 포함\), 개발자들에게 300만 회 이상 테스트넷 토큰을 전송했습니다!

Goerli와 Mumbai 파우셋은 현재 매우 많은 트래픽을 처리하고 있어서, 이를 운영하는 데 Alchemy는 연간 수백만 달러의 비용을 지불하고 있었습니다. 하지만 최근 300배의 비용 절감을 실현했고, 그 결과 연간 300만 달러 이상을 절약하게 되었습니다.

어떻게 했냐고요?

Alchemy Notify와 Alchemy SDK를 사용해서요… 바로 우리 자신의 제품들을… 눈앞에 있던 것들을요.

👇 아래에서 파우셋을 어떻게 최적화했는지 읽어보세요. 여러분의 앱을 최적화하는 데도 이 기법들을 활용해보세요.

## 문제: 과도한 \(그리고 비용이 많이 드는\) JSON-RPC 호출

파우셋을 운영하던 방식의 두 가지 주요 문제는 다음과 같았습니다:

1. 과도한 getTransactionReceipt 호출
1. 레거시 web3 라이브러리 사용

파우셋 요청의 일일 볼륨을 고려하면, 우리 노드로 가는 총 RPC 호출 수는 빠르게 누적되었습니다.

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Metric", dataType: "object" },
      { key: "2", width: 200, title: "Value", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p><strong>Faucet requests</strong><br/><em>User requests to the faucet</em></p>", tooltip: "", icon: "" },
        "2": { title: "<p>26k requests / day</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p><strong>Transaction requests</strong><br/><em>Our calls to getTransactionReceipt</em></p>", tooltip: "", icon: "" },
        "2": { title: "<p>305 million requests / day</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p><strong>Cost</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<p>$3 million</p>", tooltip: "", icon: "" },
        id: 2,
      },
    ],
  }}
/>

각 문제를 자세히 살펴보겠습니다.

### 1. 마이닝된 트랜잭션을 확인할 알림 시스템 부재

사용자가 Goerli ETH \(GETH\)나 Mumbai MATIC을 요청할 때마다, 트랜잭션이 마이닝되어 확인될 때까지 [`getTransactionReceipt`](https://www.alchemy.com/docs/chains/ethereum/ethereum-api-endpoints/eth-get-transaction-receipt)을 연속적으로 호출했으며, 사용자 요청 하나당 `getTransactionReceipt`을 여러 번 호출해야 하는 경우가 많았습니다.

파우셋 트래픽이 적고 레거시 web3 라이브러리 버그가 없었다면, 이 방식은 매우 비효율적이었을지언정 과도한 비용이 들지는 않았을 것입니다.

사용자가 파우셋에서 토큰을 요청할 때마다 평균적으로 `getTransactionReceipt`에 약 16회의 호출을 보내게 되었을 것입니다.

### 2. 레거시 Web3 라이브러리 사용

우리 서비스는 레거시 web3 라이브러리를 사용하고 있었는데, 우리도 모르는 사이 여기에 버그가 있었습니다. 트랜잭션 성공을 확인한 후에도 시스템이 계속 노드를 호출하여, \(불필요한\) `getTransactionReceipt` 호출 총 수가 급격히 늘어났습니다.

<VideoCta
  title="Alchemy 대시보드 실제 사용 모습 보기"
  description="30분 가이드 투어: 대시보드의 모든 도구를 실시간으로 시연합니다."
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>

## 해결책: Alchemy Notify와 Alchemy SDK

노드로 가는 비용이 많이 드는 JSON-RPC 호출을 줄이기 위해 도입한 두 가지 주요 해결책은 다음과 같습니다:

1. getTransactionReceipt 호출을 Alchemy Notify의 웹훅 알림으로 대체
1. 레거시 web3 라이브러리를 Alchemy SDK로 대체

### 1. Alchemy Notify로 마이그레이션

우리는 원시 `getTransactionReceipt` 메서드 호출을 중단하고, Alchemy Notify의 웹훅을 사용해 [트랜잭션이 마이닝되거나 드롭될 때 실시간 알림을 받도록](https://www.alchemy.com/docs/reference/notify-api-quickstart) 했습니다. 아웃바운드 호출이 전혀 없이, 사용자가 GETH를 성공적으로 받으면 알림이 우리에게 바로 전송됩니다.

### 2. Alchemy SDK로 업그레이드

우리는 [레거시 web3 라이브러리에서 Alchemy SDK로 마이그레이션](https://www.alchemy.com/docs/alchemy-quickstart-guide)했으며, 이를 통해 필요한 `getTransactionReceipt` 호출 수를 기하급수적으로 늘렸던 버그를 사실상 해결했습니다.

## **연간 비용 절감**

이 두 가지 간단한 변경만으로 팀은 연간 300만 달러 이상의 비용을 절감했습니다. 파우셋 운영에 드는 총 연간 비용을 약 560달러까지 줄였습니다. 🤯

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Metric", dataType: "object" },
      { key: "2", width: 200, title: "Value", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Faucet requests<br/><em>Sent from users to the faucet</em></p>", tooltip: "", icon: "" },
        "2": { title: "<p>26k requests / day</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>Transaction requests<br/><em>Us calling getTransactionReceipt</em></p>", tooltip: "", icon: "" },
        "2": { title: "<p>0 / day</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p><strong>Total Cost</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<p><strong>$560</strong></p>", tooltip: "", icon: "" },
        id: 2,
      },
    ],
  }}
/>

### 여러분의 프로젝트에 의미하는 것

[Alchemy Notify](https://www.alchemy.com/notify)와 [Alchemy SDK](https://www.alchemy.com/sdk) 같은 제품들은 web3 제품 운영을 불필요하게 비싸고 번거롭고 시간이 많이 들게 만드는 문제들을 해결하도록 설계되었습니다.

이 제품들은 설정이 매우 쉬우며, 비용과 시간을 절감함으로써 백엔드 인프라를 걱정하는 대신 프론트엔드 핵심 비즈니스에 집중할 시간과 자금을 확보할 수 있게 해줍니다.
