大規模カンファレンス環境の運用をTerraform Cloudで改善! CloudNative Daysが取り組むIaCとは

2023年2月16日(木)
CloudNative Days Committee
CloudNative DaysのBroadcastチームが、TerraformとTerraform Cloudを活用して最先端の配信技術にチャレンジした話をしたいと思います。

はじめに

みなさん、はじめまして! この記事は、CloudNative DaysのBroadcastチームのメンバーが執筆しています。本題に入る前に、軽く「CloudNative Days」について紹介させてください。

CloudNative Daysは、インプレスが主催している日本最大のクラウドネイティブ技術に関するカンファレンスです。2018年に開催された「Japan Container Days」を前身とし、2019年に初開催されました。

主催はインプレスですが、イベントの方向性やコンテンツを決める実行委員会は、普段よりクラウドネイティブ技術に関わるエンジニアの有志によって形作られており、技術コミュニティ主導のイベントとしての側面も持っています。

実行委員会メンバーはイベントごとに募る形式のため変動はあるものの、おおよそ25人から35人程度で構成されています。メンバーの得意分野ごとにチーム分けを行っており、コンテンツを決めるチーム、イベントサイトやシステムを作るチーム、プロモーションをするチームなどがあります。Broadcastチームはオンライン配信を専門としたチームで、セッションの撮影、録音から配信システムへの打ち上げ、スイッチングなどを担当しています。

今回は、このBroadcastチームがTerraformとTerraform Cloudを活用して、最先端の配信技術にチャレンジした話をしたいと思います。

全てをクラウドネイティブにー
CloudNative Daysの野望

コロナ禍以降、CloudNative Daysもオンラインイベントとして開催することを余儀なくされました。参加者と直接交流できないのは非常に心苦しい限りでしたが、得られたものもたくさんありました。地理的に離れた人たちにもイベントを届けられますし、時間の都合でライブ参加できない人にも迅速にアーカイブ動画を配信できます。これはこれまでと違った人たちと交流を広げていく足がかりとなりました。

そして何よりも、我々自身がクラウドネイティブ技術に真剣に向き合うきっかけとなったことが大きな点です。従来の現地開催のみのカンファレンス運営には、クラウドネイティブ技術を適用する先があまりありませんでした。会場の設営や当日のオペレーションなど、システムよりも人力が重要だったのです。

しかし、オンラインイベントは全く異なります。参加者にはWebサイトにアクセスしてもらい、そこで動画を配信する形になります。Webサイトもシステムですし、動画配信もシステムです。そう、オンライン化によって、システムを作成・運用することと、イベントを運営することがイコールになったのです。

近代的なシステムを作っていくためには、クラウドが欠かせません。つまり、カンファレンス運営自体が、自分たちの推している技術を最大限に行使できる場になったのです。「クラウドネイティブ技術を広めていくためには、自分たち自身がクラウドネイティブでなければならない」。その想いから、カンファレンス運営に関わるあらゆる要素にクラウドネイティブ技術を取り入れることを目指しました。

まず、イベントを開催する会場を自分たちでフルスクラッチで開発しました。これは別記事で解説していますので、興味のある方はそちらもご覧ください。

そして、Broadcastチームも動画を配信する基盤をクラウドネイティブ化していくことを目論みました。さまざまな新しい取り組みを実現するためには、クラウド環境を素早く調達し、構築していくことが必要不可欠です。

そこで、動画配信作業を行う基盤として、さくらインターネットが提供する「さくらのクラウド」を採用しました。そして、環境を構築するためにHashiCorpが主体となって開発しているOSSであるTerraformを採用し、Infrastructure as Code(IaC)を実現。また、同じくHashiCorpが提供しているTerraform Cloudを使い、限られた作業時間の中でも極めて高度な自動化を実現しました。

高度化する動画配信

皆さんは普段からYouTube等での動画視聴に慣れ親しんでいると思いますが、この動画がどのような技術で、どのような人たちが配信作業をしているか、ご存じの方はそれほど多くないのではないでしょうか。

