Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

gRPC-Web이란 무엇인가? 알아야 할 모든 것

gRPC-Web가 무엇인지, 그 이점과 시작 방법을 이 포괄적인 가이드에서 알아보세요. gRPC-Web가 웹 앱과 gRPC 서비스 간의 효율적인 통신을 어떻게 가능하게 하는지, Apidog와 같은 도구가 API 개발 프로세스를 어떻게 간소화할 수 있는지 배워보세요.

Young-jae

Young-jae

Updated on December 20, 2024

안녕하세요! 웹 개발의 최신 트렌드를 따라잡고 있다면, 아마 gRPC-Web이라는 용어를 들어봤을 것입니다. 아마도 개발자로서 이를 프로젝트에 통합해야 할지 고민하고 있을 수도 있죠. 아니면 이 모든 소문이 어떤 것인지 궁금할 수도 있습니다. 어쨌든, 당신은 올바른 곳에 오셨습니다. gRPC-Web의 세계로 뛰어들어 봅시다. 이 게시물의 끝에 이게 무엇인지, 왜 유용한지, 그리고 어떻게 사용할 수 있는지에 대한 확실한 이해를 하게 될 것입니다.

gRPC-Web이란?

먼저, gRPC-Web이란 무엇인가요? 본질적으로 gRPC-Web은 웹 애플리케이션이 gRPC 서비스를 통신할 수 있게 해주는 자바스크립트 클라이언트 라이브러리입니다. 이는 HTTP/2를 사용하여 메시지를 전송하는 오픈 소스 프레임워크인 gRPC (Google Remote Procedure Call)의 기능을 확장합니다. gRPC는 확장 가능하고 효율적인 API를 구축하는 것을 쉽게 만들기 위해 설계되었습니다.

gRPC web

gRPC에 대한 간단한 요약

gRPC-Web에 대해 더 깊이 들어가기 전에, gRPC 자체에 대한 간단한 복습을 해봅시다. gRPC는 Google에서 개발했으며, 마이크로서비스 통신에 널리 사용됩니다. HTTP/2, 프로토콜 버퍼(프로토폼), 그리고 인증, 로드 밸런싱 등과 같은 기능을 제공합니다. gRPC를 사용하면 프로토콜 버퍼를 사용하여 서비스 메서드와 메시지 유형을 정의하며, 이후 클라이언트와 서버 모두를 위한 코드를 생성합니다.

왜 gRPC-Web이 필요한가요?

그렇다면 우리가 이미 gRPC가 있는데 왜 gRPC-Web이 필요할까요? 그 답은 브라우저의 제한에 있습니다. gRPC는 서버 간 통신에 뛰어나지만, 브라우저는 gRPC가 의존하는 HTTP/2 트레일러를 지원하지 않기 때문에 직접 작동하지 않습니다. 여기서 gRPC-Web이 등장합니다. gRPC-Web은 다리 역할을 하여 gRPC 서비스가 웹 애플리케이션에 의해 소비될 수 있게 해줍니다.

gRPC

gRPC-Web의 주요 이점

이제 gRPC-Web이 무엇인지 알았으니, 사용하고 싶은 이유를 알아봅시다. 다음은 몇 가지 주요 이점입니다:

1. 성능

gRPC-Web의 뛰어난 기능 중 하나는 성능입니다. HTTP/2와 프로토콜 버퍼를 사용하여 gRPC-Web은 높은 수의 요청을 효율적으로 처리할 수 있습니다. 이는 실시간 데이터 교환이 필요하거나 여러 동시 연결을 관리해야 하는 애플리케이션에 이상적입니다.

2. 사용 용이성

gRPC-Web을 사용하면 웹 클라이언트와 백엔드 서비스 모두에 대해 동일한 프로토콜 버퍼 정의를 활용할 수 있습니다. 즉, 애플리케이션 스택 전반에 걸쳐 일관성을 유지하고 작성해야 하는 보일러플레이트 코드를 줄일 수 있습니다. 또한, Apidog와 같은 도구를 사용하면 API 개발 프로세스를 더욱 간소화할 수 있습니다.

