IT

【読書メモ】『インフラエンジニアの教科書』(佐野裕)

ワークステーション

この本を読もうと思った動機は

  • 「インフラエンジニアとは何か」「どんなことを勉強する必要がありそうか」を知りたかったため
  • 未経験でエンジニアになろうと思ったら、インフラエンジニアになる可能性が高いので、早めに調査しようと思った。

といったところ。

以下は、この本を読んでみてのメモを記していく。この本以外に参考にしたサイトなどがあれば、それもメモしておく。

CHAPTER01 インフラエンジニアの仕事

section – 01 インフラエンジニアの仕事

インフラエンジニアの仕事は大きく分けて以下の三つ。

  1. インフラ設計
  2. インフラ構築
  3. インフラ運用

①インフラ設計

インフラを作る目的を理解して、必要な機能や性能を文章としてまとめる(要件定義)。

要件が決まったら、費用や期間などを算定する。企画書や設計書を作り、偉い人に決済を仰ぐ。

②インフラ構築

必要な機器やソフトウェアを発注する。納品されたらそれらを構築する。

具体的には、

  • 機器の運搬組み立て、取り付け
  • 機器のインストールや設定
  • 動作テスト、負荷テスト

などである。

このフェーズは、全部インフラエンジニアがやることもあるし、ほかの人(オペレータやベンダー)に任せることもある。

③インフラ運用

構築したインフラが正常に動き続けられるように運用を行う。

このフェーズでやることは

  • 障害対応
  • キャパシティ管理
  • インフラ起因でない原因の切り分け

といった区分に分けることができる。

障害対応は、故障対応や急なアクセス増による不調への対応などがある。

キャパシティ管理は、アクセス数や扱うデータ量に対し、適切なキャパシティになっているかを見直す作業。インフラにかかる負荷は一定ではないので、必要に応じてキャパシティを見直す必要がある。

キャパシティの能力が足りなくなっていればインフラを増強する。能力が過剰ならインフラを縮小する(コスタダウン等のため)。

クラウドの発展によりキャパシティ管理は行いやすくなった。

section – 02 ITインフラを構成する要素

この本で紹介されているのは以下の3つ。

  • ファシリティ
  • サーバ・ストレージ
  • ネットワーク

ファシリティとは、建物、施設、設備といった意味。IT機器本体ではないが、インフラを構築する上で必要なもの。

インフラを収容する建物(データセンター)や部屋、サーバを乗せるラック、その他空調や発電設備など。

section – 03 技術者としてのインフラエンジニアの側面

インフラエンジニアが抑えるべき技術・知識の範囲について書いてある。具体的には以下の通り。

  • サーバハードウェア
  • サーバOS
  • ストレージ
  • ネットワーク設計と構築
  • ネットワーク機器

サーバハードウェアは、サーバを構築するコンピュータ本体のこと。主にIAサーバエンタープライズサーバの2種類がある。これらについては2章で触れられる。

サーバOSは、LinuxWindowsUNIX、3種類が主。それぞれ、障害対応については経験量がものをいう。以下に実戦経験が積めるかがカギとなる。

ストレージは新しい技術が続々台頭してきている。新技術それぞれのメリット・デメリットを見極められること、対費用効果の面から適切なストレージを選べることが、インフラエンジニアにとって必要となる。

ネットワークと設計において、用いられる通信プロトコルはTCP/IPにほぼ集約されている。昔はいろんなプロトコルが使われていたため、抑える知識量という点では楽になった。

しかし、ネットワークの流れは目に見えないので、実際にネットワークを構築しようとすると難しい。ネットワークを構築するときは、設計段階であらゆる角度から検討して問題個所をつぶしていく必要がある。

インターネットの世界では、外部のネットワークとの接続が必要なので、問題が発生したときに、自分が悪いのか相手が悪いのかを見極める必要がある。しっかり判断できないと、なかなか難しい。

ネットワーク機器の主な役割は通信の交換。ネットワーク機器はベンダーによってコマンド体系が異なるため、複数のベンダーの製品を取り入れるなら、それぞれについてコマンド体系の勉強が必要になる。

section – 04 選定者としてのインフラエンジニアの側面