動画配信とは、今そこにあるアナログな現実を撮影・録音し、デジタルに変換して遠隔地に届ける作業です。そのため、デジタルに対する高度な専門知識を必要とするのと同時に、アナログな技術や職人芸的なテクニックも必要とされます。

一般的な動画配信の構成を示したものが下図です。複数のカメラやマイクを切り替えるミキサー、スイッチャーがあり、それをPCに入力しています。オンラインイベントは会場での収録の他、オンラインでの登壇や事前収録動画というパターンもありますので、ライブ配信ツールであるOBS Studioを使ってセッションごとにスイッチングを行いつつ、動画配信基盤に送信を行います。

1トラックのみのイベントであればこれで済むのですが、CloudNative Daysは大規模なカンファレンスで6トラックあります。つまり、このセットが6つ必要になるのです。

この規模になると、さまざまな問題が発生します。単純に人数が必要になるというのもありますし、OBS環境が全てのキーとなるため配信中には絶対に落とすことができません。十分なネットワークの帯域と性能を割り当てる必要があるのですが、イベント会場は専用のスタジオではなくただの貸しスペースであることも多く、十分な帯域を確保できるとは限りません。足りないリソースの中で、OBS環境が落ちないように祈りながら6トラック分配信を行うのが常でした。

そこで今回試したのが、OBS環境のクラウド化です。さくらのクラウド上に、現地からの動画を受け止めるVMと、OBSを動かすためのVMをトラック数分用意しました。OBSはCPUだけでなくGPUも必要とする重量級のアプリケーションですが、ここにはさくらのクラウドが提供している高火力プランを活用することで解決しました。OBSはWebSocket APIを経由して遠隔操作を可能にし、さらにオペレーターの運用負荷を下げるために専用のコマンドラインツールも開発しています。

この仕組みを「リモートプロダクション」と呼んでいます。これにより、OBSがいつ落ちるかドキドキすることなく、安定した動画のスイッチング作業が可能となりました。多くの操作をAPI経由で行えるようにしたので、スイッチング担当も複数トラックを兼任することで少ない人数で運用できるようになりました。

作成したのはこれだけではありません。登壇は事前収録の形でも受け付けていましたが、登壇者から動画を受け取り、動画に問題がないかチェックし、問題があれば修正を依頼する事務作業が必要になります。これを数十人分、人手で行うのはとても負担の大きい作業でした。

そこで、さくらのクラウド上にOSSのオンラインストレージであるNextcloudを立ち上げ、そこにアップロードしてもらう形にしました。アップロードされた動画は自動的に形式のチェックを行い、チェック結果をイベントシステムに送信することで、登壇者がセルフサービスで結果の確認を行えるようにしました。人の工数を大幅に削減できたのです。

作成した環境は、Uptime RobotというSaaSを使って外形監視をしているほか、内部でのログやメトリクスの収集・可視化にElastic Stackを活用しています。

高度なインフラを支えるTerraform Cloud

高度な仕組みを作ることはできましたが、重要なのはこれをいかに構築、運用していくかという点でした。この環境を構築するのは1回とは限りません。イベントまでの間、仕組みが正しく動くかどうか試行錯誤していたため、何度も何度も環境を作り直す必要がありました。

また、クラウド環境、特に高火力プランの環境は決して安いものではないため、四六時中立ち上げておくわけにもいきません。使っていないときは環境を消すなどの工夫を施す必要があります。

この規模のインフラを作ったり消したりする作業はとても大変そうに思えますが、実際のところは殆ど手をかけることなく実現できました。そこで力を発揮したのが、Terraform Cloudです。

Terraformは、Infrastructure as Codeの考え方に基づき、インフラをコード化して自動構築するためのOSSツールです。さくらのクラウドだけでなく様々なクラウドやSaaSに対応しており、複数の環境に跨がって環境のプロビジョニングが可能です。

