アドテク×Kubernetes「オレシカナイトvol.10」レポート

 

株式会社AbemaTV、新卒エンジニアの増田と申します。

今回は5/24に開催された「アドテク×Kubernetes – オレシカナイトVol.10」のレポートと次回開催のお知らせをしたいと思います。

-オレシカナイトとは


オレシカナイトは、「AbemaTV」や「Ameba」をはじめとしたサイバーエージェントグループが運営するメディアにおいて、パブリッシャー独自の視点でアドテクノロジー開発を行うエンジニアの横断組織 「Cyberagent Publisher adTechnology Associaion (PTA)」が主催する技術者向け勉強会です。

今回のテーマは”Kubernetes”。当日は「AbemaTV」や「Ameba」の広告配信システムの開発プロセスで実際に使用し、成果をあげている運用手法や、チャレンジした手法などの紹介をしました。

 

-1. EKSクラスタをいい感じに作ろうとして苦労しているうちに令和になった話(前編)(株式会社サイバーエージェント 駒原 雄祐)


komahara

まずはメディア統括本部の駒原がAmeba広告システムのEKS化とその障壁と対策について発表しました。

Amebaの広告システムは、提供を開始してから4年以上が経過しており、負債が蓄積されている状況でした。そこで今回のシステム刷新のタイミングで、EKS(Amazon Elastic Container Service for Kubernetes)の導入を決定しました。

EKSの導入を進める中で、アプリケーションから各種AWSリソースへのアクセス制御が課題になりました。EKSではIAM RoleをPod単位で割り当てる機能が標準では提供されておらず、ノードとなるEC2インスタンスの単位でしか指定できないために、インスタンス内で複数のPodが動くEKS環境では、ノードとなるインスタンスに幅広い権限を持つIAM Roleを割り当てるしかなく、その運用方法は好ましくないと判断しました。

その解決策として、Kubernetesクラスタ内から、個々のPodに対してIAM Roleを割り当てることができるようにするOSS「Kiam(https://github.com/uswitch/kiam) 」の導入を行いました。
しかし、EKSへの導入となると、情報が極端に少なかったようで、様々な点でつまづきながらもEKSの構築を進めていき、解決した頃には時代は令和に突入していたそうです。

発表スライドはこちらをご覧ください。
https://speakerdeck.com/euno7/we-tried-to-build-eks-cluster-nicely

 

-2. EKSクラスタをいい感じに作ろうとして苦労しているうちに令和になった話(後編)(株式会社サイバーエージェント 小坂 和弘)


kosaka

続いて、メディア統括本部の小坂より Kubernetes CI/CD環境の構築について発表しました。

Ameba広告システムのEKS化に伴い、CI/CDツールとしてCircleCIとHelmを採用し、そのベストプラクティスを探りました。

CircleCIの最適化に関しては、モノリシックなHelm用リポジトリを用意し、PullRequestベースでのデプロイ管理を行うことで、各ブランチが各環境の状態を表すようになり、クラスタをゼロ状態から復旧できるようになりました。また、`helmfile`で環境によって異なる設定値を注入すること、`helmfile apply` 前に `helmfile diff`でマニフェストの差分を確認するなど、より安全確実な運用が出来るよう、最適化を行いました。

最後に、Rolling Updateを利用すること、特定のラベルがついたDeploymentを対象とすることにより、簡易的にカナリアリリースを実現した話もありました。

発表スライドはこちらをご覧ください。
https://speakerdeck.com/hyperdash/cd-environment-by-circleci-and-helm

 

-3. k8sでJob管理
 (株式会社AbemaTV 福永 亘)


wataru

最後に、株式会社AbemaTV福永が Kubernetesを活用したJob管理について発表しました。

「AbemaTV」の広告配信では、大量のJobが様々なタイミングで動いているため、この複雑なJob群をどのように管理するかという課題を抱えていました。

AbemaTVでは様々な業務があり、その分Jobも大量に乱立していました。KubernetesにもCronJobがありますが、気軽に再実行できないことや、GUIが存在しないことなど、自分たちのやりたいことが満たせないことが課題として挙げられていました。

履歴管理や再実行性、実績を重視してJob管理ツールを選んだ結果、digdagを採用することにしました。digdagは、ジョブをスクリプト管理することができること、再実行が容易にできること、リッチなUIがあることが選定の理由です。

現在はdigdagを使用していますが、まだまだ課題はあるので、常により良いサービスを検討していると言う話もありました。

発表スライドはこちらをご覧ください。
https://speakerdeck.com/wataru420/k8sdejobguan-li-at-oresikanaitovol-dot-10

 

-懇親会 & LT


LTでは、株式会社AbemaTVの山口が「Kubeflowを用いた分析環境の統一は果たして良いかどうか」というテーマで発表をしました。

「AbemaTV」のデータサイエンスチームでは、最初、分析環境がメンバーにより異なっていたため、KubeflowというKubernetes上で簡単に動かす機械学習用の環境を構築するOSSを導入しました。

しかし、チームが使う開発環境がJupyterやRStudioなど人により異なること、チームのフェーズ的に機械学習モデルの構築よりも分析が多いという理由で、当時は分析環境を統一するという点でKubernetesを使う必要性はなかったそうですが、今後、機械学習のプロダクション運用が多くなるフェーズで導入を検討しているそうです。

以上「アドテク×Kubernetes-オレシカナイトVol.10- レポート」でした。

オレシカナイトでは、LTをしていただける方をゆるく募集していますので、ご興味のある方はConnpass経由でご連絡いただければと思います。

 

-オレシカナイトvol.11


そんなオレシカナイトの11回目が2019年9月25日(水)に開催されます!!

次回のテーマは、「オークション
PTAメンバーが登壇し、「AbemaTV」や「Ameba DSP」、「AJA SSP」などの広告配信システムで実際に使われているオークションロジックを赤裸々に?語ります。

以下のURLからぜひエントリーください!

https://cyberagent.connpass.com/event/144101/

 

-Profile

株式会社AbemaTV 広告本部 開発局 エンジニア
増田 大夢

▼PTA
Twitter:https://twitter.com/PTA_CyberAgent