サーバーとパソコンの違い
▶ 構成部品
- どちらもマザーボード, CPU, メモリ, ディスクによって構成されている
▶ 用途
- サーバーは24時間365日稼働することを前提
- ハードウェアの故障が発生しにくい
- 発生したとしてもパーツに冗長性をもたせることでシステムが止まらないように工夫している
- サービスを止めずにパーツ交換を可能としている
- パソコンは個人利用を目的としている
- グラフィックスやサウンドといったマルチメディア機能が充実している
物理特徴に基づくサーバーの種類
物理的計上に着目するサーバーは以下3種類に分類できます
- ブレードサーバー: CPU,ネットワークコントローラー,メモリ,および一部の内蔵ストレージドライブを細長い小型の筐体に搭載するスリムでコンパクトなサーバー
- ラックマウントサーバー: サーバーラックに格納されるように設計されたサーバー
- タワー型サーバー: スタンドアロンのシャーシ構成で,一般的なデスクトップPCに似ている
ブレードサーバー | ラックマウントサーバー | タワー型サーバー | |
---|---|---|---|
導入費用 | 大 | 中 | 小 |
サーバーラックの有無 | 必要 | 必要 | 不要 |
搭載サーバー数 | 多い | 普通 | 少ない |
設置や増設の煩雑さ | 容易 | 煩雑 | 容易 |
システムの規模 | 大規模~中規模 | 大規模~中規模 | 小規模 |
サーバー選定の進め方
サーバースペックを決める場合,必要なハードウェアリソースの使用量を決めた上でCPU,メモリ,ディスク,NIC(Network Interface Card)数 などを決定します.
検討項目 | 選択肢 |
---|---|
CPU | Freq, ソケット数(CPUの個数), コア数,キャッシュ容量 etc |
メモリ | 容量,メモリ速度 |
ディスク | 容量,読み書き速度 |
RAID | RAID1/5/6/10/50/60 |
NIC | 2port, 4port, etc |
電源ユニット | 総ワット数,冗長化 |
保守年数 | 何年使うのか |
保守レベル | 平日翌営業日対応など障害対応の際のサポートレベル |
拡張性 | メモリソケット数,PCIスロット数,ディスク搭載数 |
物理サイズと重量 | 1U, 2Uなどのサイズと総重量 |
📘 耐荷重を忘れるな
サーバーは数kgから数十kgもの重量が有ります.そのため,ラックの最大搭載荷重と床の耐荷重という観点は 設置にあたっての注意すべきポイントとなります.
一般的に床の耐荷重は1平方メートル当たり500kg程度の場合が多いものです.一方,一般的なサーバーラックは幅600mm×奥行き1000mmなので,0.6平方メートルしかありません.ラックは通常100kg以上あるので,ストレージ1台(90kg),UPS1台(50kg)だと,サーバーに割り当てることのできる重量は60kg程度. サーバー1台当たり30kgをと考えると,ラックに余裕があっても一般的な床を使用しているならば,2台程度しか割り当てることができません.
床の耐荷重を考えずに,ラックの最大搭載荷重を踏まえた上で空きスペースがあると判断してどんどんサーバーを追加してしまうと, 床に穴が空きかねないので注意しましょう.
そもそもどうやってサーバースペックの基準を算出するのか?
サーバースペック決定にあたり,必要リソースをどのように算出するかについて考え方は3つあります:
- 実際の環境を試験的に構築し,測定結果から判断する
- そもそも事前に必要サーバースペックの厳密な見積もりは不可能なので,初めは仮ぎめのスペックで運用し,実態に合わせてスケールアップなどで対応する
- 頑張って計算する
▶ (1) 実際の環境を試験的に構築し,測定結果から判断する
勘定システムなどの基幹系システムの場合は(1)の選択肢が取られるケースが多いですが.ただし,テスト環境構築という工程が入るのでリリースまでの時間がかかってしまいます.
▶ (2) 臨機応変,実勢に合わせ調整するスタイル
オンラインゲームのように,実際にリリースしないと負荷がわからないケースは(2)の手法が取られます.事前に余裕を持った仮見積をし,実勢に合わせ適宜スペックを調整していきます.このような場合,自前でサーバーを調達するのでなく,クラウドなどを利用して必要リソースを見極めてから,自前のサーバーを構築しに行くという流れが良いと思われます.
📘 スケールアウトとスケールアップ
- スケールアウト: サーバ台数を増やすことでキャパシティを増やす方法
- Webサーバーのように負荷分散が容易なケースでよく採用される
- スケールアップ: メモリ増設やパーツ交換でサーバー性能を増やす方法
- 負荷分散が難しいケースで採用される
(注意:GitHub Accountが必要となります)