さくらのクラウド上のVM作成だけでなく、OBSをはじめとしたソフトウェアのインストールと設定、パケットフィルタ、ストレージ、ロードバランサーの作成と設定、そしてUptime Robotへの登録やAWS Route53へのレコード登録など、全てをTerraform化。その結果、ゼロからの作成でも僅か10分程度でフルセットの配信環境を立ち上げられるようになりました。手動で構築をした場合は、おおよそ5時間程度かかる作業になるため、劇的な効果と言えます。

我々のようなチームで活用するとなると、Terraformが吐き出すStateファイルをどこに保存するか、Gitと連携した自動化をどうするかなど、Terraform自体の運用方針で悩むことがあります。そこで、今回はHashiCorpが提供するTerraform Cloudを採用することにしました。

Terraform Cloudは、Terraformの運用で悩ましいStateファイルの管理や実行環境の統一などを極めて簡単な設定だけで実現できます。

例えば、Broadcastチームは利用するネットワーク環境に応じてパケットフィルタの設定を変更しています。手動で設定を変更するのに比べると、OSSのTerraformを活用するだけでも作業のコンフリクトを防ぐことができるメリットがあるのですが、これには「Terraformの実行環境を作成する」「コードを変更する」「Terraformを実行する」という手順を踏む必要があります。配信作業で忙しい中、このオペレーションが追加されるのは負担になることが想像されました。

Terraform Cloudを導入すると、簡単にGitHubと連携できます。もしパケットフィルタを変更したい場合、GitHub上のコードを変更するだけで、あとはTerraform Cloudが自動的にその変更を読み取り、環境に構築してくれるのです。誰がいつ、どのような変更を行ったかはTerraform Cloud上に履歴が残るため、作業記録の監査も容易です。

Broadcastチームは僅か数名、しかも個人活動としての参加のため、1週間のうち僅かな時間しか作業に割くことができません。それにも関わらず、この規模のリモートプロダクションを実現できたのは、Terraform Cloudの力があってこそだと感じています。

今後について

我々としては、今回の仕組みはとても気に入っているものの、まだまだ改善の余地はあると考えています。実現したいアイディアは無限にあり、それらを着実に実現していくことで他には誰もマネできない素晴らしいカンファレンス配信が実現できるのでは、と考えています。

今後はオンラインのみならず、現地開催を含めたハイブリッドイベントが主流となっていくでしょう。そうなると、システムに求められる要件も変わってきます。そういった、常に変わりゆく需要に対しても、Terraform Cloudを使った柔軟な自動化は力を発揮してくれるのではないかと期待しています。

また、Broadcastチーム以外のシステムについても、Terraform Cloudを使った自動化を進めています。今後はそのあたりの活用方法についても、情報発信をしていきたいと思っています。

なお、Terraform Cloudは東京エレクトロンデバイスが販売代理店となっています。本記事を読んで興味を持たれた方は、ぜひ問い合わせをしてみてください。

著者
CloudNative Days Committee
CloudNative Days 実行委員会

・Facebook
 https://www.facebook.com/cloudnativedays
・Twitter
 https://twitter.com/cloudnativedays
・CloudNative Days Committeeブログ
 https://cloudnativedays.jp/

連載バックナンバー

クラウドイベント
第16回

CNDT 2022、ChatworkのSREがコンテナセキュリティのための新しいツールを紹介

2023/6/23
ChatworkのSREがOPAを使ったコンテナセキュリティの実装例を解説したセッションを紹介する。
ストレージイベント
第15回

CNDT 2022、サイボウズのストレージアーキテクトが企業からOSSへの貢献を継続する仕組みを解説

2023/6/22
サイボウズのアーキテクトがRook/Cephのメンテナー経験を活かしてOSSへの貢献を継続する秘訣を解説したセッションを紹介する。
クラウドイベント
第14回

CNDT 2022、ArgoCDとGitHub Actionsの導入でリリース時間を1/4に削減した事例を紹介

2023/6/19
ChatworkのエンジニアがJenkinsからArgoCD/GitHub Actionsに移行してリリース時間を削減した事例を解説したセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています