네트워크 통신
오늘은 네트워크 구조와 통신 방식에 대한 개념을 정리해보았다. 기존에 알고 있던 클라이언트-서버 모델을 다시 복습하면서, 네트워크가 단순히 데이터를 주고받는 것이 아니라, 안정성과 효율성, 확장성을 고려해야 하는 복잡한 시스템이라는 점을 다시 한번 깨닫게 되었다.
일반적인 네트워크는 중앙화된 서버를 통해 데이터를 주고받는 방식을 따른다. 클라이언트가 요청을 보내면, 이를 처리하는 중앙 서버가 데이터베이스로부터 정보를 가져와 응답을 반환하는 형태다. 이런 구조는 명확한 장점이 있지만, 서버가 단일 장애 지점(Single Point of Failure)이 될 위험이 크다. 만약 중앙 서버가 공격을 받거나 장애가 발생하면 전체 시스템이 영향을 받을 수밖에 없다. 반면, 블록체인과 P2P 네트워크는 이러한 문제를 해결하기 위해 등장한 개념이다. 모든 노드가 독립적으로 데이터를 보유하며, 하나의 서버가 다운되더라도 다른 노드가 동일한 데이터를 제공할 수 있는 구조다. 그러나 이러한 분산 시스템은 네트워크를 동기화하는 데 시간이 걸리고, 노드 수가 증가할수록 성능 저하가 발생할 수 있다는 단점도 존재한다.
TCP와 HTTP, 그리고 Web Socket
이번 학습을 통해 가장 중요하게 느낀 것은 프로토콜이란 무엇인가에 대한 개념이었다. 네트워크에서 데이터를 주고받으려면 반드시 정해진 규칙(프로토콜)을 따라야 한다. 우리가 일상에서 우편을 보낼 때 보낼 사람, 받을 사람, 우편 규칙을 따르는 것과 마찬가지다. 네트워크에서 데이터가 이동하는 과정은 단순하지 않다. 우리가 웹사이트를 방문하거나, 이메일을 보내거나, 파일을 다운로드할 때, 데이터는 단일 경로를 통해 전송되는 것이 아니라 여러 단계를 거쳐 전달된다. 이러한 과정을 체계적으로 정리한 개념이 OSI 7계층(Open Systems Interconnection Model)이다. OSI 모델은 네트워크 통신을 네트워크의 작동 원리를 단계별로 이해하는 틀을 제공하여 물리 계층에서 응용 계층까지 총 7단계로 나누어 정의하며, 각 계층은 특정한 역할을 하며, 데이터가 이동할 때 각 단계에서 필요한 프로토콜을 적용한다. 이 중에서 오늘 집중한 개념은 전송 계층(Transport Layer)의 TCP, 그리고 응용 계층(Application Layer)의 HTTP였다.

TCP(Transmission Control Protocol)는 네트워크에서 데이터를 정확하고 안전하게 전달하는 전송 계층 프로토콜이다. 데이터가 손실되면 재전송을 요청하여 신뢰성을 보장한다. 반면, 같은 계층에서 비교할 수 있는 UDP(User Datagram Protocol)는 속도를 우선시하는 방식으로, 실시간 스트리밍이나 온라인 게임처럼 빠른 응답이 중요한 서비스에서 사용된다.
TCP 위에서 동작하는 HTTP(HyperText Transfer Protocol)는 웹 브라우저와 서버 간 데이터를 주고받는 방식이다. 우리가 웹사이트를 방문할 때 입력하는 http://가 바로 이 프로토콜을 의미한다.
HTTP는 기본적으로 요청-응답 방식으로 작동하며, GET, POST, PUT, DELETE 등 다양한 메서드를 제공하여 데이터를 조회하거나 수정할 수 있다. 특히 HTTP는 계속해서 발전해왔는데, HTTP/2에서는 멀티플렉싱(Multiplexing)을 통해 한 번의 연결로 여러 요청을 동시에 처리할 수 있게 되었다. 또한 서버 푸시(Server Push) 기능이 도입되어, 클라이언트가 요청하기 전에 서버가 필요한 데이터를 미리 전송할 수도 있다.
HTTP의 이러한 발전을 기반으로 WebSocket이 등장했다. WebSocket은 초기 연결만 HTTP로 설정한 후, 이후에는 실시간 양방향 통신이 가능한 프로토콜이다. 즉, 클라이언트와 서버가 지속적으로 연결된 상태에서 데이터가 변경될 때마다 즉시 업데이트할 수 있다. 카카오톡 메시지 전송, 주식 거래 시스템, 온라인 협업 도구 등 실시간성이 중요한 서비스에서 널리 사용된다.
RPC와 gRPC, 그리고 HTTP API와의 차이
기존의 네트워크 통신이 단순한 데이터 전송을 의미한다면, RPC(Remote Procedure Call)는 원격에서 함수를 실행하는 방식을 의미한다. RPC는 네트워크를 통해 다른 컴퓨터에서 실행되는 함수를 호출할 수 있도록 만들어진 개념이다. 이 과정에서 중요한 요소가 IDL(Interface Definition Language), Stub, Program이다.
- IDL은 클라이언트와 서버가 같은 규칙을 따를 수 있도록 함수의 구조를 정의하는 명세서다.
- Stub은 원격 함수를 직접 실행하는 것이 아니라, 중간에서 요청을 전달하고 응답을 받아오는 역할을 한다.
- Program은 이러한 RPC 호출 과정 전체를 의미한다.
이전부터 사용되던 RPC 개념은 최근 들어 gRPC라는 더 강력한 버전으로 발전했다. gRPC(Google Remote Procedure Call)는 HTTP/2를 기반으로 만들어진 고성능 네트워크 프레임워크로, 마이크로서비스 환경에서 특히 많이 사용된다. gRPC의 가장 큰 특징은 Protocol Buffers(ProtoBuf)라는 데이터 직렬화(Serialization) 방식을 사용한다는 점이다. ProtoBuf는 JSON보다 데이터 크기가 작고, 처리 속도가 빠르며, 네트워크 대역폭을 절약할 수 있다. 또한, .proto 파일을 이용해 다양한 프로그래밍 언어(Java, Python, Go 등)에서 자동으로 코드 생성을 지원하여 개발 효율성을 극대화한다.
이러한 이유로 gRPC는 블록체인 네트워크에서도 핵심 프로토콜로 사용된다. 블록체인은 분산된 노드들이 서로 데이터를 주고받으며 거래를 검증해야 하므로, 노드 간 통신이 빈번하게 발생한다. 일반적인 HTTP API로는 이러한 대량의 데이터를 처리하는 데 한계가 있지만, gRPC를 사용하면 더 적은 대역폭으로 빠르게 데이터를 전송할 수 있으며, 양방향 스트리밍도 가능하다. 특히, 이더리움 2.0 및 여러 블록체인 프로젝트에서 gRPC가 채택되는 이유도 이러한 성능상의 이점 때문이다.
그렇다면 gRPC와 HTTP API를 비교해볼까?
gRPC와 HTTP API는 네트워크를 통해 데이터를 주고받는 방식이라는 점에서 유사하지만, 내부적인 작동 방식과 성능에서 큰 차이가 있다. 여기서 중요한 점은 HTTP와 HTTP API는 다르다는 것이다. RPC/gRPC는 HTTP 위에서 동작하는 기술이기 때문에 HTTP 자체와 비교하지 않는다.
- HTTP는 데이터를 전송하는 프로토콜 자체를 의미하고,
- HTTP API(REST API)는 HTTP를 활용하여 데이터를 주고받는 API 방식이다.

