AbemaTVにおけるKubernetesを使った継続的デリバリーの取り組み (Google Cloud Next ’18 in Tokyo)
福永 亘(ふくなが わたる)
株式会社AbemaTV 広告本部 テックリード
2011年、サイバーエージェントに入社。「アメブロ」や「ガールフレンド(仮)」、「オルタナティブガールズ」などの開発を担当。
2017年9月よりAbemaTV広告本部にて、広告配信サーバの開発などを担当し、現在はテックリードを務める。
9月19日〜20日に東京で開催されたGoogle主催カンファレンス「Google Cloud Next ‘18 in Tokyo」に、弊社の福永が登壇いたしました。
カンファレンス概要
「Google Cloud Next’18」はサンフランシスコでの開催を皮切りに、東京・ロンドン等で開催されるイベントです。Google Cloud Platform(以下GCP)を始めとするGoogle製品の最新技術や、企業での活用事例紹介の講演が行われます。
セッション概要
発表内容は「Kubernetesを使った継続的デリバリー ~GCPにおけるベストプラクティス &AbemaTVにおける取り組み~」と題して、Googleの岩成様によるGCPにおけるコンテナを使った継続的デリバリーの概要説明と、福永からAbemaTVの広告システムにおけるGKEを使った事例の紹介です。
AbemaTVにおける取り組み
一般的な継続的デリバリーには5つの要素があります。
- ソース管理
- ビルド/テスト
- レジストリ
- デプロイ
- モニタリング
ソースコードを利用してビルドとテストを行い、コンテナを作成します。作成したコンテナをDockerHubなどのレジストリに登録し、そのコンテナをデプロイしてサービスを動かします。最後に、動いているサービスの監視やログの取得を行います。
AbemaTVが各要素で採用しているサービスとツールについてご紹介しました。
ソース管理:GitHub
- AbemaTVのコードは基本的に全てGitHubで管理
- プルリクエスト等を使った開発が主流
ビルド/テスト:drone.io
- オープンソースのCIツール
- GKE上で動作させ同一ネットワークに存在
- GCPやKubernetesへのアクセスが容易
レジストリ:Google Container Registry (GCR)
- GKEを利用する場合はGCRが便利
- 特別な設定が不要
- プライベートなDockerRegistryが利用可能
- Kubernetesからコンテナイメージを柔軟に取得可能
デプロイ:SlackBotによるchatops
- 独自のSlackBotを利用
- 開発環境や本番環境、対象サービスを選択してデプロイ
- Kubernetesが参照するイメージのバージョン更新PR自動生成
モニタリング:Prometheus
- KubernetesのPodsの増減を追従して監視
- GKE外のツールを利用せずに運用可能
- メトリクスの表示にはGrafanaを利用
このようなサービスとツールを利用し、Kubernetes上で様々な自動化を行っています。
GKEを使うことでフローの自動化がしやすくなります。オペレーションの自動化は開発の安定化にとても重要な要素であると考えているため、今後もGCPのマネージドサービスを利用して可能な限り自動化を目指していきます。
AbemaTVでは今後、更なる安定性向上のために、現在は手動で行っている結合テストの自動化や、ビルド/テストで利用するツールをdrone.ioからCloud Buildへ切り替えを行いたいと考えております。
発表内容の詳細は、以下の動画をご覧ください。