魔法使いの卵

WEBエンジニアの卵の成長記録

Webエンジニアの教科書読んでみたメモ5(開発環境の自動化)

手動での開発環境構築のリスク

  • 本番サーバを新たに追加したい
    • アクセスが増えてくると処理速度がたりなくなる場合がスケールアウトで対応
      • スケールアウト
        • サーバの数を増やすことで性能を上げる方法
      • スケールアップ
        • サーバのCPUやメモリを高性能なものにして処理性能をあげる方法
    • 環境構築が自動化されていればコマンドで簡単に追加できる
    • しかし自動化されていない場合は秘伝の書になっている
    • 人はミスをするいきものなので秘伝の書などは危険
    • まずはミス防止のためにも自動化を導入するべき
  • すでに稼働している本番サーバにミドルウェアやライブラリを追加したい
    • サーバーの数が増えてくると特定のサーバにライブラリやミドルウェアがはいっていたりはいっていなかったりする
    • 手動で管理をする上ではどうしてもリスクができてしまい手間にもなる
    • 環境構築を自動化することでそれらの管理もAnsibleにまかせてしまえる
    • 安心安全なやり方としてはAnsble等のプロビジョニングツールとサーバの状態をテストするServerspecに任せよう
  • 開発環境を気軽に構築したい
    • vagrant
      • コマンドで起動停止ができちゃう
      • 設定が簡単で使いやすい
      • いらなくなったらデストロイで潰せる
    • Docker
  • 個人的にはVagrantが好き

Ansibleってなに

  • 必要なライブラリやミドルウェアをインストールし期待したサーバの状態にすること
  • メリット
    • 導入が簡単
    • sshログインさえできたら対象のサーバに何も必要ない
    • Pythonで実装されているがkey-valueやjsonで利用できるので学習コストが低い
  • それ以外のプロビジョニングツールは?
    • Chef,Puppet等がある
  • 大規模で強いのはchefと聞いたことがある

Serverspec

  • サーバ正しい状態なのかを保証できない場合は不安が残る
  • サーバの状態をテストしたい
  • プロビジョニングが正常か確認したいなどでつかえる
  • プロビジョニングとServerspecは基本セットで使うと良さそう

まとめ

  • 人はミスをするいきものなので自動化を進めよう
  • 秘伝のソースや秘伝に書等がある場合は見直しが必要
  • 自動化することで誰がやってもおなじ安心安全な管理ができる
  • 手動で時間を使うよりも自動化して楽をしようよ

読んでいる本

Webエンジニアの教科書