業務でGCPを触ることが増え、他社がどのように使っているか知るためにこちらのイベントに参加してきました。
*概要
- メルカリでの開発事例
- 最近のGCPアップデート
- 懇親会
*メルカリでのQA環境構築
- SET
メルカリではSET(Software Engineer in Test)チームを設立して、
開発環境やQA環境の構築、テスト自動化などといった生産性と品質の向上を目的とする業務を行っているそうです。
参考:Mercari Engineering Blog
- QA環境
メルカリでは専任のQAエンジニアがおり、QA環境でテストを実施しているとのことでした。
QA環境の構築については、エンドポイントを指定するとトピックブランチが動き、自分専用の環境が構築される仕組みになっています。QA環境は独立で動いていますが、DBや WebUI は他の人の環境と共通になるそうです。
また、可能な限り本番と同じようになるようにしているとのことでした。
- kubernetes
QA環境ではk8sを使っていて、CircleCIがトリガーになってk8sにデプロイします。(CircleCIでマニフェストファイルを作っています)
カバレッジとか古いpods削除、マニフェストファイルのテンプレート書換も行っており、これをGoで書いています。
GoでHttpヘッダーのリバースプロキシをみるとk8sで良い感じにしてくれるそうです。
- Spinnaker
おれおれyamlをなくすために入れたそうで、CIファイルでなくGCRにDockerのイメージをプッシュしています。このことによって yamlファイルがなくなります。
プルリクごとに環境作れましたがこの方法だと作れなくなるので、k8sの概念としてのコントロールループ、クラスタをウォッチ、コントローラーを作ったそうです。
ループしながらプルリクの状況を確認(オープンのみ)してくれたり、環境変数の書換をしてくれます。
*GCPのアップデート情報
登壇資料:GCP Update- App Engine for Node.js
App Engine のStandardでnode.jsが使えるようになりました。(gVisorの上で動きます)ですが、まだApp Engineのサービスでいくつか使えないものもあります。
App Engine は自由に外と通信できないので、App Engineでアプリが動くとSocket API経由でgRPCを使ってPubSubなど外部に送られる仕組みになっています。(Cloud DetastoreとAppEngineのセット)
Detastoreを使わないで PubSubやSpannerを使うときは、SocketAPIを通して通信します。(RestAPIのときはURL fetchを使います)
※RPC(Remote Procedure Call)
遠隔手続き呼出しのことで、同じネットワーク上の別マシンのプログラムを呼び出して利用できるようにする仕組みのことです。分散コンピューティングを実現するための基盤技術として、1980年代後半に登場しました。
※gRPC
RPCを実現するためにGoogleが開発したプロトコルの1つです。protoファイルでAPI仕様を定義し、必要なコードの雛形を作成します。多くのプログラミング言語をサポートしているため、サーバ側とクライアント側で別の言語を使うといったことにも対応できます。
- gVisor
gVisorの解放により外部と直接通信できるようになったので、SocketAPI使わなくてもgRPCが使えるようになりました。
App Engine RPCしか使えないサービスとしては、Memcache や Search がありますが、こちらは現状維持の状態のようです。
Cloud Memorystore が登場したので、node.jsはこっち側を使う可能性あるとのことでした。
※gVisor
個々のコンテナイメージを最小限のOSで覆い、コンテナ間を安全に隔離します。Kubernetesの普及により、ホスト上に多様なアプリケーションやテナントのコンテナが並行して実行されるようになることを想定し、作られました。
※Memcache
GAEで利用可能な分散型のキャッシュシステムのことです。主な利用目的はデータアクセスの高速化で、最初の結果をMemcacheに保存し、それ以降はMemcache上のデータを取得することで、データストアへの無駄なアクセスを軽減することができます。
- Cloud Memorystore
フルマネージドのインメモリデータストアのことです。Redisプロトコルと互換性があり、コード変更なしでアプリケーションの移行ができます。
Compute Engineのネットワークからしか接続できません。
basicとstandardがあり、standardはデータを維持してくれますが、basicはサイズ変更時にフラッシュされてデータが消えます。
認証はないため、同じネットワークから接続し放題です。
- Python3とPHP7.2
ついにApp Engineで使えるPythonバージョンがアップします。
- Cloud Task α / Cloud Schedoker α
App Engine のなかのサービスでしたが、独立して新しいサービスになりました。Compute Engineを使ってた人も使えるようになります。
- Google Cloud Composer β
Apache Airflow のフルマネージドサービスで、ワークフローを定義して実行することができます。
クエリを投げる順番などを定義しておくことができます。
まずコマンドを実行してEnviromentを作成します。(nodeの数などを指定します)作成方法としてはGKE作るときみたいな感じです。
そのあとにPythonでかいたDAG(非循環グラフ)をCloud Strageに置いてインポートコマンドを実行すると、Airflowの管理画面で動いていることが確認できます。
この他、夜になったらBigquery動かすなども可能です。
料金が少し高く、時間あたりの値段になっています。ワークフローが複雑で何個もある状況だと便利のようです。
*参加してみた所感
GCPUGのイベントに初めて参加してみましたが、会場が綺麗で広くて雰囲気もよく、とても居心地が良かったです。また、他の方々がGCPをどのように使っているのか、開発環境をどのように構築しているのかといったことを知ることができ、とても勉強になりました。
初めて聞いたサービス名もあったりしたので、使い方や用途をよく調べておこうと思います。
開催してくださった関係者の皆さま、ありがとうございました。
Sign up here with your email
ConversionConversion EmoticonEmoticon