数ある選択しから、適切な機器や技術を選択する。そういったことがインフラエンジニアに求められる。この章では、どういった場面で「選択」をする必要があるのかについて書いてある。具体的には以下の通り。

  • システム構成(構成と規模)
  • サーバスペック選定(CPU、メモリ、ディスク、RAID…)
  • ネットワーク構成(機器の個数やスペック、採用するベンダーなど)
  • データベース設計(データベースの種類や要件)
  • 運用体制(監視・運用のやり方、責任範囲など)

CHAPTER 02 サーバ

section 05 サーバの種類

ラックマウント型とタワー型

ラックマウント型サーバは、薄型でラックに積み重ねて連結できるタイプのサーバ。データセンターみたいな、大量のサーバーを設置・運用するような所で採用される。「ラックの中にマウントして(積み重ねて)設置できるサーバ」ということ。

このタイプの一般的なサーバは幅約19インチ×奥行き約540mmと企画化されている。

 

ラックマウント型サーバの例(DELL:PowerEdge R240)

ラックマウント型サーバーをさらに高密度化したものには、ブレード型サーバというものもある。

 

 

タワー型サーバーは、高さがあって体積が大きいタイプのサーバ。体積が大きいため拡張性に富む。単体のスペックはラックマウント型よりも高いことが多い。

ただし、何個も連結させて使用するのは難しい。なので、サーバーを単体で使用する小規模なシステムで用いられることが多い。例えば、会社のサーバー室やオフィスなどに置かれる。

タワー型サーバの例(DELL:PowerEdge T140)

性能・機能と値段による分類

サーバは性能・機能によって値段が異なる。ハイスペックになるほど値段が高くなるのが一般的だ。

ハイスペックのものを揃えればいい、というものでなく、用途に応じて適切なスペックのサーバを選んでコストを抑える必要がある。そこで、スペックや値段による分類が存在する。表にまとめてみた。価格が高くなるごとに、性能がよくなったり、機能が増えたりする。

IAサーバ

IAサーバとは、インテル互換CPUを搭載し、通常のパソコンと同様のアーキテクチャをベースに製造されたサーバのこと。

エンタープライズサーバ

エンタープライズサーバは、大規模な企業向けサーバのことで、大量アクセスに耐えられて耐久性も高くなっている。基幹系に使われる。値段は高い。

section 06 サーバの選定

インフラ構築の選択肢は無限にあるといってよい。その中から適切なサーバを選ぶ必要がある。サーバ要件を決める要素を挙げていくと

  • CPU(周波数、ソケット数、コア数など)
  • メモリ(容量、転送速度など)
  • ディスク(容量、回転数、など)
  • RAID(どのREIDか)
  • NIC(ポート数)
  • 保守年数
  • 保守レベル(24時間365日かどうか等)
  • 重量

などなど。他にもたくさんある。

サーバスペックの決め方

主に考え方は3つ。

  1. 実際の環境を試験的に構築して、測定結果から考える
  2. 適当なスペックのものをとりあえず本番に導入してみて、必要に応じてサーバやパーツを増減していく
  3. 消去法で絞り込む

重要なシステム(基幹系など)なら①、実際の負荷が予めわからない場合は②、ある程度サービスの性質がわかっているのであれば③、といった感じになる。

スケールアウトとスケールアップ

両方とも、事後的にサーバの性能を底上げする手法のことである。

スケールアウトとは、性能が足りない時にサーバの台数を後から増やすこと。負荷分散が可能ならこちらの選択肢が可能になる。

スケールアップは、すでにあるサーバのスペックを底上げすること。メモリの増設や、ハイスペック機種への入れ替えなど。負荷分散が難しいときはこっち。

ベンダーを選ぶ

サーバのスペックが決まれば、各ベンダーに見積もりを依頼し、価格やサービスをみてどのベンダーにするのか決定する。

section 07 CPU

CPU(Central Processing Unit:中央演算処理装置)は、コンピュータ内でのデータの操作を制御する装置のこと。人間でいえば頭脳に相当。

CPU関する用語

ソケット数:物理的なCPUの数

動作周波数:1秒間に発せられる、各回路間で処理の同期をとるために発せられる信号(クロック)の数。大きいほど処理速度が速いが、消費電力が増え、発熱も増える。

コア:主要演算回路のこと。複数のコアがあれば、その分だけ同時に演算を行うことができ、その分処理能力は高くなる。

キャッシュ:頻繁に使うデータへのアクセスを高速化するために、より高速な記憶装置(キャッシュメモリ)に一時的に保存する仕組みのこと。低速なメインメモリへのアクセスが減るので、CPUの処理性能が上がる。

