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에서:
- Code Engine CLI 환경을 설정하십시오.
- 프로젝트를 작성하십시오.
-
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 -
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 에서 사용 가능합니다.