2015/05/19(火)に、レバレジーズさんが主催しているヒカラボで、以下3つの発表をしてきました。
RoRとAWSで100,000Req/Minを処理する
続きを読む
6月25日(木)に、株式会社LITALICOさんと合同エンジニア勉強会を、アカツキのオフィスで開催しました!アカツキのエンジニアと合わせて約20名がこの勉強会に参加し、LT対抗戦+ビアバッシュを楽しみました。想定以上に話したがり屋さんが多かったからか、LTの発表時間が予定の10分から5分に当日になって変更になったり、ピザが無くなっても話が止まらないなど、非常に大盛況な会となりました。
続きを読むアカツキではサーバーサイドフレームワークとしてRuby on Railsを採用しており、またそのテスト環境としてRspec/FactoryGirlを使用しています。RoR環境下のテスト体制としてはデファクトスタンダードになっているこの組み合わせですが、主にFactoryGirlの採用については 賛否両論だと言われています。採用を見送るネガティブな要員として、きちんとtraitを管理しないと不必要な関連オブジェクトも芋づる式に生成してしまい、テストの実行時間を大幅に増やしてしまうという問題があります(もっとも、これはFactoryの設計、管理を怠った開発者が原因であり、FactoryGirl自体の罪ではないかもしれませんが)。僕も複雑な条件のtraitの組み合わせや、テストの実行時間に日々悩まされています。
ゲームサーバーで扱うデータはとにかく多いです。 特にイベントなどをほぼ毎日運用する場合はサービス開始から1年でレコード数が無視できない量になり、それに伴って更新に要する時間が激増してしまいます。
以前執筆した9分43秒のデプロイを19秒にした話でもデータ更新を速くする為に変更テーブルをgit差分から取得する方法を紹介しました。 アカツキではデータの追加や管理の為に、seed_fuというデータ更新用Gemを使っています。差分データファイルを検出し、seed_fuに一致するテーブルだけを指定する方式で毎回データベースを更新していました。 しかしseed_fuが何らかの方法で失敗した場合やgitの操作ミスで差分が無くなってしまった場合のリカバリに欠けていたため、結局seed_fuを全てのテーブルで実行し直すという自体が少なからずありました。
外部ツールを追加してこのへんを管理できるかなと思ってしばらく探してみたのですが、gitの中に別のバージョン管理を入れるのはいかがなものかなというのと、運営チームのオペレーションが複雑化するのが懸念されたので一旦考え直すことに。 そこで結局git等の外部ツールに頼らずにseed_fuの実行毎に更新差分だけ自動でテーブルを指定する方法を設計したのでここでご紹介します。
続きを読む