CEDEC2024に登壇してきました
こんにちは、システムエンジニアの会津です。
8月21日(水)〜8月23日(金)に開催されたCEDEC2024にて、「UX・セキュリティ・運用コスト!クラウドビルドシステムの開発における挑戦 ~Jenkinsやめてみた~」と題して、講演をさせて頂きました。
講演資料はCEDiLにアップロードされています。
会場にお越し下さった皆様、リモートで視聴された皆様、ありがとうございました。
また、講演後やアスクザスピーカーでは多くの質問を頂き、興味を持って頂けた事をとても嬉しく思っております。
そこで、後日談として、この場をお借りして、頂いた質問の回答をもう少し深掘りしてみたいと思います。
掘り下げる内容は、属人化についてです。
ビルドシステムをクラウドに移行した理由は沢山あり、講演では主要な3つをピックアップしてお話ししましたが、属人化はそのうちの1つです。
まず、講演を見ずにこの記事を読んでいる方にもわかりやすく、経緯をお話しします。
前の世代のビルドシステムは、ゲーム開発プロジェクト毎に個別に構成しておりました。そして、それに起因してある課題が発生しておりました。それは、ビルド関連のツールやソフトウェアに関するスキルが特定のメンバーに偏るということです。こういった問題は、多くの企業で自然に発生するものかと思います。
運用基盤グループでは、各プロジェクトでの負担を減らすべく、セットアップツールや手順書、各種プラグインを提供し、トラブル対応のサポートも行っていました。しかし、それでも各ゲーム開発プロジェクトのメンバーにも相応のスキルが必要でした。
また、お話を伺っても、ゲーム開発のプロジェクトに所属している方の多くはゲーム開発に高いモチベーションを持っており、ゲーム開発に専念したいという気持ちを持っています。
できればビルドシステムの問題には時間を費やしたくないです。
この構図を改善すべく、各プロジェクトに分散したビルドシステムを、運用基盤グループが提供するクラウド上の1つのサービスとして集約しました。
さて、そこで質問の話に戻りますが、講演後の質問では「結局Kubernetesなどを利用して複雑になり、属人化はまた発生するのでは?」という疑問をお持ちになった方が多いように見受けられました。
ここまでの話では、属人化するようなビルドシステムの複雑さが運用基盤グループに集約されただけで、解消できてはいません。ですので、質問されたような疑問を持たれたかと思います。
追加でお話ししたかった部分は、KubernetesやArgo Workflowsの複雑さへの対策の部分となります。
今回構築したクラウドビルドシステムでは、Kubernetes上でArgo Workflowsを実行し、Argo Workflowsによってビルドスクリプトが呼び出されます。
また、プロジェクト毎にネームスペースが割り当てられており、論理的に分割されています。
まず、Kubernetesに関しては、弊社の様々なゲームタイトルに利用されており、ノウハウを持ったエンジニアがおります。そして、各種ツールを用いた構成管理などが整備された状況にありました。構成情報はコードとして管理され、作業者に依存せずに同様の環境構築を再現できます。
次に、Argo Workflowsについてですが、Argo WorkflowsはKubernetesのCRDとして実装されており、設定やワークフローの定義をmanifestとして管理できます。
ですので、テンプレートエンジンを利用して、複数環境の差分をパラメーターとして管理する事も可能です。
また、その定義をgitで管理し、リポジトリのイベントをトリガーにArgo CDによってDeployする事もできます。
これらを利用し、複数のネームスペースの差分をパラメーターによって管理し、git上で管理した上でArgo CDによってDeployしております。
このように、構築に必要な知識の大部分が仕組みとして共有されており、異なる担当者間でも均質的な作業結果が期待できます。
また、現在、運用しながら繰り返し発生するようなタスクはArgo Workflowsで自動化を進めております。
これらの仕組みが、属人化への対策の1つのアプローチであり、有効に機能しております。
今回お話しした弊社の事例やノウハウが、皆様の一助となれば幸いです。
採用情報
コロプラでは "効率化に情熱を持つエンジニア" を募集しております。
テクノロジーの進化は日進月歩、多様化したプラットフォームと複雑化するビルドプロセスの中で、既存の枠にとらわれず新しい技術で常に最適なソリューションを追求するエンジニアを求めており、事業サイドに安定で効率的な技術を提供し続けられるエンジニア組織を目指しています。