Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

Google Cloud Next ’19 in Tokyo Day2 で参加したセッションまとめ

DSOCインフラグループの藤田です。某Tech系ポッドキャストの影響からNetflixを契約してしまいました。最近のおすすめはド定番ですがストレンジャー・シングスとペーパー・ハウスです。

昨年に引き続き、Google Cloud Next in Tokyoに参加してきました。昨年は体調不良のため1日しか参加できず、今年こそ全日参加と意気込んでいましたが色々あって今回も1日しか参加できませんでした。私は8/1に参加しましたが、面白いセッションがたくさんあったのでこの記事で皆さんに共有できればと思います。

Keynote

youtu.be

利用者の事例を紹介しながら各種GCPの新サービスについて紹介しています。

内容とは関係ないですが、途中で流れるビデオがとてもかっこよかったです。普段の業務の何気ない一コマなのに音楽と演出でここまでかっこよくなるんだと感動しました。

ちなみに一番嬉しかったのはTitanセキュリティキーの日本発売です。2日目のエキスポ会場ではなんと発売を記念して無料配布されていたので、すかさずGETしました。

Pub/Sub と Bigtable によるデータ パイプラインを用いたモノタロウの新 EC Platform

youtu.be

モノタロウさんによる今後のビジネス拡大に伴う要件の複雑化、データ量増加に対応するためにリプレイスしたEC基盤についてのセッションでした。その中でもReal-Time Data Pipelineという、各サブシステムのデータを集約するためのパイプラインについてピックアップして説明されていました。MySQL Binlog Conector, AppEngine, Pub/Sub, DataFlowなどを使って各サブシステムのデータベース(MySQL)をBigQueryに同期させる仕組みはこれまで見たことがなかったアーキテクチャだったので面白かったです。

Kubernetes ソフトウェア サプライチェーンにおけるエンドツーエンドのセキュリティ&コンプライアンス

youtu.be

KubernetesのCI/CDパイプラインでのセキュリティについて、オーストラリア・ニュージーランド銀行(ANZ)の事例セッションでした。さすが銀行だけあって厳格なCI/CDパイプラインが構築されているなと感じました。パイプラインにおいてセキュリティ&コンプライアンスを担保するために使われていたツールは以下のとおりです。

  • Binary Authorization
    • 信頼できるコンテナイメージのみをデプロイさせる仕組み。デプロイ前に実施されるべきタスク(テスト、脆弱性スキャンなど)が本当に実施されたかどうかを署名(コンテナイメージのメタデータ)によって確認し、正しい署名があるイメージのみをデプロイする。Kritisというオープンソースをベースに作られている
  • 脆弱性スキャン
    • GCRにアップロードされたコンテナイメージを自動的にスキャン

発表の中で一番面白いなと思ったのはBinary Authorizationを使ってポリシーを厳守させることで、デプロイに自信がつくということです。ポリシーが定義されていない場合、例えば緊急のパッチを適用する必要があるケースなどでは開発者の判断でCI/CDパイプラインを通さずにデプロイするかもしれません。一度イレギュラーケースを作ってしまうと、それが常態化してしまいパイプラインが使われなくなる可能性もあります。正しくポリシーが定義され、パイプラインを通ってきたことが保証された世界であればその可能性を心配する必要もなくなり、デプロイに対する不安も解消されるということだと理解しました。

GCP サーバーレス サービスと Sansan データ化技術 〜 少数チームによる高速な事業立ち上げ

youtu.be

Google Cloudの磯部様と弊社エンジニアである木田のセッションです。前半では磯辺様よりGCPのサーバレスサービスについての説明、後半では新サービスの構築においてどのようにGCPサービスを活用したかを木田より説明しております。詳細はこちらのブログで説明されていますので割愛しますが、同じ職場で働くエンジニアが堂々と説明しているところを見てうおおという気持ちになりました(語彙力)。

buildersbox.corp-sansan.com

Istio, Kubernetes, Spinnaker を使ったカナリアデプロイメント

youtu.be

前半ではカナリアデプロイの仕組みやベストプラクティスについてを説明されました。ベストプラクティスの中でも、既に稼働しているコンテナと新しいコンテナで比較するのではなく、現行バージョン・最新バージョンともに新しいコンテナを作成し比較するという方法は納得感がありました。

後半ではTektonを用いたカナリアデプロイメントのデモを実演されていました。Tekton?あれSpinnakerは?という疑問を持つ暇もないぐらい自然にTektonの紹介が始まり、デモにも一度もSpinnakerが登場しませんでした。しかし、Tektonについて調べてみると面白かったので簡単に説明します。

TektonはKubernetes NativeなCI/CDのフレームワークです。Task(コンテナイメージ、実行コマンドを組み合わせたもの)を組み合わせて、Pipeline(Taskに順序, Input/Outputを指定)として定義することで簡単にCI/CDパイプラインを構築することができます。

実際に使ってみましたが、フレームワークはKubernetesのCRDで作られているので kubectl apply だけで導入できるのでとてもお手軽です(ただし、デモで行われたカナリアデプロイのためにはIstio/Envoyや権限周りの設定が必要)。PipelineやTaskなどの概念を覚える必要はありますが、そこまで難しい話は出てこないので学習コストは低めだと思います。設定はすべてYAMLファイルで完結するのでソースコードとして管理可能です。まだGitHub Pushをトリガとした実行はサポートされていませんので現時点で本格的にCI/CDへ組み込むには工夫が必要そうです。

Tektonの概念や用語についてはこちらで図を交えて非常にわかりやすく説明されています。

tomioka-shogorila.hatenablog.com

ネットゲームスケーリングの新たな高み

こちらは動画なしです。

multiplayさんによる、某人気バトルロワイヤルゲームローンチの裏側についてのセッションでした。事前に1400万同時接続のテストを実施して負荷検証を実施していたため、ローンチ後のユーザ数急増にも無停止で耐えることができたとのことでした。自分は実際にこのゲームをプレイしていましたが、GCPで動いていたことは知らなかったです。アーキテクチャや技術的な詳細については時間の関係か話されず、興味がある話だったので機会があれば是非聴きたいです。

感想

普段の業務ではGCPよりもAWSを触ることが多かったこともあり、新しい情報ばかりでとても楽しかったです。事例関連のセッションでは他社のリアルなGCP事情を知ることができました。反省としては人見知りなこともあり、前回も今回もあまりブースの人と喋れませんでした。次回の改善点としてここに記します。

© Sansan, Inc.