gRPC 로 애플리케이션 구현

Code Engine를 사용하면 gRPC 기능을 이용하여 클라이언트 호출을 처리하기 위해 gRPC 서버로 실행되도록 애플리케이션을 구성할 수 있습니다.

gRPC 는 데이터 센터 간에 서비스를 연결할 수 있는 최신 오픈 소스 고성능 원격 프로시저 호출 (RPC) 프레임워크입니다. 효율적인 2진 직렬화, 양방향 스트리밍, 클라이언트 및 서버에 대한 로드 밸런싱, 추적, 상태 검사 및 인증을 제공합니다. 자세한 정보는 gRPC 문서를 참조하십시오.

gRPC 사용의 이점

gRPC 는 클라이언트와 서버 간의 통신을 용이하게 하는 몇 가지 장점을 제공합니다. gRPC 의 기본적인 측면은 원격 호출에 사용 가능한 모든 메소드 및 매개변수를 캡슐화하는 명확한 인터페이스를 정의하는 것입니다. 서버 측에서 이 인터페이스는 클라이언트 요청을 효과적으로 처리하고 응답하기 위해 구현됩니다.

Code Engine 애플리케이션을 사용하여 gRPC 에 대해 작업하는 이러한 접근 방식은 이점을 제공합니다.

  • 상호 운영성- gRPC 클라이언트 및 서버는 다양한 환경에서 서로 실행하고 통신할 수 있습니다. 예를 들어, 클라이언트가 Java에 정의되어 있는 동안 Go 언어로 서버를 정의할 수 있습니다.

  • 직렬화- gRPC 는 메시지 직렬화에 프로토콜 버퍼를 사용하며, 이는 HTTP API에서 JSON을 사용하는 것보다 크기 및 속도 면에서 더 효율적입니다.

  • 스트리밍- gRPC 는 클라이언트 및 서버가 단일 연결을 통해 동시에 메시지를 보내고 받을 수 있도록 양방향 스트리밍을 지원합니다.

  • 오류 발견- gRPC 는 프로토콜 버퍼 (.proto 파일) 를 통해 클라이언트와 서버 간에 강력한 유형의 계약을 적용합니다. 이 계약은 클라이언트와 서버가 더 나은 코드 생성, 유효성 검증 및 오류 처리를 제공하는 인터페이스 및 데이터 구조에 동의하는지 확인합니다.

  • 보안- gRPC 는 클라이언트와 서버 간의 보안 통신을 제공하는 상호 TLS를 포함하여 다양한 인증 및 암호화 방법을 지원합니다.

gRPC 를 사용하도록 Code Engine 애플리케이션 구성

gRPC 는 프로젝트 레벨에서 Code Engine 애플리케이션에 대해 지원됩니다. 즉, Code Engine gRPC 서버 애플리케이션은 동일한 프로젝트에서 실행되는 클라이언트에만 트래픽을 제공할 수 있습니다.

Code Engine CLI를 사용하여 Code Engine gRPC 애플리케이션을 구성해야 합니다.

시작하기 전에

Code Engine에서:

  1. ibmcloud ce application create 명령을 사용하여 애플리케이션을 작성하고 배치하십시오. 이 애플리케이션이 전송 모드로 HTTP/2 를 사용하는 gRPC를 지원함을 표시하려면 [NAME:]PORT 형식으로 --port 옵션을 지정해야 합니다 (예: --port h2c:8080). [NAME:]h2c일 경우 포트는 암호화되지 않은 HTTP/2를 사용합니다. 기본적으로 Code Engine에서는 앱이 포트 8080에서 수신 연결을 청취한다고 가정합니다.

    다음 예제에서 myapp-grpcserver 를 서버 애플리케이션의 이름으로 사용하고 참조할 이미지로 icr.io/codeengine/grpc-server 를 지정하십시오.

    ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server
    
  2. application get 명령을 실행하여 앱에 대한 세부사항을 표시하십시오.

    ibmcloud ce application get --name myapp-grpcserver
    

    출력 예

    [...]
    OK
    
    Name:               myapp-grpcserver
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Port:               h2c:8080
    [...]
    

이제 gRPC를 사용하도록 서버 앱이 작성되고 배치되었으므로 gRPC로 서버에 액세스하려면 동일한 프로젝트 내에 클라이언트 애플리케이션을 배치해야 합니다. gRPC 서버 및 클라이언트 애플리케이션을 배치하기 위한 Code Engine 샘플 코드에 대한 자세한 정보는 Code Engine grpc 샘플을 참조하십시오.

GitHub 의 IBM Cloud Code Engine 샘플 저장소 에서 빌드된 Code Engine 샘플 이미지는 공용 icr.io/codeengine 네임스페이스의 IBM Cloud® Container Registry 에서 사용 가능합니다.