はじめに
私事ですが、OCI Architect Associateに最近受かりました。
https://mylearn.oracle.com/ou/learning-path/japanese-become-an-oci-architect-associate-2024-/140905
ケースバイケースではありますが、OCIを使うメリットにリソースを使うための料金が安いことが挙げられます。
今回は簡単な構成を例に挙げ、どの程度OCIの料金がAWSと比べて安くなるか調べてみます。
AWS例: EC2 2台,ALB
構成
No | リソース | 役割 |
---|---|---|
1 | インターネットゲートウェイ | インターネットゲートウェイ |
2 | Application Load Balancer(ALB) | ロードバランサー |
3 | EC2 | 踏み台サーバー |
4 | NATゲートウェイ | NATゲートウェイ |
5 | EC2 | アプリサーバー |
個別料金
インターネットゲートウェイ
無料です
ALB
以下、URLより、料金の計算方法を引用します
https://aws.amazon.com/jp/elasticloadbalancing/pricing/
Application Load Balancer が実行される時間に対して 1 時間単位または 1 時間未満で、また時間ごとのロードバランサーキャパシティーユニット (LCU) 使用量で課金されます。
LCU は Application Load Balancer がトラフィックを処理するディメンションを測定します (1 時間あたりの平均)。以下の 4 つのディメンションを測定します。
・新しい接続: 1 秒あたりの新たに確立された接続の数。通常、接続ごとに多くのリクエストが送信されます。
・アクティブ接続: 1 分あたりのアクティブな接続の数。
・処理タイプ: ロードバランサーによって処理された HTTP(S) リクエストと応答のバイト数 (GB 単位)。
・ルール評価: ロードバランサーにより処理されたルールの数とリクエストレートの積。最初に処理される 10 個のルールは無料 (ルール評価 = リクエスト率 * (処理されたルールの数 - 無料分の 10 個のルール))。
使用量が最も高いディメンションにのみ請求されます。1 つの LCU には次のものが含まれます。
今回は処理タイプのLCUが最も高いディメンションであるとします。
リクエストと応答の合計処理バイト数は3MB/sとします。
その場合、
1時間当たりの合計処理バイト数=3MB/s * 3600s=10,800MB/h=10.8GB/h
1時間当たりのLCU=10.8
また、ALB自体の料金を追加して、
1時間当たりの料金=$0.025 + 10.8LCU * $0.008/LCU=$0.1114/h
1か月当たりの料金=$0.1114/h * 24h * 30d = $80.208
踏み台サーバー
他マネージドサービスを使うことで無料とすることもできますが、一応計算しておきます。
インスタンスタイプはt2.microとします。
EC2の料金=$0.0152/h * 24h * 30d = $10.944
また、EC2のブートボリュームとなるEBSが必要となります。
今回はgp3を使用し、IOPSとベースラインパフォーマンスの料金はかからないものとします。
EBSの容量は30GBとします。
https://aws.amazon.com/jp/ebs/pricing/
EBSの料金=$0.096/GB * 30GB = $2.88
踏み台サーバーには、アクセスしやすいようパブリックIPを使用します。
パブリックIPの料金=$0.005/h * 24h * 30d = $3.6
踏み台サーバーにかかる合計料金は$17.424です。
NATゲートウェイ
NATゲートウェイ自体の料金と、データ処理料金がかかります。
https://aws.amazon.com/jp/vpc/pricing/
1か月のデータ処理量は10GBとします。
NATゲートウェイ自体の料金=$0.062/h * 24h * 30d = $44.64
データ処理にかかる料金=$0.062/GB * 10GB=$0.62
NATゲートウェイの合計料金=$44.64 + $0.62=$45.26
アプリサーバー
インスタンスタイプはt2.largeとします。
EC2の料金=$0.1216/h * 24h * 30d = $875.52
EBSの容量は30GBとします。
EBSの料金=$0.096/GB * 30GB = $2.88
踏み台サーバーにかかる合計料金は$878.4です。
データ転送量
インバウンドは無料です。
アウトバウンドはバイト数で課金されます。アウトバウンドの料金はインターネットへの送信(Outbound)と同一リージョン内での異なるAZへの送信(Intra-Region)で料金が分かれています。
今回は、アプリサーバー→ALBなので、Intra-Regionの料金がかかります。
送信バイト数は今回はALBで処理しているリクエストと応答のバイト数の半分とします。
1か月当たりのバイト数=(10.8GB/h * 24h * 30d) / 2=3,888GB
1か月当たりの料金=3,888GB * $0.01/GB * 2=$77.76
1か月当たりの料金は、AZにおけるインバウンドとアウトバウンドを合計しています。
合計料金
No | 項目 | 料金 USD | 割合 |
---|---|---|---|
1 | ALB | 80.208 | 7.3% |
2 | 踏み台サーバー | 17.424 | 1.6% |
3 | NATゲートウェイ | 45.26 | 4.1% |
4 | アプリサーバー | 878.4 | 79.9% |
5 | データ転送量 | 77.76 | 7.1% |
6 | 合計 | 1099.052 | 100% |
OCI例: インスタンス 2台,ロードバランサー
構成
No | リソース | 役割 |
---|---|---|
1 | インターネットゲートウェイ | インターネットゲートウェイ |
2 | ロードバランサー | ロードバランサー |
3 | インスタンス | 踏み台サーバー |
4 | NATゲートウェイ | NATゲートウェイ |
5 | インスタンス | アプリサーバー |
そもそもAWSとNATゲートウェイの構成が違いますね。主なリソースの数は変えていませんが、OCIではNATゲートウェイの扱いが異なります。
OCIでは、NATゲートウェイをパブリックサブネットに配置する必要はなく、VCN(AWSで言うVPC)とルート表に紐づいているだけで使うことができます。(NATゲートウェイにパブリックサブネットは必須ではありません)
インスタンスの料金については、ひとまずAWSの例と比較してCPUとメモリを同等に計算します
個別料金
インターネットゲートウェイ
無料です
ロードバランサー
以下URLより、ロードバランサーの料金を引用します
https://www.oracle.com/jp/cloud/networking/pricing/
ロードバランサー自体の料金=$0.0113/h
1時間当たりの帯域幅の料金=$0.0001/Mbps
※処理されたデータ量では課金されず、プロビジョニングされた内容によって課金されます。
今回は10Mbpsとしてプロビジョニングするとして、1か月の料金を計算します。
ロードバランサー自体の料金=$0.0113/h * 24h * 30d = $8.136
帯域幅の料金=$0.0001/Mbps * 10Mbps * 24h * 30d = $0.72
1か月当たりの合計料金 = $8.136 + $0.72 = $8.856
※ネットワークロードバランサーを使えば上記の料金は無料になります
OCIのロードバランサーがレイヤー4,7で動作するのに対して、ネットワークロードバランサーはL3,4で動作します(名前がややこしいですね。。)。今回はALB相当のサービスとして、OCIのロードバランサーを使用します。
https://docs.oracle.com/ja-jp/iaas/Content/NetworkLoadBalancer/overview.htm
踏み台サーバー
VM.Standard.A1.Flexを使用します。
Standardのシェイプは標準的なものになります。A1はArmベースであり、AMDベースよりも料金が安くなります。
また、Flexはフレキシブルシェイプであり、以下の特徴を持ちます。
フレキシブル・シェイプは、VMの起動時またはサイズ変更時にOCPU数およびメモリー容量をカスタマイズできるシェイプです。フレキシブル・シェイプを使用してVMインスタンスを作成する場合、インスタンスで実行するワークロードに必要なOCPU数およびメモリー容量を選択します。ネットワーク帯域幅およびVNICの数は、OCPUの数に比例してスケーリングされます。この柔軟性により、ワークロードに一致するVMを構築できるため、パフォーマンスを最適化し、コストを最小限に抑えることができます。
今回は1 OCPU(=1 vCPU), メモリ1GBとします。
OCPUの課金とメモリの課金は別々に行われます。そのため、OCPU単価とメモリ単価が別々に設定されています。
https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm
https://www.oracle.com/jp/cloud/compute/pricing/
1か月当たりのA1のOCPUの料金=$0.01/OCPU * 1OCPU * 24h * 30d=$7.2
1か月当たりのA1のメモリの料金=$0.0015/GB * 1GB * 24h * 30d=$1.08
インスタンスの料金=$7.2 + $1.08 = $8.28
インスタンスにはブートボリュームが必要となります。
今回はVPU=10とします。ストレージ容量は50GB(最小値)とします。
https://www.oracle.com/jp/cloud/storage/block-volumes/pricing/
コスト試算ツールからコストを算出します。
https://www.oracle.com/jp/cloud/costestimator.html
1か月当たりのブロックボリュームの料金=$2.13
踏み台サーバーには、アクセスしやすいよう予約済パブリックIPを使用しますが、無料です。
踏み台サーバーにかかる合計料金は$10.41です。
※A1インスタンスとブロックボリュームはAlways Freeリソースに該当します。
https://docs.oracle.com/ja-jp/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm
すべてのOracle Cloud Infrastructureアカウント(無料か有料かに関係なく)には、アカウントの有効期間中、テナンシのホーム・リージョンに無料で使用できるリソースのセットがあります。
つまり、指定の範囲内の利用であれば無料で使えます。ただ、すでにリソースを大量に使っている場合、Always Freeを使い切っていることも多いです
NATゲートウェイ
無料です。
アプリサーバー
VM.Standard.E4.Flexを使用します。
今回は1 OCPU(=2 vCPU), メモリ8GBとします。
1か月当たりのE4のOCPUの料金=$0.025/OCPU * 1OCPU * 24h * 30d=$18
1か月当たりのE4のメモリの料金=$0.0015/GB * 8GB * 24h * 30d=$8.64
インスタンスの料金=$18 + $8.64 = $26.64
ストレージ容量は50GB(最小値)とします。
1か月当たりのブロックボリュームの料金=$2.13
踏み台サーバーにかかる合計料金は$28.77です。
データ転送量
インバウンドは無料です。
アウトバウンドは最初の10TBは無料です。10TB以上になると、送信元の地域により料金が異なります。
https://www.oracle.com/jp/cloud/networking/pricing/
合計料金
No | 項目 | 料金 USD | 割合 |
---|---|---|---|
1 | ロードバランサー | 8.856 | 18.4% |
2 | 踏み台サーバー | 10.41 | 21.7% |
3 | NATゲートウェイ | 0 | 0% |
4 | アプリサーバー | 28.77 | 59.9% |
5 | データ転送量 | 0 | 0% |
6 | 合計 | 48.036 | 100% |
料金の比較
No | 項目 | OCIの料金 USD | AWSの料金 USD | OCI - AWS USD |
---|---|---|---|---|
1 | ロードバランサー | 8.856 | 80.208 | -71.352 |
2 | 踏み台サーバー | 10.41 | 17.424 | -7.014 |
3 | NATゲートウェイ | 0 | 45.26 | -45.26 |
4 | アプリサーバー | 28.77 | 878.4 | -849.63 |
5 | データ転送量 | 0 | 77.76 | -77.76 |
6 | 合計 | 48.036 | 1099.052 | -1051.016 |
OCIの方が安いですね!
おわりに
両者の課金方法を調べてみて、AWSはデータの使用量に応じて課金されるのに対し、OCIはプロビジョニングされたリソースに応じて課金されているように感じました。
プロビジョニングされた量とすると、使われていないリソースの課金が発生するので高くなるかと思っていましたが、OCIは無料で使えるものが多く単価も安いなと感じました。
これからも勉強します。