AdventCalendar
adventcalendar2017

初めに

こんにちは。CYBIRDエンジニア Advent Calendar
21日目はインフラ部所属@kenchang100kgです。
20日目は@kanachaの「iOS・Androidアプリの自動ビルド環境を構築した話」でした。

@kanachaさんの記事よかったですね。
読みやすくまとまってました。

ビルドが人頼りではなくなると担当がいないから提出用のビルドが出来ない!
申請が間に合わない!告知してたイベントが!
なんて事にならないからいいですよね。

2017年の振り返り(個人)

個人的な興味があった出来事で振り返ってみると、
EVO2017で日本人プロゲーマーである、ときどさんが優勝、
Steamで販売されてる、PlayersUnknownBattleGroundが爆発的に流行ったり、
他にも色々とビッグタイトルが発売・発表され、
2017年はPCゲーム・コンシューマゲームが熱かったなぁと思ってます。

2017年の振り返り(仕事)

2017年のCYインフラ部で起きた特に大きな変化と言えば…

  • プロビジョニングツールをChefからItamaeに

  • TerraFormでインフラの構築・変更・バージョン管理を行うように

この中で今回はChefからItamaeに何故乗り換えたのか、
弊社で使っていたChefの課題とかを書いていこうかと思います。

課題

色々覚えることが多い問題

私がCybirdに入社してインフラ部のメンバーとして働き始めた時、
一番最初にやったことがChefの学習でした。
入社するまでこういうプロビジョニングツールに触れてこなかった私は結構苦労しました。
実際に周りのメンバーのChef習熟度もかなりマチマチでした。
ローカルに実行環境を作るにもググると皆やり方が違っていて、
Chefってなんなんだろう、となってしまったりもしました。
また私の後に入った新しいメンバーも最初は結構苦労していました。

そんなにChefの機能使ってない問題

弊社はPJ単体でみるとchef-solo(chef-zero)で実行管理するレベルで、
一つ一つはそこまで大きな規模の環境ではありません(20台無いくらい)。
Resourcesとかもそんなに多くの種類は使ってませんでした。
ChefServer構築してそこで一元管理するとかも特に行っておりませんでした。
台数もそんなに多い訳ではないので、この使い方は別に間違っていたとは思わないですが、
そもそもそれだけしか使っていないのであれば、
学習コストが高いChefにこだわる理由があまりないよなぁとは思っていました。

Chefの反省を活かして

他にも色々とChefを使ってて気に入らない事はあったのですが、
(chefの為だけにrubyがインストールされるとか)
そんな感じでChefを運用してみて色々と反省点が出てきて、
こうなったら改善じゃなくて刷新じゃ!Chef卒業じゃ!となり、
次世代のプロビジョニングツールを探す事にしました。
選定基準は下記方針にしました。

  • 手軽に覚えられる物がいいよね
  • シンプルな機能だけでいいよね
  • ある程度Chefの資産(知識)も使いまわせるといいよね

itamaeを選んだ

そんな選定基準をクリアしたのがitamaeでした。若干出来レース感はあった
itamaeはクックパッド社員の荒井良太氏が開発したChef Likeなサーバプロビジョニングツールです。
itamaeの詳細は下記URLを確認いただけると私の説明なんかより100万倍わかりやすいです。

Chefから移行して使ってみて非常に良いなぁと思った事をいくつか

  • Chefで使ってたレシピがある程度流用出来た

    • package,template,link,remote_file,remote_directoryくらいしか使っていないレシピは割とそのまま持って行けた
    • むしろinclude_recipeが楽になって助かった
  • itamaeコマンドが叩ければそれだけでOKというシンプルさ

    • リモート実行の際にはsshとsudoが出来ればそれだけOKというシンプルさ、リモートに実行に必要な何かをインストールする必要はない
  • ディレクトリ構成に制限がない為、ある程度自分たちの好きな形で管理できる

    • ただこれはよく言われているがある程度ルールを作っておかないとカオスになるので注意が必要
    • 弊社ではitamaeリポジトリWikiのBest Practiceを参考にしてます
  • Chefの下地があれば爆速で理解できる

    • 学習が無駄にはならなかったのがよかった

最後に

大規模な環境であればChefServerをたてて、一元管理するのは非常に良いと思います。
ただ弊社のようにchef-solo(chef-zero)で管理する規模(20台無いくらい)で、
yumでぶち込んで軽くconfig書き換えられるだけでいいんじゃ!な場合は、
お手軽に使えるプロビジョニングツールって感じでおすすめです。

さて、CYBIRD エンジニア Advent Calendar
明日は@gucchonさんの「ゲーム開発をWebViewからUnityに乗り換えて、苦労したこと、良かったこと」です!
社内で一番イケイケのイエスマン。ノーとは言えない男、@gucchonさんの記事楽しみですね。