3. 확장성

gRPC-Web은 HTTP/2를 사용하기 때문에 다중 요청이 단일 연결을 통해 전송될 수 있는 멀티플렉싱과 같은 이점이 있습니다. 이는 여러 연결을 생성하고 관리하는 것과 관련된 오버헤드를 줄여 애플리케이션의 확장성을 높입니다.

4. 상호 운용성

gRPC-Web은 웹 애플리케이션과 gRPC 서비스 간의 원활한 통신을 가능하게 합니다. 이는 추가 REST API를 생성할 필요 없이 기존 gRPC 기반 마이크로서비스 아키텍처와 상호작용할 수 있는 현대적인 웹 앱을 구축할 수 있음을 의미합니다.

gRPC-Web 시작하기

좋습니다, 이론은 충분합니다! 이제 손을 더럽히고 gRPC-Web을 프로젝트에서 어떻게 사용할 수 있는지 살펴봅시다.

사전 요구 사항

시작하기 전에 다음을 설치했는지 확인하세요:

  • Node.js
  • npm 또는 yarn
  • 프로토콜 버퍼 컴파일러 (protoc)

1단계: 서비스 정의하기

첫 번째 단계는 프로토콜 버퍼를 사용하여 gRPC 서비스를 정의하는 것입니다. 서비스 및 메시지 정의와 함께 .proto 파일을 생성하십시오. 예를 들어:

syntax = "proto3";

package example;

service HelloService {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}

2단계: 클라이언트 및 서버 코드 생성하기

다음으로, 프로토콜 버퍼 컴파일러를 사용하여 클라이언트 및 서버 코드를 생성합니다. 다음 명령어를 실행하세요:

protoc -I=. --js_out=import_style=commonjs,binary:. --grpc-web_out=import_style=commonjs,mode=grpcwebtext:. example.proto

이 명령어는 gRPC-Web 클라이언트를 위한 필요한 자바스크립트 파일을 생성합니다.

3단계: 서버 설정하기

이제 요청을 처리할 gRPC 서버를 설정합니다. 다음은 Node.js를 사용하는 예입니다:

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

const packageDefinition = protoLoader.loadSync('example.proto', {});
const exampleProto = grpc.loadPackageDefinition(packageDefinition).example;

function sayHello(call, callback) {
  callback(null, { message: `안녕하세요, ${call.request.name}!` });
}

const server = new grpc.Server();
server.addService(exampleProto.HelloService.service, { sayHello: sayHello });
server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
  server.start();
});

4단계: 클라이언트 설정하기

마지막으로, gRPC 서버와 통신할 웹 클라이언트를 설정합니다. 다음은 React를 사용하는 예입니다:

import React, { useState } from 'react';
import { HelloServiceClient } from './example_grpc_web_pb';
import { HelloRequest } from './example_pb';

const client = new HelloServiceClient('http://localhost:8080');

function App() {
  const [response, setResponse] = useState('');

  const sayHello = () => {
    const request = new HelloRequest();
    request.setName('세계');

    client.sayHello(request, {}, (err, response) => {
      if (err) {
        console.error(err);
      } else {
        setResponse(response.getMessage());
      }
    });
  };

  return (
    <div>
      <button onClick={sayHello}>인사하기</button>
      <p>{response}</p>
    </div>
  );
}

export default App;

5단계: 프록시 설정하기

gRPC-Web은 HTTP/2를 사용하므로 요청을 변환하기 위한 프록시를 설정해야 합니다. 이 목적으로 grpc-web 프록시를 사용할 수 있습니다. 다음은 설정 방법입니다:

docker run -d -p 8080:8080 --network host \
  --name grpc-web-proxy \
  envoyproxy/envoy:v1.18.3 -c /etc/envoy-config.yaml

envoy-config.yaml 파일을 다음 내용으로 생성합니다:

