弊社では、Linuxサーバーとオープンソースソフトウェアを用い、Webサーバファームの構築やネットワークの冗長化等の、クラスターインフラストラクチャーの構築を行っています。なるべくベンダー依存のプロダクトを使わないことで、機器やソフトウェア自体のコストが下がるとともに、ネットワーク上のブラックボックスを廃することができ、わけのわからない障害がおきても何とか自力で解決できてしまうというメリットがあると考えています。
一例を挙げますと、
- ルーターやロードバランサーはLinuxサーバーで実現しているため、万が一おかしな挙動が発生しても、Linuxサーバー上でパケットをモニタリングする事により解決できてしまいます。また、サーバー自体がハードウェア的に故障しても、別のLinuxサーバーをロードバランサーとして立ち上げてしまう事が可能であり、一般に数百万円もするL4スイッチが故障し交換する場合に比べ、数十万円のサーバーのリプレースで済んでしまうので、圧倒的に有利です。
- OSは主にDebian Linuxを採用しています。Debianはaptというパッケージ管理システムのおかげで、パッケージのインストール/アンインストールが非常に容易で、必要最低限の機能のみをインストールしておき、あとで何かが必要になったら必要なパッケージのみをインストールするといった運用が可能です。OS自体をミニマムに保つ事で、システム上にあるソフトウェアや動いているサービスの把握が非常に容易になります。世間でよく見られるように、有料のディストリビューションをとりあえずフルインストールして使うというやり方だと、何か問題が起きてもどのソフト、どの設定が原因でそうなっているのか分からない、といった状況に陥りやすいと思われます。
このような考え方でシステム構築を行うと、機材の費用とソフトウェアのライセンス費用を圧倒的に抑える事ができます。
その一方で、それを実現するための技術者や、運用する担当者に高い知識とスキルを要求する事になり、人件費は増加することになるでしょう。
そうすると、初期コストが必ずしも少なくなるかどうかは明らかではありませんが、扱うサービスの数や規模が大きくなればなるほど十分にコストメリットが出てくるのではないでしょうか。
また、サービスクオリティーを競争力にしようとするIT事業者であるならば、商用プロダクトのサポートに頼るよりも、自前の技術者のスキルを頼りにし、技術者のスキルの高さを競争力に変えて行く方が長い目でみてメリットがあるのではないのでしょうか?
前置きが長くなりましたが、
「IT事業者であるならば、ネットワークインフラやは商売道具であり、商売道具を磨かないものは、商売においても輝きを放てないであろう。」という考えの下に、エンジニアに求められるマインドセット、スキルセットについて以下に列挙してみました。これは弊社が求めるエンジニア像でもあります。
[インフラエンジニアに求められるマインドセット]
- トラブルは糧である、嬉々として取り組むべき
- 原因はしつこく追究する
- 自分の守備範囲を勝手に決めない
- ベンダーに頼らない
- ベンダーの言う事を鵜呑みにしない、自分で考える
- 自分たちで解決できないものは使用しない
- ツールを知り尽くそう、プロスポーツ選手はきっと自分で道具を磨くはず、道具を磨こう
[オープンソースなインフラエンジニアが習得すべきスキルセット]
- 英語圏のサイトから容易に技術情報を収集できること
- Linuxカーネルは自分でコンパイルするのが基本
- L3、L4スイッチはLinuxで実現する
- 使用したいツールは自分でソースからインストールできること
- 少なくともWebサービスに必要なツールは、ディストリビューションに頼らず、バージョン選定する
- 問題があればソースレベルで解析が出来ることが望ましい、自分で直せるとなお良い
- 簡単なネットワークプログラムは自分で作れる(自分もそうなりたいと思います)
- RFCを読もう
以上になりますが、賛同される方、また、反対される方は是非コメントを頂ければと思います。