ハイパースレッディング:intelのCPUにおいて、1つのコアを、OSから見た時に2つになるように見せる技術。この技術により1コアでも2つの処理を同時に渡すことができる。コア数が増えるわけではないので、演算処理は1つずつ行われるが、OSの負担が減る分だけ高速化できる。

ターボブースト:まったく仕事をしていないコアがあるときに、仕事をしているコアを動作周波数よりも高速で動作させる技術。消費電力や発熱のリスクを回避(コンピュータで監視)しつつ性能を底上げできる。

オーバークロック:定格以上の動作周波数で動作させることで処理能力を向上させる手法。オーバークロックと違い、消費電力や発熱のリスクを回避していないため、故障のリスクがある。

パフォーマンスと発熱・消費電力はトレードオフの関係

一般的にCPUの処理能力を高くすると、消費電力・発熱は増加する。そのため、いかに消費電力・発熱を抑えつつパフォーマンスを向上させるか、という方向性で進化してきた。

昔は動作周波数を上昇させることで高性能化させてきたが、消費電力・発熱のデメリットが無視できなくなってきた。そのため、現在では動作周波数をおさえつつ、マルチコアによる並列処理や、ターボブーストによって必要な時だけ周波数を上昇させるといった方法で処理能力を向上させるようになった。

CPU選定のポイント

パフォーマンス:求める演算能力を満たすかどうか。必要以上に高性能にすると、コストがかさむ。CPU使用率の高さの高低をみて考える。

コア数:コア数が多いほど、その分だけ同時演算を行える。仮想化環境では1台のサーバに複数のゲストOSが起動するので、コア数は多いほうが良い。

ソケット数:コア数を増やす方法として、ソケット数を増やして、物理的なCPUの個数を増やすという方法もある。こっちのほうが安上がりな事も多いが、パフォーマンスはダウンする場合がある。

価格対比:価格に見合っているかどうか。要件に見合う中でなるべく安いものを選ぶ。

消費電力:消費電力を減らしたいかどうか。運用コストを年単位でみると、大きなコストダウンになる場合がある。

使用するソフトウェアのライセンス体系:CPUの個数や種類によって価格が変わるソフトウェアがある。特に高価なソフトウェアを使用するなら、ライセンス体系をよく理解しておく必要がある。

section 09 メモリ

この章で述べられるのはRAM(Random Access Memory)という、電源を切ると記憶が消えるタイプの揮発性メモリについてである。

メモリのパフォーマンス

メモリ自体の速さと、通信を行う際のデータ転送幅の広さの両面から考慮する。

メモリ自体の速さは、動作周波数の高さの事。数値が大きいほど高速。

データ転送幅は、一度に転送できるデータの容量の事。これも数値が大きいほど高速になる。

メモリ関連の用語

スロット数:マザーボードにあるメモリを挿す場所の数。

ECC(Error Correcting Code) memory:誤り訂正符号(ECC)が追加されているメモリ。メモリ故障が発生しても、ビット反転エラーをメモリ自身が自動補正し、アラートを出す。

もしもECCメモリでないメモリを使用していた場合、メモリ故障が発生したらOSレベルで異常終了してしまう。「ちゃんとシャットダウンしてから正常なメモリに交換」みたいなことはできない。

チャネル:メモリと入出力装置間のデータ転送を自律的に行う装置。CPUとマザーボードのチップセットが複数チャネルに対応している場合、チャネルごとに同一種類のメモリを搭載することでデータ幅を増やすことができる。

ランク:メモリコントローラがメモリ上のDRAMからデータを入出力する単位の事。ランクの数値が大きくなるほど、一度に入出力できるデータ幅が広くなり、高速になる。

UDIMM:バッファなしのDIMM。パソコン用メモリの大部分はUDIMMが使用されている。

「DIMMってなんやねん」と思ったので、その説明をIT用語辞典から引用。

DIMMとは、コンピュータのメインメモリとして利用されるメモリ基板(メモリモジュール)の一種で、基板の端に並んだ金属端子が基板の表と裏でそれぞれ別の端子として機能するもの。

引用-IT用語辞典(DIMM)

とりあえず、ここでは「メモリ基板の一種」というところだけ押さえておこうと思う。

RDIMM:(近日追記)