static_resources:
  listeners:
    - address:
        socket_address:
          address: 0.0.0.0
          port_value: 8080
      filter_chains:
        - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                codec_type: AUTO
                stat_prefix: ingress_http
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: local_service
                      domains: ["*"]
                      routes:
                        - match:
                            prefix: "/"
                          route:
                            cluster: grpc_service
                http_filters:
                  - name: envoy.filters.http.grpc_web
                  - name: envoy.filters.http.router
  clusters:
    - name: grpc_service
      connect_timeout: 0.25s
      type: logical_dns
      lb_policy: round_robin
      http2_protocol_options: {}
      load_assignment:
        cluster_name: grpc_service
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: 127.0.0.1
                      port_value: 50051

gRPC-Web 개발을 위한 도구들

gRPC-Web 설정은 상당히 간단하지만, 개발 프로세스를 더욱 매끄럽게 만들어줄 도구들이 있습니다. 그런 도구 중 하나가 Apidog입니다. Apidog는 API를 설계하고, 테스트하며, 모니터링하는 데 도움을 주는 API 관리 도구입니다. gRPC를 지원하여 gRPC-Web 개발에 뛰어난 선택입니다. Apidog를 사용하면:

  • API 설계: 직관적인 UI로 gRPC 서비스 정의를 생성하고 관리할 수 있습니다.
  • API 테스트: 강력한 테스트 도구로 gRPC 서비스를 쉽게 테스트할 수 있습니다.
  • API 모니터링: API의 성능을 추적하고 모든 것이 원활하게 실행되고 있는지 확인할 수 있습니다.
Apidog Official website

gRPC-Web과 함께 Apidog를 사용하면 개발 워크플로우를 크게 간소화하고 강력하고 신뢰할 수 있는 APIs를 구축하고 있는지 확인할 수 있습니다.

Apidog로 gRPC-Web 테스트하기 위한 단계별 가이드

1단계: Apidog 설정하기

새 프로젝트 만들기: Apidog를 열고 "+ 새 프로젝트" 버튼을 클릭하여 새 프로젝트를 생성합니다. 프로젝트 이름과 설명을 입력하여 정리하는 데 도움이 됩니다.

Create gRPC project on Apidog

2단계: gRPC 서비스 정의하기

.proto 파일 가져오기: 기존의 .proto 파일을 가져오거나 gRPC 서비스를 수동으로 정의할 수 있습니다. 가져오려면 "가져오기" 버튼을 클릭하고 .proto 파일을 선택하세요. Apidog는 자동으로 파일을 구문 분석하고 필요한 API 정의를 생성합니다.

Import Your .proto File

3단계: gRPC-Web 엔드포인트 구성하기

엔드포인트 설정하기: .proto 파일을 가져온 후 gRPC-Web 서버의 URL을 지정하여 gRPC-Web 엔드포인트를 구성합니다. 예를 들어, 서버가 http://localhost:8080에서 실행되고 있다면, 이 URL을 엔드포인트 구성에 입력하세요.

Configure Your gRPC-Web Endpoint

Apidog는 .proto 파일에 정의된 모든 서비스 메서드를 나열합니다. 테스트하고자 하는 메서드를 선택하여 API에 추가할 수 있습니다.

gRPC-Web의 실제 사용 사례

gRPC-Web이 어떤 분야에서 뛰어난 성능을 발휘하는지에 대한 예시를 들어드리겠습니다:

1. 실시간 애플리케이션

채팅 애플리케이션이나 라이브 대시보드처럼 실시간 데이터 업데이트가 필요한 애플리케이션은 gRPC-Web의 큰 혜택을 볼 수 있습니다. 효율적인 통신 프로토콜은 낮은 지연 시간과 높은 성능을 보장합니다.

2. 마이크로서비스 아키텍처