결론적으로, gRPC는 고성능, 효율적인 데이터 직렬화, 다중 언어 지원, 스트리밍 기능 등의 장점을 갖고 있으며, 블록체인과 같은 대량의 데이터를 빠르게 처리해야 하는 네트워크 환경에서 중요한 역할을 하고 있다. gRPC는 마이크로서비스, 고성능 API, 실시간 스트리밍이 필요한 환경에서 유리하다. 반면, HTTP API는 웹 서비스나 공개 API, 브라우저 기반 서비스에서 활용하기 적합하다.
학습을 통해 얻은 인사이트
오늘 학습을 통해 네트워크 통신이 단순한 데이터 전송이 아니라, 안정성과 효율성, 확장성을 고려해야 하는 복합적인 시스템이라는 점을 다시 한 번 느꼈다. TCP와 HTTP의 관계, RPC와 gRPC의 차이, WebSocket의 실시간 통신 방식까지 다양한 개념들이 연결되면서, 결국 핵심은 서비스의 특성과 요구사항에 따라 적절한 기술을 선택하는 것이라는 점을 깨달았다.
- 네트워크 구조의 선택
- 중앙화된 서버와 P2P 네트워크는 각각의 장점과 단점이 있으며, 서비스의 특성에 따라 최적의 방식을 선택해야 한다.
- 블록체인처럼 노드 간 독립적인 데이터 저장이 필요한 경우 P2P 네트워크가 유리하지만, 속도와 일관성이 중요한 경우 중앙화된 서버 모델이 더 적합할 수 있다.
- 프로토콜의 역할
- HTTP는 웹을 위한 표준 프로토콜이지만, gRPC와 같은 새로운 기술들이 더 빠르고 효율적인 네트워크 통신을 가능하게 한다.
- WebSocket은 기존 HTTP보다 실시간성이 필요한 서비스에서 훨씬 유리하며, 카카오톡 같은 메시징 서비스나 금융 거래 시스템에서 필수적인 요소다.
- gRPC의 강점
- 단순한 데이터 전송이 아닌, 원격 함수를 실행하는 방식(RPC)의 장점을 활용할 수 있다.
- 기존의 HTTP API와 비교했을 때, 더 적은 대역폭과 빠른 속도로 데이터를 주고받을 수 있으며, 실시간 스트리밍도 지원한다.
- 블록체인이나 마이크로서비스 환경에서는 필수적인 기술이 될 가능성이 높다.
이제는 단순히 기술을 배우는 것이 아니라, 각 기술이 어떤 문제를 해결하기 위해 등장했으며, 어떤 환경에서 최적의 선택이 될 수 있는지 고민하는 과정이 더 중요하다는 것을 깨달았다. 앞으로는 이러한 네트워크 기술들이 실제 프로젝트에서 어떻게 활용될 수 있는지 더 깊이 고민해볼 필요가 있을 것 같다.
'블록체인' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 11일차: 한 번에 끝내는 블록체인 개발 A to Z 강의 후기 (3) | 2025.03.15 |
|---|---|
| 패스트캠퍼스 환급챌린지 10일차: 한 번에 끝내는 블록체인 개발 A to Z 강의 후기 (0) | 2025.03.14 |
| 패스트캠퍼스 환급챌린지 9일차: 한 번에 끝내는 블록체인 개발 A to Z 강의 후기 (0) | 2025.03.13 |
| 비트코인 암호화 기술 완전 정복: ECDSA부터 해시, 그리고 머클트리 (0) | 2025.03.13 |
| 패스트캠퍼스 환급챌린지 8일차: 한 번에 끝내는 블록체인 개발 A to Z 강의 후기 (0) | 2025.03.12 |