gRPC 서비스 퍼블리싱 5탄 – 속도 제한 및 기타 API 게이트웨이 제어 적용 + 테스트 환경 설정

애플리케이션 운영을 보다 빠르고, 스마트하며, 안전하게 운영할 수 있도록 지원하는 글로벌 No.1 브랜드​ <F5 네트웍스 코리아> 공식 블로그를 방문해주신 여러분, 반갑습니다! 마이크로서비스 애플리케이션 개발을 위한 클라우드 네이티브 기술로서 gRPC에 초점을 맞추어 시리즈 포스팅을 소개해 드렸는데요. 마지막 시리즈인 5탄에서는 속도 제한 및 기타 API 게이트웨이 제어 적용과 함께 테스트 환경 설정하는 실전 꿀팁 자세히을 알려 드리겠습니다.​​

속도 제한 및 기타 API 게이트웨이 제어 적용

grpc_gateway.conf의 샘플 구성은 운영 환경에서 사용하기에 적합하며, TLS에 대한 중요도가 낮은 몇 가지 수정 사항들이 포함되어 있습니다. 패키지나 서비스 또는 RPC 메소드를 기준으로 gRPC 요청을 라우팅할 수 있으며, 이는 기존 NGINX Plus 기능을 HTTP/REST API 또는 실제 일반 웹 트래픽과 완전히 동일한 방식으로 gRPC 트래픽에 적용될 수 있다는 것을 의미하는데요. 각각의 경우, 속도 제한이나 대역폭 제어 등과 같은 추가 구성을 통해 관련 location 블록을 확장할 수 있다는 사실을 기억해 주세요.

테스트 환경 설정하기

이번에 소개해 드릴 지침을 통해 여타 환경과 분리되고 반복할 수 있도록 가상 머신에 테스트 환경을 설치하는 방법을 설명하려고 합니다. 물론 실제로 베어 메탈 서버에 설치할 수도 있습니다. 먼저 테스트 환경을 단순화하기 위해 Docker 컨테이너를 사용해 gRPC 서비스를 실행합니다. 이는 NGINX Plus가 운영 환경에서처럼 네트워크 호출을 통해 프록시 연결을 할 수 있다는 것을 의미해요.

Docker를 이용하면, 코드 변경 없이 다수의 포트에서 각 gRPC 서비스의 여러 인스턴스를 실행할 수 있습니다. 각 gRPC 서비스는 컨테이너 내 포트 50051에서 수신 대기하며, 이는 가상 머신의 고유한 localhost 포트로 매핑됩니다. 이에 따라 포트 50051은 빈 상태가 되고, NGINX Plus는 이를 수신 대기 포트로 사용할 수 있습니다. 따라서 테스트 클라이언트가 사전 구성된 포트 50051을 이용해 연결하면, NGINX Plus에 도달하게 됩니다.


NGINX Plus 설치하기

1. NGINX Plus를 설치합니다. (지침은NGINX Plus 운영자 가이드 참조)

2. GitHub Gist repo에서 /etc/nginx/conf.d로 아래 파일을 복사합니다

 ● Grpc_gateway.conf

 ● Errors.grpc_conf

​ 주: TLS를 사용하지 않는 경우, grpc_gateway.conf의 ssl_* 지시문을 주석 처리합니다.

3. NGINX Plus를 시작합니다.

Docker 설치하기

● CentOS, RHEL 및 Oracle Linux의 경우라면?

● CentOS/Redhat/Oracle Linux의 경우라면?

RouteGuide Service Container 설치하기

1. 아래 Dockerfile에서 RouteGuide 컨테이너를 위한 Docker 이미지를 빌드합니다.

빌드 전에 Dockerfile을 로컬 하위 디렉토리로 복사하거나, Dockerfile을 위한 Gist의 URL을 도커 빌드 명령에 대한 인수로서 지정할 수 있습니다. 이미지를 다운로드하고 빌드하는 데 몇 분 정도 걸릴 수 있습니다. 아래와 같이 성공적으로 빌드되었다는 메시지와 16진수 문자열(이미지 ID)이 표시되면, 빌드가 완료되었음을 알 수 있습니다.

2. 도커 이미지를 실행해 이미지가 빌드되었는지 확인합니다.

3. RouteGuide 컨테이너를 시작합니다.

각 명령이 성공하면, 긴 16진수 문자열이 표시되어 실행 중인 컨테이너를 나타냅니다.

4. docker ps를 실행해 3개 컨테이너 모두 작동되는지 확인합니다. (샘플 출력은 읽기 쉽게 여러 라인으로 나뉩니다.)

출력 내 PORTS 열은 각 컨테이너가 어떻게 여러 로컬 포트를 컨테이너 내부의 포트 50051로 매핑하는지를 보여줍니다.

helloworld Service Container 설치하기

1. 아래 Dockerfile에서 helloworld 컨테이너를 위한 Docker 이미지를 빌드합니다.

빌드 전에 Dockerfile을 로컬 하위 디렉토리로 복사하거나 Dockerfile을 위한 Gist의 URL을 도커 빌드 명령에 대한 인수로서 지정할 수 있습니다.

이미지를 다운로드하고 빌드하는 데 몇 분 정도 걸릴 수 있습니다. 성공적으로 빌드되었다는 메시지와 16진수 문자열(이미지 ID)이 표시되어 빌드가 완료되었음을 알려 줍니다.

2. 도커 이미지를 실행해 이미지가 빌드되었는지 확인합니다.

3. helloworld 컨테이너를 시작합니다.

각 명령이 성공하면, 긴 16진수 문자열이 표시되어 실행 중인 컨테이너를 나타냅니다.

4. docker ps를 실행해 2개 helloworld 컨테이너 모두 작동되는지 확인합니다.

gRPC 클라이언트 애플리케이션 설치하기

1. 프로그래밍 언어 필수 요소들을 설치합니다. 일부는 이미 테스트 환경에 설치되어 있을 수 있습니다.

python-pip을 사용하기 위해서는 EPEL 리포지터리가 활성화되어야 한다는 점을 유념하세요. (필요한 경우, sudo yum install epel-release를 먼저 실행합니다)

2. helloworld 애플리케이션을 다운로드합니다.

3. RouteGuide 애플리케이션을 다운로드합니다.


보다 쉬운 접근을 위해 테스트 환경까지 상세히 소개해 드렸는데 어떠셨나요? 도움이 되셨나요? 본 블로그의 NGINX 카테고리(클릭 시 이동)에 본 gRPC와 NGINX 관련 다양한 시리즈 포스팅을 확인하실 수 있으니, 이번 포스팅이 처음인 분들이거나, 더 자세한 내용이 궁금하신 분들은 F5 네트웍스 코리아 블로그를 정주행해 주세요! 이외 문의 사항은 댓글 또는 Contact F5를 통해 알려 주시기 바랍니다. “Code Connects Us All!” F5 네트웍스 코리아는 귀사의 애플리케이션이 보다 빠르고 스마트하며 안전하게 운영될 수 있도록 항상 최선을 다하겠습니다.

출처 : F5코리아 공식블로그 https://blog.naver.com/f5networks_korea/221949539657

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>