Db2 on Cloudの利用料金見積もりのコツ

# 当記事の概要
当記事では、IBM Cloudで提供されるマネージドDBであるDb2 on Cloudの利用料金を見積もる際の注意点・コツを紹介します。

# 当記事の執筆動機
IBM CloudのWebポータル（https://cloud.ibm.com/) では、他のクラウドサービスと同様に、利用する各サービスの利用料金を見積もる計算ツールが提供されています。ただ、Db2 on Cloudについてはこの計算ツールが使いづらく、利用料金の見積もりが非常に困難になっています。私自身も見積もろうとした際、見積もり方が全く分からずに苦労しました。そのため、この困難さを明らかにし、Db2 on Cloudを利用コストを正しく見積もるためのコツをご提供したいというのがこの記事の執筆動機となります。

# IBM CloudのDb2 on Cloudカタログ内の見積もりツールの使い方（考え方）
まず、Db2 on Cloudの利用料金の構成を確認したいと思います。Db2 on Cloudの[カタログページ](https://cloud.ibm.com/catalog/services/db2)にアクセスすると、「Standard」と「Enterprise」という2つのプラン（リージョンによっては無料で利用可能な「Lite」プランもあり）があります。

例えばStandardプランを見てみると、料金の部分が以下のスクショのように表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/eb9ee6e3-fc19-d022-d444-e9e1bdc335a7.png)

計算ツールを使いこなすには、まずは上記の料金を構成する各要素を理解することが重要になります。

| 項目名 | 内容 |
|:-|:-|
| Instance-Hour  | Db2 on Cloudの1インスタンスあたりにかかる1時間あたりの料金 |
| Gigabyte-Hours  | Db2 on Cloudが利用するディスク1GBあたりにかかる1時間あたりの料金  |
| Virtual Processor Core-Hour  | Db2 on Cloudの**追加**CPUコア1つあたりにかかる1時間あたりの料金  |
| BACKUP_GIGABYTE_HOURS  | バックアップディスク1GBあたりにかかる1時間あたりの料金  |
| SERVICEENDPOINT_INSTANCE_HOURS  | プライベートアクセスで利用するサービスエンドポイント1つあたりにかかる1時間あたりの料金  |

これを踏まえたうえで、Db2 on Cloudの料金計算ツールを使ってみます。計算ツールはカタログページの右下の「見積もりに追加」ボタンを押すと表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/250b1249-a596-3c41-d39a-72e609fae9a6.png)


料金計算ツールの見た目は以下になります。
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/1695d53d-dbfd-d397-7cd8-080c0f05cf67.png">

通常、DBサービスの料金見積もりを行う際は、インスタンスの数、CPU、メモリ、ディスクサイズなどを指定することで行いますが、この料金計算ツールは先ほどの料金表の項目の値をそのまま入力する形式となっており、非常に分かりづらくなっています。

例えば、以下のような構成を取る場合、それぞれにどのような値を入力して計算すればよいでしょうか。

- HA構成 ： あり
- 4 vCPU
- ディスク ： 1000GB
- バックアップディスク ： 3000GB
- プライベート接続 ： あり

以下では、上記の構成を対象として、1ヶ月の利用料金を見積もるために、計算ツールにそれぞれどのような値を入力すればよいかを説明します。

## Instance-Hour
この項目は、インスタンス数 x 1ヶ月の時間を入力します。1ヶ月の時間は月によって異なりますが、1年のトータル時間を12ヶ月で割って、365日 x 24時間 / 12ヶ月 = 730時間で計算することにします。

あとはインスタンス数をかけることになります。HA構成なしであれば1インスタンスです。HA構成ありの場合、3つのAZに分散配置されるため3インスタンスになります。

上記の構成はHA構成ありにしているため、3(HA構成のため) x 730 = 2,190 を入力することになります。


## Gigabyte-Hours
この項目は、DBのディスクサイズ（GB) x 1ヶ月の時間を入力します。インスタンスはデフォルトで20GBを持つため、1000GBのディスクであれば、(1000-20) x 730 = 715,400 を入力します。注意が必要なのは、インスタンスがそれぞれディスクを持つため、HA構成の場合はさらに3をかける必要があるということです。

上記の構成の場合は、(1000(GB) - 20(GB)) x 3(HA構成のため) x 730 = 2,146,200 を入力します。

## Virtual Processor Core-Hour
この項目は、インスタンスに**追加する** vCPU数 x 1ヶ月の時間を指定します。インスタンスはデフォルトで2 vCPUを持つため、合計4 vCPUとする場合は 2 vCPUを追加します。また、インスタンスそれぞれにvCPUを追加するため、HA構成の場合はさらに3をかける必要があります。

上記の構成の場合は、2(追加のvCPU) x 3(HA構成のため) x 730 = 4,380 を入力します。

## BACKUP_GIGABYTE_HOURS
この項目は、バックアップのディスクサイズ(GB) x 1ヶ月の時間を入力します。デフォルトで100GB分の無料枠があるため、(実際のバックアップディスクサイズ(GB) - 100(GB) ) x 1ヶ月の時間となります。この項目はHA構成は関係が無い項目です。

上記の構成の場合は、(3000(GB) - 100(GB)) x 730 = 2,117,000 を入力します。

## SERVICEENDPOINT_INSTANCE_HOURS
この項目は、インスタンス数 x 1ヶ月の時間を入力します。インスタンス数として、HA構成なしの場合は1、HA構成ありの場合は3を指定します。

上記の構成の場合は、3(HA構成のため) x 730 = 2,190　を入力します。

## 計算ツール利用のポイント
各項目に共通する計算ツール利用のポイントは以下となります。

- ディスクサイズやvCPU数などを入力するのではなく、1ヶ月あたりの利用時間を掛け合わせた数値を入力する
- HA構成の場合は（バックアップディスクを除き）3倍する
- インスタンスごとに、2 vCPU、20GBディスクがデフォルトで備わっている（計算ツールではこれを差し引いた値を入力する）
- バックアップディスクは100GBが無料枠として備わっている（計算ツールではこれを差し引いた値を入力する）

以上を踏まえて計算ツールを利用すれば正しい結果が得られます。