オンプレミスのシステムをAWSに移行した際に、特に性能問題が顕在化しやすい箇所の一つがDB/ストレージだ。ストレージを標準仕様のまま利用したり、DBの配置場所の推奨構成を採用したりすると、オンプレミスの時と比べて性能が悪化しやすい。

 典型的なのが、シナジーマーケティングの坂井氏らがiNSIGHTBOXの基盤で直面した事態である。オンスプレミスとほぼ同水準のスペックで仮想マシンやDBサービスを選んだにもかかわらず、7割程度の性能で頭打ちになった。

 AWSの標準のモニタリングツールを確認しながら原因を一つずつ探った坂井氏は、主に四つの性能向上策を取り入れて問題を解決した。(1)ストレージ専用帯域の確保、(2)データの一括送信、(3)IOPS指定オプションの採用、(4)「ゾーン」をまたぐ同期機能の停止―である(図5)。

図5●DB/ストレージの性能向上のために取り入れた四つの策
シナジーマーケティングの坂井氏は、クラウド内のネットワークとストレージ周りにそれぞれ複数の策を講じた
[画像のクリックで拡大表示]

 (1)はDB用ストレージのI/Oと、他のデータ通信を分離する措置だ。AWSのDBサービスのデータベースとログは、クラウド内ネットワークで接続するDB用ストレージに格納する。

 このクラウド内ネットワークは、特に設定を施さない場合、サーバー間通信などと共用となる。従ってサーバー間通信などでネットワークが混雑すると、DB用ストレージのI/O性能も悪化してしまう。

 そこで坂井氏は、DBサービスの仮想マシンの選択肢のうち、I/O用の帯域を専用で確保できるタイプを選んだ。これにより、サーバー間通信などのデータが混在しないストレージ専用帯域を確保した。

 (2)のデータの一括送信とは、容量の小さなデータを一定の単位にまとめ、大きなデータにして送信回数を減らす取り組みである。SQL文の「BULK INSERT」を使用した。送信回数が多いと送信したいデータ以外の通信も増え、貴重な帯域を浪費し、遅延時間も増える。送信したいデータ以外のこうしたムダな通信を減らす工夫である。「小容量のレコードを大量に書き込むiNSIGHTBOXのシステムには、特に効果的な策だった」(シナジーマーケティングの坂井氏)。

 (3)は、その名の通りDB用ストレージのI/O性能を指定できるオプションである。安定したI/O性能を出す上で役に立つ。

 ただし「ストレージ専用帯域の確保の策との組み合わせが不可欠」と坂井氏は話す。I/O性能を指定してもクラウド内ネットワークが混雑すると指定通りの性能が出ないからだ。

 (4)の「ゾーン」をまたぐ同期機能の停止は、DBサービスの耐障害性の向上策を止めて性能向上を図る策だ。

 AWSのDBサービスを利用する場合、耐障害性を高めるために別のデータセンター(ゾーン)にデータを同期する構成を取る企業が多い。「Multi-AZ(アベイラビティーゾーン)配置」と呼ばれる。

 Multi-AZは複数のデータセンターにデータを格納するため、非常に高い耐障害性を得られる。半面、データを同期する際にデータセンターをまたぐ通信が発生する。拠点間通信は伝送遅延の影響を受けやすく、「どうしても性能が劣化してしまう」(シナジーマーケティングの坂井氏)。性能確保を優先することに決めた坂井氏らのチームはDBのMulti-AZを諦めた。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。