読者です 読者をやめる 読者になる 読者になる

kentana20 技忘録

技術ネタを中心に、セミナー、勉強会、書籍、会社での出来事を綴っていきます。不定期更新。

週末ランサーズで「Infrastructure as Code」をハンズオンしてきた

勉強会 テスト インフラ chef serverspec jenkins

本日(5/24)は渋谷のランサーズさんで開催された

に参加してきました。

f:id:kentana20:20140524184311g:plain

プログラム

  • 14:00-「週末ランサーズ」について
  • 14:05-「Infrastructure as Code」について(ヌーラボ 中村知成氏 @ikikko)
  • 15:00- ハンズオンタイム(〜「Infrastructure as Code」を体験しよう〜)
  • 17:00- 交流会

ヌーラボ 中村さん(@ikikko)

  • 中村さんというお名前より、@ikikkoというTwitterIDの方が有名かもw
  • Nulabでアプリよりの開発者としてBacklog開発やインフラ整備などを担当
  • Jenkinsユーザ会(主催っぽいことをしてる)

Infrastructure as Code

背景

  • いままではアプリ開発者だった
  • インフラ方面に寄って行ったら、なぞの手順書やシェルがたくさんあって、暗黙知だらけだった
  • インフラ方面を整備したくなった(手順書とかシェルは時を経て動かなくなるケースが多くて、カオスだった)

そこで、Infrastructure as Code

  • いままで手順書や「秘伝のタレ」状態だったShellをコードで管理

メリット

  • アプリ開発のノウハウをインフラにも適用できる
  • コードで書けるので、インフラ構成もテスト/CIできる
  • コードレビュー / Pull Requestでコミュニケーティブにやりとりできる
  • コードで書けるので、暗黙知化しづらい

Infrastructure as Codeなツール

  • Vagrant
    • VirtualBoxなどの仮想環境を管理するツール
    • Vagrantfile内に仮想環境の構成を書ける(Chefとかの構成管理ツールと連携して使うことが多い)
  • Chef / Ansible
  • serverspec
    • ペパボのmizzyさんが作った構成のテストをRSpec風にRubyで書けるツール
  • Packer
  • Jenkins

NulabさんのInfrastructure as Code事例

Backlogの検証環境

  • x64 / x32 毎のCentOS 4/5/6 とか、DBはMySQL / PostgreSQLとかをVagrant+Chefでイメージを分けて作っておく
  • serverspecでそれぞれの構成をテスト
  • Jenkinsでそれぞれの環境をAWSに作って、serverspecでテスト を繰り返す(vagrant-aws plugin)
  • テストが通った環境はPackerでAMIに保存し、アプリデプロイ時に使われる

デプロイ

  • 契機はレポジトリのpushか、週に1回何もなくても全テストを行い、問題を検出している
    • 週1回の全体テストはやってみると意外と良い(ミドルウェアのバージョンを上げたりしているが、環境系の問題を検知しやすい)
  • デプロイはHubotとtypetalkを連携させて @nubot deploy please 的なメッセージでやってる

フローを絵にするとこんな感じ(nulab さんブログ より引用)

f:id:kentana20:20140524204558p:plain

ハンズオン!

ハンズオンの流れは

  • 事前準備
  • プロビジョニング
    • Vagrant+Chef でWebサーバを仮想環境に構築
  • テスト
    • serverspec を使って構成をテスト
  • CI
    • Jenkinsでも同一環境を作ってテストして壊す

といった感じで、Infrastructure as Codeの一連の流れを体験できる、とってもよくまとまった内容でした。

@ikikko さんのGistにハンズオンの手順がまとまっているので、こちらを参考にすれば同じ内容でハンズオンができます。

所感

今回はInfrastructure as Codeを体験するという内容で、前述のとおりInfrastructure as Codeの一連の流れを体験できる、とてもとても良くまとまった内容でした。

@ikikkoさんは以前、ランチをご一緒させていただいたことがあったのですが、独特の空気感を持っている方で、ちょっと後輩に似ている部分もあり、勝手にシンパシーを抱いていますww とてもデキる気配が漂っているので、今後機会を作ってお仕事やオフのイベントとかでご一緒させていただきたい方です。

今回は1人でハンズオンの講師をされていて、大変そうでした。ちょうど今週、社内でGitHubのハンズオンを講師1人+TA2人という編成で10名くらいをサポートする形で開催して結構大変だったのですが、今回は講師1人に対して、参加者が15名くらい?いたのでかなり大変だったのでは無いかと思います。終わった後に少しお話をしたのですが、「資料も結構時間かかったっす」と言っていたので、ホントに大変だったと思います。お疲れ様でした。

@ikikkoさんの奮闘のおかげで楽しい時間を過ごせたイベントでした。ありがとうございました!

おまけ

ランサーズステッカーゲットしましたー!

f:id:kentana20:20140525002144j:plain