마이크로서비스 아키텍처로 작업하는 경우, gRPC-Web은 웹 애플리케이션이 백엔드 서비스와 원활하게 통신하는 데 도움을 줄 수 있습니다. 이를 통해 전체 스택에서 일관된 통신 프로토콜을 유지할 수 있습니다.

3. 데이터 집약적 애플리케이션

비디오 스트리밍 서비스나 빅데이터 분석 플랫폼처럼 대량의 데이터를 처리해야 하는 애플리케이션은 gRPC-Web의 효율적인 데이터 직렬화 및 전송 기능을 활용할 수 있습니다.

4. IoT 플랫폼

IoT 플랫폼은 종종 장치와 서버 간의 효율적이고 확장 가능한 통신이 필요합니다. gRPC-Web은 이러한 상호작용을 관리하는 강력한 솔루션을 제공합니다.

결론

이렇게 gRPC-Web에 대한 종합적인 개요를 제공했습니다. gRPC-Web이 무엇인지, 왜 유용한지, 그리고 어떻게 프로젝트에서 사용할 수 있는지 논의했습니다. 성능 이점, 사용 용이성 및 확장성 덕분에 gRPC-Web은 현대 웹 개발을 위한 강력한 도구입니다. 실시간 애플리케이션, 마이크로서비스 아키텍처 또는 데이터 집약적 플랫폼을 구축하든, gRPC-Web은 여러분을 지원합니다. Apidog와 같은 도구를 이용하면 API 개발 프로세스를 간소화하고 서비스가 원활하게 운영되고 있는지 확인할 수 있습니다.

그렇다면, 무엇을 망설이고 있나요? gRPC-Web에 뛰어들어 다음 세대의 웹 애플리케이션을 구축해 보세요!

Ollama 사용법: Ollama를 이용한 로컬 LLM 완전 초보 가이드관점

Ollama 사용법: Ollama를 이용한 로컬 LLM 완전 초보 가이드

인공지능의 세계는 끊임없이 발전하고 있으며, 대규모 언어 모델(LLM)은 점점 더 강력해지고 접근성이 높아지고 있습니다. 많은 사람들이 클라우드 기반 서비스를 통해 이러한 모델과 상호작용하지만, 개인 컴퓨터에서 직접 실행하는 데 초점을 맞추는 움직임이 커지고 있습니다. 바로 여기서 Ollama가 등장합니다. Ollama는 Llama 3, Mistral, Gemma, Phi 등 최첨단 LLM을 로컬에서 다운로드, 설정 및 실행하는 복잡한 과정을 획기적으로 단순화하도록 설계된 강력하면서도 사용자 친화적인 도구입니다. 이 포괄적인 가이드는 설치 및 기본 사용법부터 고급 사용자 지정, API 사용 및 필수 문제 해결까지 Ollama를 시작하는 데 필요한 모든 것을 안내합니다. 로컬 LLM을 애플리케이션에 통합하려는 개발자, 다양한 아키텍처를 실험하려는 연구원, 또는 오프라인에서 AI를 실행하는 데 관심이 있는 애호가이든 관계없이 Ollama는 간소화되고 효율적인 플랫폼을 제공합니다. �

Young-jae

April 28, 2025

Swagger UI 한국어 무료 다운로드 위치관점

Swagger UI 한국어 무료 다운로드 위치

Swagger UI 한국어 인터페이스를 얻는 것의 어려움을 탐색하고 Apidog이 API 개발을 위한 강력한 플랫폼 대안인 이유를 알아보세요.

Oliver Kingsley

April 23, 2025

무료 한국어 Postman 다운로드 방법관점

무료 한국어 Postman 다운로드 방법

Postman 한국어 버전을 무료로 다운로드할 수 있나요? Postman은 한국어를 네이티브로 지원하지 않지만, 해결 방법은 있습니다. 이 방법들을 살펴보고 언어에 관계없이 전체 API 워크플로우를 간소화하도록 설계된 강력하고 통합된 Postman 대안인 Apidog을 발견하십시오.

Oliver Kingsley

April 22, 2025