---
title: "Ethereum 노드란?"
description: "Ethereum 노드는 Ethereum 네트워크에 연결하는 데 필요한 소프트웨어를 실행하는 컴퓨터를 말합니다."
---

## 정의와 활용

이더리움 노드는 이더리움 네트워크에 연결하는 데 필요한 소프트웨어를 실행하는 컴퓨터를 말한다. 노드들은 서로 연결되어 정보를 주고받으며 트랜잭션을 검증하고 블록체인의 상태에 대한 데이터를 저장한다.

두 용어가 종종 혼용되지만, 정확히는 이렇게 연결된 컴퓨터가 노드이고 이 컴퓨터가 실행하는 소프트웨어를 클라이언트라고 부른다.

‍

## 노드가 Web3에 중요한 이유는?

<ImageBlock
  src="https://media.alchemy.com/1704163825-blockchain-nodes.gif"
  alt="Ethereum 네트워크 전반에서 블록체인 노드가 연결되는 모습을 보여주는 애니메이션"
  width={2500}
  height={1700}
  priority
/>

노드는 블록체인 네트워크를 구성하며 이 네트워크에 접근할 수 있는 유일한 방법이다.

각 노드는 블록체인의 자체 사본을 유지하며 이 사본이 다른 모든 노드의 사본과 일치하는지 확인하는 작업을 수행한다. 새로운 블록이 블록체인에 추가되어야 할 때마다 네트워크상의 모든 노드가 이를 처리해야 한다.

<ImageBlock
  src="https://media.alchemy.com/1704163859-blockchain-nodes-2.gif"
  alt="블록체인 노드가 새 블록에 대해 합의에 도달하는 과정을 보여주는 애니메이션"
  width={2500}
  height={1700}
/>

각 노드는 서명과 트랜잭션의 유효성을 기준으로 새 블록을 수락하거나 거부한다. 블록이 수락되면 합의가 이루어지고 모든 노드가 동기화될 때까지 다른 노드들과 계속 공유된다. 노드는 유효하지 않은 블록을 신속히 거부하고 규칙을 어기려는 나쁜 노드를 식별할 수 있다. 이렇게 노드들이 끊임없이 통신하는 네트워크 덕분에 단일 진실 공급원과 그에 따른 여러 문제에 의존할 필요가 없어진다.

이러한 노드 간의 합의는 블록체인 네트워크를 탈중앙화시키며 Web3의 근간이 된다. 실행되는 노드가 많을수록 블록체인은 더 강력해진다!

‍

## 노드에는 어떤 종류가 있는가?

노드에는 세 가지 종류가 있다:

- 라이트 노드
- 풀 노드
- 아카이브 노드

_라이트 노드_는 네트워크에서 트랜잭션을 처리하는 데 필요한 최소한의 데이터인 블록 헤더만 다운로드한다. 라이트 노드는 이 데이터를 이용해 확인해야 할 특정 블록을 재생성할 수 있기 때문에 트랜잭션을 검증할 수 있다.

이 덕분에 라이트 노드는 네트워크와 효율적으로 상호작용하면서 수 메가바이트의 대역폭과 수 기가바이트의 저장 공간을 절약할 수 있다. 그래서 라이트 노드는 스마트폰이나 노트북처럼 메모리 자원이 제한된 일반적인 기기에서도 실행할 수 있다.

하지만 라이트 노드에도 한계가 있다. 라이트 노드는 접근할 수 없는 데이터를 풀 노드에 요청해야 할 때가 있으며, 이 경우 풀 노드가 직접 트랜잭션을 검증하는 것보다 시간이 더 걸릴 수 있다.

라이트 노드가 노드를 실행하는 가장 쉬운 방법이긴 하지만, 클라이언트를 설치하고 변수를 설정하고 블록 헤더를 다운로드하고 모든 것이 정상적으로 작동하는지 확인하는 데는 여전히 시간과 노하우가 필요하다.

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Light Node", dataType: "object" },
      { key: "2", width: 200, title: "Full Node", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Block Headers</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Block Headers</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>Full Block State</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Full Block State</p>", tooltip: "", icon: "" },
        id: 1,
      },
    ],
  }}
/>

