第8回は、gRPCをサポートしないWebブラウザなどのクライアントからgRPCサービスを利用するためのリバースプロキシgrpc-gatewayを紹介します。プログラミング言語はGoです。
アジア最大級の国際Scalaカンファレンスである「ScalaMatsuri2020」がオンラインで開催されました。そこでTreasure DataのTaro L. Saito 氏がScalaに関するいろいろなテクノロジーを紹介しました。2つ目は、Scalaで直接通信する方法について。前回の記事はこちら。 Scalaは実はRPCを実装するのに適した言語 Taro L. Saito氏:もともと何をしたかったかというと、「Scalaでクライアントもサーバーも実装できるんだったら、Scalaでそのまま通信できないのか?」というところが出発点になって、今新しいフレームワークを整えているところです。 ScalaはFunctional(関数型)で、かつstatically typed(静的型付き)、というobject orientedな言語になっているのがいいところです。 これよく考えてみると、Scal
gRPC-Web のリクエストを gRPC Server へ Proxy する Envoy の設定手順のご紹介です。 サンプルコード サンプルコードを用意しましたのでよろしければお手元で試しながら読んでみてください。[1] ディレクトリ構成 ディレクトリの構成は下記のようになっています。 ./ ├── Makefile # 各種コマンド ├── client # gRPC-Web Client 関連 │ ├── client.js │ ├── dist │ ├── index.html │ └── generated │ └── helloworld │ ├── helloworld_grpc_web_pb.js │ └── helloworld_pb.js ├── docker-compose.yml # Envoy の起動設定 ├── proto # protobuf │ └── he
gRPCとは gRPCの概要を簡単にまとめる。 HTTP/2による高速な通信 IDL(Protocol Buffers)でデータ構造とRPCを定義 多言語対応のソースコード自動生成 Streamingを用いた双方向通信が可能 詳細は以下へ。 What is gRPC? gRPC-Webとは gRPC-WebによってgRPC通信をWebでも使うことができる。以上! といえればいいのだが、実際は、ブラウザの制限にあわせたプロトコルを定義している。 grpc/PROTOCOL-WEB.md at master · grpc/grpc そのため、現時点だと、プロトコル間の微調整を行うためのプロキシが必要で、公式ではEnvoyを推奨していたりする。 ブラウザの制限 前述したブラウザの制限とは、例えば以下のようなものだ。 HTTP/2のフレーミングレイヤーはブラウザに露出されない ブラウザからのStr
Vue.jsに関する勉強会「Roppongi.vue #2」が2019年7月31日に開催されました。Vue.jsをさまざまな角度から掘り下げ、知見をシェアします。トークセッション 「最近のフロントエンドぶっちゃけどうっすか?」に登壇したのは、フロントエンドエンジニアで活躍するpotato4d氏とkahirokunn氏。昨今のフロントエンド界隈事情をディスカッションします。 最近のフロントエンド、ぶっちゃけどうですか? tadano:本日はpotato4dでおなじみの花谷さんと、kahirokunn。フリーランスなんですよね? kahirokunn氏(以下、kahirokunn):そうです。 tadano:活躍されているエンジニアのお二人をお招きいたしまして、トークセッションをやらせていただこうと思います。テーマは「最近のフロントエンド、ぶっちゃけどうっすか?」。めっちゃ話し言葉ですね(笑)
Amazon Web Services ブログ 新規 – エンドツーエンドの HTTP/2 および gRPC についての Application Load Balancer のサポート その効率性と多数のプログラミング言語をサポートしていることから、gRPC はマイクロサービス統合およびクライアント/サーバー通信に人気のある選択肢となっています。gRPC は、HTTP/2 をトランスポートに使用し、インターフェイスを記述するためにプロトコルバッファを使用する、高性能なリモートプロシージャコール (RPC) のフレームワークです。 アプリケーションで gRPC を使用しやすくするために、Application Load Balancer (ALB) は HTTP/2 エンドツーエンドのサポートを開始しました。これにより、単一のロードバランサーを介して gRPC サービスを非 gRPC サービ
gRPCはRPCのフレームワークです。プロトコルはHTTP/2上に定義されています。普段gRPCを使っているもののプロトコルの仕様を見たことがなかったので見てみました。 動かしたサンプルはHello Worldです。 このサンプルでgRPCサーバは"Greeting: Hello <クライアントが送った文字列>"のようにレスポンスをします。 クライアントからは"world"という文字列を送っているので実行すると以下のようになります。 クライアント $ go run greeter_client/main.go 2019/12/13 20:49:26 Greeting: Hello world サーバ $ go run greeter_server/main.go 2019/12/13 20:49:26 Received: world これをWiresharkでキャプチャしてgRPCリクエス
はじめに gRPCという言葉自体はよく聞いていたのですが、「RESTと同じような立ち位置なんだよね?何が違うの?」という状況だったので調べてまとめてみました。 モダンな技術を採用している企業では、既にサービスで当たり前のように活用されている技術ですので、gRPCの基本レベルで自信無い方は目を通してみてください。 gRPCとは gRPCはGoogle謹製のHTTP/2を利用したRPCフレームワークです。 Protocol Buffersを利用し、データをシリアライズして高速なRPCを実現します。 (Protocol Buffers以外も利用可能ですが、デファクトスタンダードとなっているため、本記事ではProtocol Buffersを前提に説明します。) protoファイルと呼ばれるIDL(Interface Definition Language)にAPI仕様を記述します。 また、IDLか
いよいよ Envoy の肝である xDS サーバーを使いたいと思います。 まず手始めにエンドポイントを設定できる Endpoint Discovery Service (EDS) を提供するサービスを実装します。 xDS おさらい Envoy では gRPC または REST API 経由で動的に設定変更できます。 これは Envoy にリクエストを送るのではなく、Envoy が API を提供するサーバーに繋ぎにいきます。 API には、エンドポイントの設定を提供する Endpoint Discovery Service (EDS) や、クラスタの設定を提供する Cluster Discovery Service (CDS) などがあります。 これらをまとめてxDS APIと呼びます。 xDS API のデータ構造は Protocol Buffer によって定義されています。 v2 AP
たとえば次のような「user.proto」というプロトコル定義ファイルを用意し、これを変換する例を見てみよう。 syntax = "proto3"; message Picture { uint32 id = 1; uint32 width = 2; uint32 height = 3; enum PictureType { PNG = 0; JPEG = 1; GIF = 2; } PictureType type = 4; } message User { uint32 id = 1; string nickname = 2; string mail_address = 3; enum UserType { NORMAL = 0; ADMINISTRATOR = 1; GUEST = 2; DISABLED = 3; } UserType user_type = 4; repeated
株式会社ウルフチーフ 代表取締役。TIS株式会社にて19年半、さまざまな業種のシステムアーキテクチャ設計を担当し、2018年に退職、株式会社ウルフチーフを創業する。以降流しのアーキテクトとして、前職時代から書き溜めていたOSSプロダクトや技術記事を元に、様々な現場でアーキテクチャの設計や研修を実施している。 課題:リポジトリの肥大化に伴ってリリース頻度が低下 川島 freeeではどのような課題を解決するためにマイクロサービス化を検討されたのでしょうか? 横路 freeeのプロダクトの成り立ちからお話しすると、「会計freee」の最初のリリースが2013年で、翌年に「人事労務freee(当時の名称は給与計算freee)」をリリースしました。その段階で既に、各プロダクトや認証・認可を扱うサービス基盤などは、リポジトリやサービスを分割する形で開発・運用を行っていたんです。 しかし、プロダクトがマ
フィードバックを送信 API 設計ガイド コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。 変更履歴 はじめに これは、ネットワーク API の一般的な設計ガイドです。2014 年以来 Google 内部で使用され、Cloud API やその他の Google API を設計するときに Google が従うガイドです。この設計ガイドは、外部のデベロッパーへの情報提供と、互いの連携作業の効率化のためにここで共有されています。 Cloud Endpoints のデベロッパーには、このガイドは、gRPC API を設計するときに特に役立つことがあり、そのような場合にはこれらの設計原則を使用することを強くおすすめします。ただし、このガイドの使用は必須ではありません。Cloud Endpoints と gRPC はガイドに従わなくても使用できます。 このガイドは、gR
kubernetes(今回はGKE内)でgRPCの通信を場合にぶち当たる問題として、ロードバランシングの問題があります。 gRPCの通信は永続化されるので、そのままの状態で使うとバックエンドにあるサービスがスケールしても分散されないということになります。 具体例 上記のような構成でhoge-gateway(4pod)からhoge-app(10pod)に向けてコネクションプーリングが1で通信をする場合、hoge-appが最大4podしか使われない状態になります。 下記がその状態です。 GKE Container - CPU usage for hoge-app GKE Container - CPU usage for hoge-gateway 解決方法 これを解決する手段としてgRPCのclientLoadbalancingを使う方法がありますが、clientに依存する方法はあまりスマート
本記事 本記事では、gRPCについて体系的に取り上げ、開発方法や運用方法を書いていこうと思います。 私はgRPCは使ったことも、運用したこともあります。同じRPCにを実現する方法としてJSONRPCというプロトコルがあります。 一年くらい前に取り上げた記事です。よかったら見てみてください。 www.1915keke.com また、今回の使用言語はGolangです。 コンテンツ 本記事 コンテンツ gRPCについて gRPCとは RPCとは 公式サイト コンセプト 1. サービス定義 特徴 1. Protocol Buffersによってスキーマをあらかじめ定義する 2. いろんな言語とプラットフォームで使える 3. 簡単に始められて、高いスケール性 4. 双方向ストリームと統合的な認証 作って見る gRPCをインストール Protocol Buffers v3をインストール Server側
はじめに 先日開催された Mercari Tech Conf 2018 にて発表されたマイクロサービスアーキテクチャの話に触発されてgRPCをさわってみました。また、マイクロサービスといえば...で思い出して、まだ試していなかったECSのServiceDiscoveryもさわってみました。 用語の説明 gRPC gRPCとは、Googleが開発したOSSで、RPC(Remote Procedure Call)をモダンに使えるようにしたフレームワークです。特徴としては、http/2ベースで様々な通信方法をサポートしており、多数のプログラミング言語に対応したライブラリとprotocol buffersをインターフェイス定義言語として用いることで異なるプログラミング言語間のサービスでも使うことができます。この他にも数多くの機能があるようです。 ServiceDiscovery ServiceDi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く