突然ですが、プログラミングして作成したアプリケーションやサービスを動かす土台となるインフラについて、小規模システムのものだと何が必要かを考えてみました。
内容としては、概要レベルのものになっています。
まずは「インフラ」について知ってもらい、その後に重要と思われる 4 つの設計について説明します。
インフラとは
様々なアプリケーションやサービスを動かす土台のことで、主にハードウェアと OS から構成されます。
- ハードウェア (CPU、メモリ、ネットワーク、ハードディスク)
クラウドが主流の今は、故障については気にする必要はありませんが、
容量を気にする必要があるのは変わりないかと思います。
- OS (Windows, Linux 等)
ハードウェアのリソースをアプリケーションに適宜振り分ける働きをします。
アプリケーションやサービスを問題なく動かすために、どのくらいの性能の CPU やメモリ、ハードディスクを使用し、OS 側でどのような設定を行うべきかを決めるのが、インフラ設計です。
なお、インフラ設計において、これ以外で考えるべきは「バックアップ・リストア/リカバリ」と「監視」があります。
他には、優先度は高くないですが、バッチ処理等があります。
以降は重要であると思われる、ハードウェア、OS、バックアップ・リストア、監視の設計について説明します。
ハードウェアの設計
使用する OS やアプリケーションソフトが求めるハードウェアの性能がありますので、それらの数値を確認して加算し、決定します。
OS を例にした場合、Linux OS のひとつである Redhat Linux 下記のページにハードウェア要件を明記していて、「メモリーの最小要件」を見ると、バージョン 7 では最低でも 1GB~2GB が必要になります。
Red Hat Enterprise Linux テクノロジーの機能と制限
ディスクの設計については、出力されるログやデータベースの容量などといった様々なデータ容量について、システムを利用する年数経過した時に xxGB 使用するので yyyGB 確保する、といったような感じの考え方となります。
CPU とメモリの設計は少し面倒で、OS やアプリケーション、サービスを動作させる容量に加えて、外部から ○○ 個の同時接続があっても問題ない容量を確保する、といったものになり、EC 系のサービスは注意する必要があります。
OS の設計
アプリケーション等によっては Windows で使えない、Linux に対応していないものがあるかもしれませんので、OS の種類が変わるかと思います。
また、OS にはハードディスクの論理的な分割(Windows で言うところの C, D ドライブ) やユーザ設定、時刻設定、ネットワークの設定、ホスト名の設定があり、これらをどのように設定するかも考える必要があります。
バックアップ・リストア/リカバリの設計
システムが破損した時のことを考慮して、次の 3 種類を定期的に取得する必要があります。
- OS の設定ファイル (設定内容を変更したファイルのみ)
- データベースのデータ
- その他必要なデータ
バックアップの設計は、いつ、どのように取得して、どこに保管しておき、直近 X 回バックアップしたものを残しておく、というようなものです。
バックアップのファイルはある程度の容量となることが多いので、ディスクの設計に跳ね返ります。
データベースのバックアップについては、自動・手動どちらでもよいので、1日1回必ず行ってください。
リストア/リカバリの設計は、取得したバックアップデータなどから、いつの時点までシステムの状態を戻すのかを決めるというものになります。
リストア/リカバリの設計は、取得したバックアップデータなどから、いつの時点までシステムの状態を戻すのかを決めるというものになります。
監視の設計
サーバや OS 上のプロセス、Web サイトが起動しているか(閲覧できているか)や、CPU・メモリ・ディスクの使用量が多くなっていないかを自動で監視して、問題が発生時に速やかな対処ができるようにします。
- 死活監視 :ping によるサーバの生存を確認する。
- プロセス監視 :データベースなどの OS 上のプロセスが生存しているか確認する。
- ファイルシステム監視:C ドライブや D ドライブの使用率が高くなっていないか確認する。
- ログ監視 :特定のログファイルにエラーメッセージがないかを確認する。
問題が起きたらメールが送られる設定にしていれば、すぐに対処しやすくなり、特にサーバやデータベースが停止した場合には有効です。
最近は無料で監視できるソフトやサービスもあるようなので、それらを活用するのもよいかもしれません。
その他情報
余談ですが、自動の時刻補正機能である NTP サービスを使用する際は、注意が必要です。
理由は、データベース起動中に急激な時刻補正が発生すると、データベース自体に問題が発生することがあるためです。
実際、サーバ周りの設備のメンテナンスでサーバ自体を数時間停止して起動した後に、データベースが起動してこないということが起こった事例があります。
なので、サーバ自体を長時間停止する場合は、OS 起動後しばらくしてからデータベース起動を手動でやった方が良いかと思います。
参考情報
- 敗走王のブログ
- 社内のインフラ設計で発注者が押さえておくべき重要ポイント
- Linux詳細設計書の目次例
- エージェントを使用する監視機能一覧
- 監視のソフトウェア、サービス