Top Banner
Confidential & Proprietary 株式会社フリークアウト 執行役員 CTO 西口 次郎 FreakOut の広告プロダクトでの GKE 活用事例とGKE 新機能の導入につい
40

て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Apr 28, 2019

Download

Documents

hoangcong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Confidential & Proprietary

株式会社フリークアウト 執行役員 CTO西口 次郎

FreakOut の広告プロダクトでの GKE 活用事例とGKE 新機能の導入につい

Page 2: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Agenda

● 自己紹介・会社紹介

● FreakOut の広告プロダクト紹介

● プロダクション環境での GKE 運用

● GKE での CI/CD● GKE の新機能を活用した Kubernetes 環境構築

● まとめ

Page 3: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

※当発表について

※ 一部 2018/10/31 開催の Google Cloud INSIDE Digital で発表した内容が含まれています

Page 4: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

自己紹介

● 西口 次郎

● 株式会社フリークアウト 執行役員 CTO● キャリア: SIer -> Web 系企業 -> フリーランス -> FreakOut● 2013/09 フリークアウトに参画

○ 技術担当執行役員

○ 新規事業開発

○ 組織マネージメント

○ 最近の興味・関心: コンテナ関連技術

Page 5: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

会社紹介

● 株式会社フリークアウト

○ 創業: 2010/10● 国内初の DSP● 広告関連プロダクトの開発・販売

● グループ従業員数: 632 名 (2018 年 9 月現在)○ エンジニア約 60 名 (JP)

● 海外拠点: 19 カ国

Page 6: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

FreakOut の広告プロダクト紹介

Page 7: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Red (FreakOut DSP)

● 国内初・最大級の DSP○ 350,000 Requests / sec○ 20 Billion Requests / day○ 600 Billion Requests / month

● インフラ: オンプレミスを中心に構成

○ サーバ約 700 台● Server Side: Perl● ML: C++, Scala, etc..

Page 8: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

ASE

● 位置情報マーケティングプラットフォーム

○ 位置情報ターゲティング広告

○ オフライン顧客動向分析

● 国内最大規模の位置情報データベースを保有

● インフラ: パブリッククラウド

● Server Side: Ruby (Ruby on Rails)● Analysis: Scala (Apache Spark)

Page 9: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Red for Publishers

● プラットフォーム開発をフルサポート

○ アドプラットフォーム構築支援

○ 販売、オペレーション、コンサルティングまで

● 自社アドネットワーク: Poets● インフラ: GCP

○ Google Cloud Platform Japan Blog での事例紹介

● Server Side: Go, Perl● Analysis: BigQuery

Page 10: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Red for Publishers 事例紹介

https://cloudplatform-jp.googleblog.com/2018/09/freakout-kubernetes-engine.html

Page 11: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

LayApp

● アプリエンゲージメントプラットフォーム

● アプリデベロッパーの収益機会の最大化支援

○ 機械学習によるエンゲージメント配信

○ ユーザーエンゲージメントリフト分析

● インフラ: GCP● Server Side: Python● Analysis: BigQuery● Machine Learning: ML Engine

Page 12: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

プロダクション環境での

GKE 運用

Page 13: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Overview

Page 14: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

GKE

Page 15: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Google Kubernetes Engine

● バージョンは 1.10.11 を使用 (2019/3 現在)● サービス(ワークロード)ごとにクラスタを分割

● 広告配信、UI、バッチ

● CronJob (>= k8s 1.8) を使用 ● カナリアリリース環境を用意

○ 特定の Git のブランチを少量の Pod にデプロイ

● Stackdriver を活用

○ 主に Monitoring, Logging, Profiler を利用

Page 16: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Stackdriver

● Monitoring○ Prometheus と併用

○ Grafana 5.3 で Stackdriver Datasource を利用中

○ Kubernetes Monitoring 導入検討中

● Logging○ コンテナのエラーログ等を集約

○ アラート: Pub/Sub -> Cloud Functions -> Slack● Profiler

○ 常に最新のコードのプロファイルを可視化、比較

Page 17: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Stackdriver Logging

Page 18: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Stackdriver Profiler

Page 19: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

BigQuery

● すべてのアクセスログ、アプリケーションログを集約

○ daily 数十億レコード

● fluentd (Side-car container) から Streaming insert○ リアルタイム集計

■ 例: A/B テストの結果をすぐに集計

● 可視化には主に re:dash を使用

● MySQL のマスタデータもインポートしている

Page 20: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Vulnerability scanning (Beta)

● Google Container Registry の機能

● Debian, Ubuntu, Alpine が対象 (2019/3 現在)● 過去 30 日間に pull されたイメージが対象

● 脆弱性が見つかった際 Pub/Sub に Publish される

● Cloud Functions で Subscribe -> Slack 通知

Page 21: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

kustomize

● Kubernetes の YAML ファイルのカスタマイズ

● 2019/2 に kubectl のサブコマンドとしてマージされた