_풀 노드_는 네트워크의 블록이 올바른지 검증하는 데 필요한 모든 것을 갖추고 있다. 어떤 [스마트 컨트랙트](https://www.alchemy.com/docs/how-to-deploy-a-smart-contract-to-the-sepolia-testnet)와도 상호작용할 수 있고 자체 컨트랙트를 배포할 수도 있다.

전체 데이터를 사용하고 저장한다는 것은 풀 노드가 훨씬 더 많은 컴퓨팅 및 대역폭 자원을 필요로 한다는 의미다. 풀 노드는 0번 블록부터 최신 블록\(현재 \+1,000만 개 이상이며 계속 증가 중\)까지 전체 블록체인 상태를 다운로드하고 저장하고 검증하는데, 동기화에 몇 주가 걸릴 수도 있다!

_아카이브 노드_는 풀 노드보다 한 단계 더 나아간다. 풀 노드는 검증에 더 이상 필요하지 않은 항목, 즉 체인과의 오래된 상호작용 내역을 정리하지만, 아카이브 노드는 모든 것\(수 테라바이트에 달하는 추가 데이터\)을 유지한다. 이러한 세부 정보는 정보를 더 효율적으로 쿼리하는 데 유용하고 일부 애플리케이션에는 도움이 되지만, 대부분의 경우에는 과도하다.

‍

## 노드를 실행하는 것이 왜 어려운가?

노드를 구축하고 실행하는 것은 길고 어려운 과정이 될 수 있다. 특히 Web3 세계에 처음 발을 들이고 기술적 전문성이 없는 경우\(적어도 [아직은](https://www.web3.university/)\) 더욱 그렇다.

풀 노드가 현재 블록체인 상태 기준으로 \+1,000만 개 노드에 동기화되기까지 몇 주가 걸릴 수 있다는 사실만으로도 많은 사람이 이 분야에서의 개발을 꺼리게 된다.

비용 또한 요인이며, 빠르게 누적될 수 있다. 여기에는 하드웨어 구매를 위한 높은 초기 투자 비용과 전기 및 서버 호스팅에 드는 지속적인 비용이 포함된다. 노드를 운영할 때는 이것이 항상 작동 중임을 확인해야 한다. 인터넷 지연, 정전, 하드웨어 문제는 비용이 많이 드는 다운타임으로 이어질 수 있다.

[클라이언트 업데이트](https://www.alchemy.com/docs/internal-playbook-upgrading-ethereum-nodes)는 이더리움의 확장성, 보안성, 지속가능성을 지속적으로 개선하는 데 도움이 되지만, 이러한 변경 사항이 예상치 못한 문제를 일으킬 수도 있다. 그리고 더 큰 것을 구축하려 할 때 [문제](https://www.alchemy.com/case-study/augur)가 본격적으로 시작된다!

‍

## 이더리움 노드 확장에는 어떤 문제가 있는가?

이더리움 노드는 애초에 이 정도 수준의 요청을 처리하도록 설계되지 않았기 때문에 몇 가지 고유한 문제가 발생할 수 있다.

### 신뢰성

일부 요청은 노드에게 로그 0번부터 현재 블록까지 전부 조회하도록 요구하며, 이 경우 타임아웃이 발생할 수 있다. 이러한 "죽음의 쿼리"는 노드를 다운시킬 수 있으며 하루 중 언제든 발생할 수 있다. 일반적인 노드처럼 신뢰성이 72%에 불과하다면, 애플리케이션이 연간 100일 넘게 오프라인 상태가 될 수 있다는 의미다!

### 확장성

노드 인프라를 확장하는 것은 까다로울 수 있다. 구축 중인 애플리케이션이 트위터에서 하룻밤 사이에 입소문을 타는데, 기존에 운영 중인 노드가 갑작스러운 트래픽과 트랜잭션 볼륨 증가를 감당하지 못하는 상황을 상상해보라.

새 노드를 동기화하는 데 몇 주가 걸리기 때문에 빠르게 새 노드를 추가할 수도 없다. 게다가 새로운 수요가 기존 노드에 과부하를 걸어 다운시킬 수도 있다. 이는 아무도 애플리케이션을 사용할 수 없는 다운타임과, 자신이 만든 것을 신뢰할 수 없다고 느끼는 불만족스러운 사용자로 이어질 수 있다!

### 데이터 일관성

Web2에서는 로드 밸런서, 즉 상위 계층에서 트래픽을 서로 구분되지 않는 서버들로 분산시키는 네트워크 계층을 사용해 이러한 확장성 문제를 우회할 수 있다. 하지만 블록체인은 비동기적이기 때문에 노드에서는 이것이 불가능하다. 두 노드가 결국에는 동일한 최신 블록을 공유하게 되더라도, 특정 시점에는 한 노드가 다른 노드보다 뒤처져 있을 수 있다.

트래픽이 최신 블록에 대해 서로 다른 견해를 가진 서로 다른 노드를 통해 라우팅되기 때문에, 로드 밸런싱은 매우 다른 두 가지 결과로 이어질 수 있다. 그토록 원하던 [NFT](https://www.alchemy.com/nfts)를 구매했는데 새로고침을 하니 사라진 것처럼 보이는 상황을 상상해보라!

<ImageBlock
  src="https://media.alchemy.com/1704164101-load-balanced-nodes.gif"
  alt="로드밸런싱된 블록체인 노드가 일관되지 않은 데이터를 반환하는 모습을 나타낸 다이어그램"
  width={583}
  height={588}
/>

이러한 종류의 데이터 불일치를 피하려는 시도는 개발팀이 복잡한 임시방편을 짜맞추게 만들고, 결국 [오류를 일으키고 애플리케이션을 다운시키게](https://www.alchemy.com/case-study/bamboo-relay) 된다. 이 모든 문제는 노드를 다루는 과정에서 개발자가 확장성, 신뢰성 유지, 데이터 일관성 보장 중 하나를 선택해야 하는 경우가 많다는 것을 의미하며, 결국 모두에게 만족스럽지 못한 경험으로 이어진다.

‍

## Node-as-a-Service는 언제 사용해야 하는가?

이 모든 것이 다소 벅차게 느껴진다면 걱정하지 않아도 된다! 이제 막 시작하는 단계이든, 노드 문제에 너무 많은 시간과 비용을 쓰고 있다고 느끼든, node-as-a-service가 해결책이 될 수 있다.

Alchemy 같은 노드 제공업체가 노드를 운영해주기 때문에 여러분은 애플리케이션 개발에 집중할 수 있다. 대부분의 제공업체를 통합하는 것은 매우 쉬우며, 블록체인에 대한 읽기와 쓰기를 시작하는 데는 흔히 API 하나만 있으면 된다.

즉, 서버 접근 비용을 지불하고 하드웨어 요구사항을 맞추고 직접 상태를 유지하는 대신, [Alchemy의 Supernode 인프라](https://www.alchemy.com/supernode?a=8defd86d30)를 사용할 수 있다…

<ImageBlock
  src="https://media.alchemy.com/1704164125-alchemy-supernode-infra.png"
  alt="확장 가능한 Ethereum 노드 액세스를 위한 Alchemy Supernode 인프라 다이어그램"
  width={800}
  height={804}
/>

… [단 한 줄의 코드](https://www.alchemy.com/docs/alchemy-quickstart-guide)로.

<ImageBlock
  src="https://media.alchemy.com/1704164613-alchemy-code-api-key.jpg"
  alt="Alchemy API 키로 Ethereum에 연결하는 코드 스니펫"
  width={4441}
  height={522}
/>

Alchemy는 자체 개발한 코디네이터 서비스를 통해 뛰어난 데이터 정확성과 업계 최고 수준의 신뢰성을 보장할 수 있다. 이는 전용 분산 시스템을 통해 이루어지며, 빠르고 매끄럽게 확장할 수 있게 해주어 더 나은 것을 구축하고 더 빠르게 출시할 수 있도록 돕는다.

> "자체 노드나 오류가 잦은 서비스를 사용하는 것은 회사와 아무 관련 없는 문제에 수백 시간의 소중한 엔지니어링 시간을 낭비하는 것이다. Alchemy의 놀라운 수준의 신뢰성, 속도, 지원에 견줄 만한 것은 없다." - Alex Atallah, CTO, [OpenSea](https://www.alchemy.com/dapps/opensea)

OpenSea, Dapper Labs, 0x, Royal, Axie Infinity를 비롯한 [선도적인 블록체인 기업 및 프로젝트](https://www.alchemy.com/customers) 수백 곳이 놀라운 수준의 신뢰성, 탁월한 고객 서비스, 그리고 [Web3 구축](https://www.alchemy.com/docs/alchemy-quickstart-guide)을 그 어느 때보다 접근하기 쉽게 만들어주는 뛰어난 제품군 덕분에 모두 Alchemy를 선택하고 있다.

<ImageBlock
  src="https://media.alchemy.com/1704164710-alchemy-portfolio.png"
  alt="OpenSea, Dapper Labs 등 Alchemy 기반으로 구축하는 기업들의 로고"
  width={1600}
  height={370}
/>

[Alchemy 계정에 가입](https://www.alchemy.com/?a=8defd86d30)하고 노드에 대한 걱정 없이 바로 개발을 시작해보라! Alchemy가 Web3 구축 여정에 어떻게 도움이 될 수 있는지 더 알아보고 싶다면 [Getting Started With Alchemy](https://www.alchemy.com/docs/alchemy-quickstart-guide) 문서를 확인하고, [Alchemy Discord](https://discord.com/invite/mMGsVgd)에서 24시간 언제든 문의해보라.
