最近のインフラエンジニアの仕事

自社プロダクト部の平井です。インフラ担当の一人です

インフラ担当って何をやっているのか? 少し分かりにくいのと、新しいことも取り入れながらやっていっていますので、仕事のご紹介したいと思います。

インフラエンジニアとは?

仕事として分けると大きく二つ、

  • サーバ構築
  • 日々の運用
    があります。
    前者は、インフラ設計、新しいサーバの立ち上げ、後者は、稼働中のサーバの監視、メンテナンス、トラブル対応、セキュリティ対策になります

今までこれらを手を動かして作業している部分が大きかったのですが、少しづつプログラム開発のようなコード化を進めていっているのでそちらを紹介します。

インフラのコード化ついて

以前、もう一人のインフラ担当が以下のような事例紹介を発表しました。

インフラ構築の自動化・量産化。e-Agencyのクラウドプロダクト部における Chef 導入事例を紹介
http://www.e-agency.co.jp/column/20140724.html

どれくらい大変なのか、その後どのように実践していったか、途中経過をお知らせします。

コード化の実践状況

以前の手作業と、コード化作業との比較ですが、以下のような特徴があり、インフラチームのエンジニアと情報共有がグンと進んで来ているのを実感できています。

  • 一度作った手順(レシピ)をリポジトリ(Githubなど)に置いて再利用ができる
  • どういう設定をしたか、いちいちサーバに入って確認しなくてよい(記憶に頼らなくてよい、メモの漏れも気にしなくて良い)といったメリットがあります。反面
  • レシピを書かないといけないので、最初は手で立ち上げるよりかは時間がかかる。

サーバ構築

新規でサーバを立ち上げる場合は原則、Chefで構築したものを投入するようにしています。
具体的には主にミドルウエア(Apache, Nginx, MySQL, Ruby, PHPなど)のインストールを今まで手作業でやっていたものをChefに置き換えています。

日々の運用

監視部分はNagios, Muninといったツールをカスタマイズして使っています。これらの設定ファイルはGithubで履歴管理をしています。
不定期のメンテナンスでログインする場合、サーバ台数が100台以上になってきて、こちらも手作業が辛くなってきているので、ansibleというツールを使っています。こちらも手順がコード化できます。
ansibleはchefとかぶるツールではあるのですが、Chefと違って手作業でインストールしたサーバに対しても簡単に適用できるということで、全てのサーバに対してやる作業に使っています。

Chefはきちんと整理して共有しやすくしてくれるツール。ansibleは運用を楽にしてくれるツールという使い分けになります。
しかし手でも同じことをやった経験があった方が、これらのツールになじみやすいと思います。

その他

  • SSL証明書の運用
    暗号化と身元確認をまとめてやってしまっているもの。事務手続きもあるしちょっと特殊な扱いになります。
  • その他
    トラブル対応やセキュリティ対策、インフラのテストもこれから改善していきたい課題になります。

サーバ構築コード化の課題

 設計に関して、我々はサーバベンダーの選定はどこかに固定はしていません。固定するとコード化はしやすくなりますが、それよりもサーバの種類によってベンダーも使い分け(コーヒーで言うとブレンド)のメリットを感じています。運用中のアプリの造りも疎結合だったりします。

  • オンプレミス(ラック借り)→最近はなくなりつつあります
  • 専用サーバ→クリティカルなもの、特殊な設定が必要なもの
  • VPS→テスト、監視用サーバなどクリティカルではないもの(安く済ませられるというメリット)
  • クラウド→これがメインになりつつあります
  • その他Webサービス(AWSのS3など)
    • DNSのレコード管理のコード化はAWSのRoute53を使えば、比較的簡単にできるのでそろそろやりたいところです。

といった感じでサーバの役割に応じて使い分けています。
なので、サーバの起動、OSインストール、ネットワークの設定をどうしていくかは、これから考えていかなければいけない課題です。

まとめ

 インフラ業務をプログラムと同じように全てコード化できると、開発と運用がより近づき、今までよりレベルの上がった世界にいけると感じています。
インフラチームも開発と一緒になって生産性を上げて何かを成し遂げていきましょう。