● Production/Staging/Canary など、環境ごとの設定を上書き

するように設定している

○ replicas○ 環境変数

○ ConfigMap

Page 22: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Other tools

● stern○ 複数のコンテナのログを素早く確認できる

○ tail -F multiple-containers のようなイメージ

● kubectx○ クラスタ切り替え

○ 複数クラスタ / 開発環境・本番環境の切り替えに

○ kubens でネームスペースの切り替えも可能

Page 23: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

GKE での CI/CD

Page 24: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

CI/CD に使用しているツール

● GitHub: ソースコード管理

● CircleCI: 継続テスト

● Cloud Build: コンテナのビルド

● Cloud Container Registry: コンテナイメージの保存

● Cloud Pub/Sub: ビルド通知

● Cloud Functions: Slack への通知

● Slack: エンジニアへの通知

Page 25: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

CI のフロー

1) GitHub へ Push2) テスト・ビルド

a) CircleCI でのテスト

b) Cloud Build でのビルド

i) master branch: 本番用のイメージ

ii) develop branch: カナリアリリース用イメージ

3) カナリアリリース

エンジニアが手動で 1 Pod 〜 数 Pod にデプロイ

Page 26: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

CD のフロー

1. GitHub で Pull Request を Merge2. Build & Deploy (Cloud Build)

2.1. docker build (eg: go install)2.2. docker push (to Container Registry)2.3. kubectl set image (kustomize を使った apply 検討中)

3. Notification3.1. Pub/Sub への Publish (Cloud Build で自動で行われる)3.2. Cloud Functions (Subscriber) で Slack 通知

Page 27: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

GKE の新機能を活用した

Kubernetes 環境構築

Page 28: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

VPC-native cluster (alias IP)

● VPC-native cluster とは?

○ Scale enhancements○ Hybrid connectivity○ Better VPC integration○ Security checks○ IP address management

● Cloud Memorystore for Redis の利用が可能

● Cloud SQL Private IP に接続可能

Page 29: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Cloud NAT

● マネージドな NAT (利点)● アウトバウンドアクセスのゲートウェイ

● 要 Private cluster● 外部アクセスする IP アドレスを限定する用途で使用

○ 例: IP アドレスの事前登録が必須な外部 API● Region, network, subnetwork に Cloud NAT のものを指定

Page 30: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Network Endpoint Groups (NEGs)

● コンテナネイティブの負荷分散が可能

● Instance Group は iptables を介して Pod へルーティング

● NEGs は Pod を直接ターゲットとする

● ネットワーク パフォーマンスの改善

● 要 VPC-native cluster● Service アノテーション cloud.google.com/neg に '{"ingress":

true}' を指定する

Page 31: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Network Endpoint Groups (NEGs)

https://cloud.google.com/kubernetes-engine/docs/how-to/container-native-load-balancing より

Page 32: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

BackendConfig custom resource

● GKE Ingress コントローラのカスタムリソース定義

○ Balancer Settings○ Cloud Armor○ Cloud IAP○ Cloud CDN

● Service と BackendConfig を紐づけて使用する

○ Service アノテーション beta.cloud.google.com/backend-configs

Page 33: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

BackendConfig - Balancer Settings

● タイムアウトの設定

● 接続ドレインタイムアウトの設定

● Session affinity の設定

○ 例: Cookie ベースのアフィニティ

Page 34: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

BackendConfig - Cloud Armor

● DDoS 攻撃からアプリケーションを保護するサービス

● IP アドレスのホワイトリスト・ブラックリストが利用可能 (2019/3 現在)

● 例: 社内ツールへのアクセス元の IP アドレスを制御

Page 35: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

BackendConfig - Cloud IAP

● ロードバランサに認証機能を追加

● 任意の URL に Google 認証を掛けることが可能

● 例: 社内ツールへのアクセス認証

○ Grafana など

Page 36: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

BackendConfig - Cloud CDN

● Cloud CDN の構成が可能

● 例: キャッシュポリシーの設定

Page 37: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Google-managed SSL certificates

● マネージド SSL 証明書 (無料)● ベータ (2019/3 現在)● 証明書の発行・管理を行ってくれる

○ 2019/3 現在、発行元は Let’s Encrypt ■ 更新は自動で行われる

● Ingress アノテーションで証明書を紐づけ

○ ingress.gcp.kubernetes.io/pre-shared-cert

Page 38: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

まとめ

Page 39: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

まとめ

● FreakOut では GCP を活用して広告プロダクトを開発している

● アプリケーションは GKE / Kubernetes 上で稼働している

● 運用には Stackdriver がとても便利

● CI/CD も容易に構築可能 (Cloud Build)● GKE では GCP の最新機能を容易に使用可能

○ NEGs, Cloud NAT, BackendConfig など

Page 40: て活用事例とGKE 新機能の導入につい FreakOut … 自己紹介・会社紹介 FreakOut の広告プロダクト紹介 プロダクション環境での GKE 運用 GKE

Thank you