ChefConf 2015 レポート (part 5) #getchef
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
2015年3月31日から4月2日まで実施されたChefConf 2015の現地レポートpart4です。
Building and Releasing an Online Game from nothing with NoOps
Jamie Windsor: Undead Labs
Undead Labs社は、オンラインゲームの開発ベンダー。ゲームタイトルとして有名なのは、Moonriseと呼ばれるもの。
NoOps = No Dedicated Operations (運用管理者のいない開発環境:開発者が各々、オペレーションの責任を持つ、という考え方)
- 同社のゲームアプリケーションに関する考え方:
-
- 40%の工数はソフトウェアのエンジニアリング作業
- 残りの60%の時間はチーム内の結束強化とコミュニケーションに費やされる
- もっとも注目している課題:
-
- どうやってアプリ開発に集中できるか?
- シングルユーザアプリ開発から大量のマルチユーザ型オンラインゲームアプリ開発に移行する
- ゲームタイトルを保有するPublisherとの間との良好な関係
- 企業カルチャーを強化する
- この辺の課題は、従業員が20人程度の頃は簡単だった。
- これらの課題に取り組むに際して重要なのは、才能のあるプログラマーではなく、エンジニアを採用することにある。エンジニアとは、プログラマと異なり、問題を解決する能力に優れている。
- アプリ開発環境
-
- 言語はErlangとRails
- ErlangとRailsは開発期間の短縮に大きく寄与している。
当初、チームとして採用する開発言語の候補は下記のリスト
-
- C/C++
- C# mono
- Python
- Ruby
- 最終的に、Erlang言語のブランチである、Elixirを採用
- ElixirはErlangと同じコンセプトをもつ
-
- ProcessとMailboxとの関係
- Supervision Treeによるプロセスの構造
- Pattern Matchingの手法
- 末端再帰型のプログラミング
- Chefの利用にあたっての考え方
-
- アプリケーションのエンジニアは、そのアプリケーションのCookbookの開発/運用責任をもつ
- 全てのアプリケーションは自動ディスカバリを意識して開発されている。
-
- Consulがサービスディスカバリ機能として採用されているため、それを意識したアプリ開発が行われる
- Discovery: Undead Labsが開発した、Erlangノードに対してサービスを自動的に見つけてくれるOTPアプリ
-
- GitHubでオープンソース提供されている
- Terraform:仮想マシンのビルドにはTerraformを採用
-
- クラウドサービスプロバイダーの違いを吸収
- Terraformを使った設定情報の記述例
- 運用環境はChef、Consul、Terraformの3つのツールの組み合わせで運用