私は普段中小企業の情報システム部門で勤務しています(また、プライベートでKvitanco ( https://kvitanco.biz/ のシステムを開発しています)が、その中でSaaS以外の業務用システムをいくつか、運用しています。業務システムをサーバーに何も考えないで当初は設置していたのですが、サーバーの買い換えのたびに発生する移行コスト、そして急遽故障した際の復旧コストなどを考え、最近ではHyperVやコンテナ技術を用いてのシステム運用に挑戦しています。
そこで今回は、その中でも皆さんに知っていただきたい、店舗PCにインストールする「サーバー型アプリケーションをクラウドへ!」「クラウドNGなら、せめてHyperV使おう!」について説明します。
目次
HyperVとは?
まず「HyperV」について説明します。HyperVは、Windows Pro Edition(家電量販店で買ったPCに+15000円もすれば導入できるOS)やWindows Serverについている標準機能で「Windowsの上に別のWindowsをインストールして」使用できるシステムです(正確には少し違うのですが…)。
ポイントは「Windowsの上に載っているWindows」は、PC内に保存される「仮想ハードディスク(vdhx)」を移動すれば、別のPCでそのまま使えるという点です。つまり、仮想ハードディスクをバックアップしておけば、サーバー故障時も別のPCを用いてサーバを迅速に復旧できます。
今回の記事の趣旨と目的
今回は、そのHyperVでの構築とクラウド化をすることによる、災害やパソコン故障リスクへの対応、について説明し「中小企業で予算ほぼゼロでどのようにサーバー破損リスクに対応するか?」に対する答えの一つを提案することを目的としています。
なお、この内容を活かすと業務システムのAWS/Azure/Googleへの移行、なんかもできてしまいます(会社にサーバー置かなくても大丈夫になります)
サーバー設置は恐れないで
業務システムの開発会社の多くは「自社でデータセンタ運用開始したので、そこで運用しましょう!」という提案をしてくるケースが多いのですが、個人の意見としては、システム運用会社に対してシステムを預けることは得策ではないと感じています。
それは「業務データを自社の裁量で取り出したり、加工することが一切できなくなること」「基幹システムの移行に当たっては現行システムの運用会社からの支援が必須であること」の2点があることです。
システムは、プログラム+サーバー側プログラム+データベースで成り立っている
多くのシステムは、パソコンにインストールするソフトウェアと、サーバーにインストールされるプログラム、そしてサーバー側のプログラムが使用するデータを蓄積するデータベース、サーバでのデータ保存場所の4つから成り立ちます。
WEBページの閲覧もこの例にもれず、
・パソコンにインストールするソフト:ブラウザ(Chrome/Microsoft Edgeなど)
・サーバーにインストールされるプログラム:Wordpressなど
・サーバー側のプログラムが使用するデータを蓄積するデータベース:MySQL, PostgreSQLなど
・サーバーでのデータ保存場所:サーバーのCドライブ
といったように分解できます。
この中で最も大切なのが「サーバー側のプログラムが使用するデータを蓄積するデータベース」で、これをいかに自社のコントロール下に置けるかが、これからの社会のIT活用/情報戦略での命運を分けると感じています。
もしこのデータベースへのアクセスがプログラムの提供元しかできない場合、データの取り出し口を作ったりデータの抽出をしたりするたびにシステム会社に支払発生→予算がつかず(あるいは施策を検討するためのデータがえられず)I T推進が遅れる、といった事態を招きます。
そのため、もし自社でシステム開発をして使用するのであれば、このデータベースへのアクセス権を担保する、というのが必須です。
その手っ取り早い策が「自社でサーバーを立てる」であり、ここに数百万円かけてもやるべきだと感じます(耐用年数が約5年なので、200万円かかっても3.5万円です)。
自社システム運用時は「障害をいかに復旧できるか」「代替サーバーを用意できるか」が大事
ただし、情報システム部門としてはクラウドに載せた方が問い合わせや定常タスクも少なく楽だ、というのもわかります。障害が一度起きてしまえば、代わりにプログラムを稼働する環境を用意しなくてはなりません。
しかしながら、現在はパブリッククラウドが簡単に(しかも、数分で簡単にデプロイできる)時代です。普段の業務の効率性を考えれば(サーバー設置箇所に多くの従業員が勤務するのであればなおさら)社内へのサーバー設置が望ましいのですが、障害時だけクラウドを使用する、ということであればクラウドの利用料も膨大になりにくく、安定した運用環境を実現できます。
障害にも対応できる「サーバー環境」の稟議の内容について
自社でサーバーを運用する事業者であれば、以下の内容は稟議として含めておきたいものです。
- サーバーは十分な容量/メモリを持ったものであること
- 必ず、プログラムは仮想環境( VMWareまたはHyperV上)に構築すること。
可能であれば、システムごとに仮想環境は分けるのが望ましい。 - 障害時に備えたクラウド側のネットワーク設計を行なっておくこと。
1つずつ見てみます。
サーバーは十分な容量/メモリを持ったものであること
本来必要なサーバーに、以下の容量を追加したものが一つの目安です(※いくつHyper Vをサーバー上に載せるに応じて少し変動します)
・メモリ:+2GB以上を目安にサーバーを購入します(2GBがHyperVを動かすのに必要なメモリです)
・コア数:本来必要なサーバーコア数+2つ
・容量:1仮想環境ごとに+ 30GBを追加して購入する(ホストOSで30GB, 仮想環境ごとのバッファとして10GB)
プログラムは仮想環境上に構築する
仮想環境とはいえ、通常のWindowsと同じです。
具体的な構築手順は、Microsoft上のヘルプを見てみてください。
障害時に備えたクラウド側のネットワーク設計を行なっておくこと
障害が起こるのは突然です。クラウドにシステム移行する事前準備を行い、手順書について作成するか、移行をシミュレーションできるようにしましょう。
AWSを例に取ると、以下の内容については事前に構築しておくか、すぐに構築できるように準備しておく必要があります。
- VPC ( クラウド内のネットワークルート定義 )
- VPN ( クラウドと自社ネットワークとの間でプライベート通信ができるようにする )
- ※ルータへのポインティング(DNS)転送条件設定方法の確認
多くの場合、IPアドレスまたはDNS名でサーバーとクライアントPCは通信しています。
通信形式を確認し、転送設定を行なっておく必要があります。
よく中小企業で使用されるYAMAHAルータの場合の設定例は、以下の通りです。
http://www.rtpro.yamaha.co.jp/RT/manual/nvr500/dns/ip_host.html
まとめ: クラウドを活用した災害・機器故障などのBCP対策を
いかがでしたでしょうか。サーバーの入替となると、ハードウェアを購入して設定しなおし、というケースも多いかと思いますが、そこに一つアイディアを入れることで、その後の災害時や機器故障時のリスクを一気に削減することができます。
コスト面やパフォーマンス面で普段はクラウドを利用していない企業も、緊急時は気軽に使用できる1つの選択肢としてクラウドは検討するべき時代になったのではないでしょうか。多くは時間課金なので、障害時だけであればそこまで多くのコストをかけずに運用することができることも一つの魅力です。
ぜひ、参考にしてみてください。