オブジェクト・ストレージの課金や無償範囲ってどう計算されているの？

OCIでは多くのサービスで無償範囲が設定されています。たとえばオブジェクト・ストレージでは、トライアル環境ではなく有償環境においても、各ストレージ階層ごとに10GBが無償範囲と書かれていたりします。これが具体的にどういう意味かを紐解いていきたいと思います。

## Oracle Cloud InfrastructureのFree Tierとは

OCIにて無料でサービスが利用できる仕組みは「Oracle Cloud Infrastructure Free Tier」と総称され、製品ドキュメントでは以下のページに記載されています。

- https://docs.oracle.com/ja-jp/iaas/Content/FreeTier/freetier.htm

- https://docs.oracle.com/ja-jp/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm

Free Tierの中には、

- トライアル
- Always Free

の二種類があります。トライアルでは一定の期間内で一定の金額を上限として無償でOCIを試せる仕組みです。

Always Freeはその名の通り「いつでも無料」なので、トライアルが終了した後や有償環境においても無料で利用できるサービスのことを指しています。

いろいろな種類がありますが、今日は特にこのAlways Freeの中の「月xxxまでは無償」という項目に関連して考えていきます。



## 例えばこんな疑問

Free Tierの説明の中で、「オブジェクト・ストレージが月xxxまで無償」と書かれていたりしますが、これはどういう意味でしょうか。
たとえば、100GBのオブジェクトを1時間だけ配置して削除した場合は無償範囲を超えてしまうのか、もしくは無償範囲内に収まるのか？というようなご質問をいただくことがあります。

また、同じサブスクリプションの中でもシステムごとに細かくコストを分けて管理したいような場合は、そのサブスクリプション内での無償範囲をどう考えたらよいのかが気になるケースもあります。



## まず理解する必要があるのは価格メトリック

無償範囲を考えるうえでは、まずその課金項目のメトリックを理解する必要があります。特にストレージのメトリックは、OCI上に格納されている **「容量」** と **「時間」** の2つの要素がからむため、少し難しく感じられることもあります。

各課金項目のメトリックやその単価については公開されている価格表に記載されています。翻訳上の認識齟齬を避けるため、ここでは英語表示で見ていきます。

- OCI Price List　https://www.oracle.com/cloud/price-list/
- オブジェクト・ストレージのStandard（標準層）の容量は、現在 **JPY ￥3.9525 の単価**設定であることが分かります。また、この**単価のメトリック（単位）は「Gigabyte storage capacity per month」** となっていることが分かります。

![image-20241203103751143.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/db339680-f8c7-f6f4-47ce-c009838353ed.png)



## **「Gigabyte storage capacity per month」** とは？

ストレージ系の課金項目ではこの「Gigabyte Storage Capacity per month」のようなメトリックがよく出てきます。これは**1GBを1ヵ月使った場合の価格**を単価として定めているという意味です。つまり1GBを1ヵ月置きっぱなしていた場合の金額になります。

ですが、OCIでの課金計算は単価設定の期間よりも細かい粒度で行われていきます。つまり **メトリックがper monthだからといって、必ずしも1か月分のコストが最低料金というわけではありません。** （そのような最低利用期間を設けているサービスもありますが、その場合は別途記載されています。）

コストは1時間おきに課金計算されています。**たとえば1GBの容量を1時間だけ使えば、1 GB Storage capacity per month の単価の744分の1の費用だけが発生する**ことになります。
コスト分析やコストレポートを見ると、一時間おきでコストや使用量データが取得されていることが分かります。


## オブジェクト・ストレージの無償分を理解する

価格設定のメトリックがわかったところでオブジェクト・ストレージの無償範囲を確認していきましょう。

冒頭にご紹介したドキュメントを確認すると、有償環境の場合は10GBの標準層が無償になると読み取れます。

・https://docs.oracle.com/ja-jp/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm

![image-20241203105358218.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/37a023e9-012e-c46c-a5b9-c136d6985196.png)


ここでポイントになるのは、「10 GBの標準層データ」と言っているのは特定の実オブジェクトや物理的な容量を意味しているのではなく、正確には、 **「月の最初の10 Gigabyte Storage Capacity per month」分が無償** であるという点です。単位が大事です。
実際に使用しているストレージ容量が何GBであっても、10 Gigabyte Storage Capacity per month を超えない範囲であれば無償、10 Gigabyte Storage Capacity per monthを超えたら有償になります。

一見すると同義のようにみえますが、容量90 GB分のコストが毎時課金されていくというわけではありません。1ヵ月の期間ずっと同じ容量を使い続けている場合は月の合計金額としては違いはありませんが、そうではない場合は違いが出てきます。



例を挙げてみます。以下は簡易的に日次での課金を書いたイメージ図です。実際には日単位ではなく1時間ごとに計算されているのでもっと粒度は細かくなりますが、イメージしやすくするために簡易的に日次で表現しています。

- たとえば合計100GBのサイズのオブジェクトを一か月間置いておいた場合

```
1日 100 GB 　無償
2日 100 GB 　無償
3日 100 GB 　無償
4日 100 GB 　←ここから有償で計算される
5日 100 GB 　有償
6日 100 GB 　有償
・・・
31日 100 GB 　有償
-----------------------
最終的な月の合計金額としては、 90GB Storage capacity per month 分の金額となる。
```

- 一方で、月の途中で無償範囲内でオブジェクトを削除した場合


```
1日 100 GB 　無償
2日 100 GB 　無償
3日 100 GB 　無償
4日 ←ここで100 GB を削除
5日 
6日 
・・・
31日
-----------------------
最終的な月の合計金額としては、 0 GB Storage capacity per month 分の金額となる。
```



ということで、オブジェクト・ストレージの課金と無償範囲を理解する上では、価格のメトリックをベースに考える必要があります。

ただし、オブジェクトストレージの標準層の10GB storage capacity per monthは金額にすれば約39円なので、有償環境のトータルのコストからみるとあまり気にしないことが多いかと思います。ただし、価格メトリックや課金計算については他のサービスでも応用できるので理解しておくと便利かと思います。

<BR>



また、実際の環境でどのように課金計算されているかを確認したい場合は、コスト分析やコストレポートの機能を使うと、各コンパートメントやリソースごとの使用量やコスト、また、課金の明細データを確認することも可能です。

コスト分析やコストおよび使用状況レポートについては以下の資料もご参照ください。

- Speakerdeck資料：OCIコスト管理
  - https://speakerdeck.com/ocise/oci-kosutoguan-li