GAになったElastic Cloud Serverless の料金を測ってみた

# はじめに
今月12月についにGAリリースとなったElastic Cloud Serverlessはどのくらいの料金なのか？
Pricingページは以下にありますが、今回実際にデータを投入して計測してみました。
https://www.elastic.co/pricing/serverless-search
https://www.elastic.co/pricing/serverless-observability
https://www.elastic.co/pricing/serverless-security

# Elastic Cloud Serverless - Observablityの料金測定
### 1. 2024/12/09 23:40頃にログデータを投入
結果のIndexのデータはこの通りでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/afeef5a9-7314-ecc5-850f-4a68f9e8c4ed.png)
表示されているStorage sizeの合計: 0.4009 GB
計算方法：185.06+56.63+47+35.43+29.79+19.89+14.17+11.78+10.79 = 410.54 MB = 0.4009 GB (410.54/1024)

### 2. Billingページを確認: 2024/12/10 00:28頃
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/c4ea0c37-bcfe-915c-11e4-2bc073872b0c.png)
Ingest行のQuantityがIndex Managementの合計の0.4009 GB と一致しています。
金額にすると、0.4009 GBs * 0.5000 per GB = 0.2005 ECU ($0.2005つまり30円くらい)

### 3. Billingページを確認: 2024/12/10 09:57時点
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/b3df9d4f-99c4-fe36-02d6-e3a946e7870c.png)
- Observabilityの料金レベルは基本的に1つであり、すべてのObservability機能が使えます。（Machine LearningやAI Assistant含む）
- Ingestは2つの測定間で変わらず0.4009 GBのまま（データ投入なければここは増えない）
- Search AI Lakeの行。データ投入から（大体）10時間くらい経過しているので、それを月の時間数で割ってみると、大体数値が表示されている0.0050 GBsと一致しました。
    - Quantity期待値: 0.4009 GBs * 10hr/730hr = 0.00549 GBs
    - Quantity表示値：0.0050 GBs　（概ね合う）
    - Search AI Lake行: この10時間分のデータ保持の料金
    - 0.0050GBs * $$0.04 GB単価 -> 0.0002 ECU ($0.0002。日本円0.03円くらい）
    - 1月保持しているとしたら、0.4009 GBs * 0.04 ECU per GB = 0.016036 ECU (2.4円くらい）


# Elastic Cloud Serverless - Securityの料金測定
### 1. 2024/12/10 00:50頃にログを投入
Observabilityの時と全く同じデータを投入しました。Observabilityよりも内部のIndexで数KB余分にありますが、それ以外は同じStorage Sizeを示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/923ac8c0-e585-3ef2-043d-eb162f2f11b5.png)

### 2. Billingページ確認: 2024/12/10 09:57頃
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/2604eb0f-5260-44d0-8406-f7587ba008d5.png)
- Securityの方は、使える機能レベルで料金体系がEssentialsとCompleteで分かれており、ここは高い方のCompleteが有効になっていました。
- Ingest の行：0.4009 GBs。これはObservabilityの時と全く同じ値。単価が少しSecurityの方が高く、Observabilityが0.2005 ECUでしたが、Securityは0.2406 ECU ($0.2406, つまり36円くらい）
- Search AI Lakeの行：データ投入から（大体）9時間くらい経過している
    - Quantity期待値: 0.4009 * 9hr/730hr = 0.0049.. GBs
    - Quantity表示値：0.0044 GBs　（概ね合う）
    - この9時間分のデータ保持の料金: 0.0002 ECU ( $0.0002、0.03円くらい）
    - 1月保持しているとしたら、0.4009 GBs * 0.04 ECU per GB = 0.016036 ECU (2.4円くらい）

# Elasticsearch (検索用プロジェクトのこと）

### 1. 2024/12/10 01:10頃に同じデータを投入。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/ea1f9800-0031-fb86-ef21-e5d3cbfdf4aa.png)
表示されているStorage sizeの合計: 0.4009 GB
計算方法：30.98+13.29+6.49+4+2.81+1.77+1.67+90563/1024+85109/1024+642/1024 = 233.191640625 MB = 0.227.. GB

### 2. Billingページの確認：2024/12/10 09:56頃
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/d16a961a-d006-8d51-ca9d-b4e06693eba1.png)

### 3. Billingページの確認：2024/12/10 13:33頃
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/aa4c8c9c-fd74-5e6d-009e-82f37e1dc87e.png)

- サーチはPricingの軸が異なる。
- ログ（ドキュメント）投入量ではなく、Ingest VCU。[Pricingページ](https://www.elastic.co/pricing/serverless-search)のVCUの定義がOne VCU contains 1GB of RAM and corresponding compute resources. とのこと。
- Ingest VCU: 2つの測定間では共に2.3333 VCUで変わらず、Ingest VCUはデータ投入しなければ増えないようです。今回は金額としては0.3267 ECU ( $0.3267、49円くらい）
- Search VCU: 2つの測定間で若干増えているが、これはおそらく内部的に発生したわずかな検索の影響か何かか？金額は $0.0751、つまり11.2円くらい
- Retained: ここには書かれていないが、Index Managementから確認されたデータ量の0.227 GBが保存されているデータと仮定し、現在12時間くらい保存されているので、0.227 * 12hr/730hr = 0.00373.. GBsと計算できる。しかしBilling画面の表示はこれより少ない0.0010 GBsなので、保持時間が計測上は12時間未満なのかもしれない。この辺は今後調査。現状ここは0円。

# 全く何も操作しなかった2日目の料金の状況
全く何も操作をしていない12/10の1日に絞り込んだ金額が以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/05d74870-9a93-2947-c91f-93bfc2354684.png)

Observability: 0.005 ECU ( $0.005、0.75円くらい）
Security: 0.005 ECU ( $0.005、0.75円くらい）
Elasticsearch: 0.1153 ECU ( $0.1153、17円くらい）

この1日の金額を元に、仮に1ヶ月(30日）このServerlessプロジェクトを放置していたらおおよそ以下となります。
Observability: 0.150 ECU ( $0.150、22.5円くらい）
Security: 0.150 ECU ( $0.150、22.5円くらい）
Elasticsearch: 3.459 ECU ( $3.459、519円くらい）

# その後、数日経過した時の状況
データを置いているだけの分には、少額かかり続けるだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109197/a4bef0dd-1570-e37e-a6d8-89c53a6b6497.png)
**注意:  ObservabilityとSecurityのデータ保持にかかる料金は現在プロモーション期間のため、除外されています。プロモーション終了後は少額発生します。**


# おまけ：投入のパフォーマンス
今回はRallyを使ってログをそれぞれ投入しているので、Rallyの統計結果があります。
Mean Throughputだけで比較すると、３つで違いはそれほどみられませんでした。
- Observability bulk-index: 2465.72
- Security bulk-index: 2296.31
- Search bulk-index: 2342.57

### Observability
```
2024-12-09 14:46:14,268 ActorAddr-(T|:43959)/PID:3916 esrally.reporter INFO |                        Metric |                                   Task |     Value |   Unit |
|------------------------------:|---------------------------------------:|----------:|-------:|
|                Min Throughput |                       insert-pipelines |     2.04  |  ops/s |
|               Mean Throughput |                       insert-pipelines |     2.04  |  ops/s |
|             Median Throughput |                       insert-pipelines |     2.04  |  ops/s |
|                Max Throughput |                       insert-pipelines |     2.04  |  ops/s |
|      100th percentile latency |                       insert-pipelines |  7306.85  |     ms |
| 100th percentile service time |                       insert-pipelines |  7306.85  |     ms |
|                    error rate |                       insert-pipelines |     0     |      % |
|                Min Throughput | validate-package-template-installation |     1.14  |  ops/s |
|               Mean Throughput | validate-package-template-installation |     1.14  |  ops/s |
|             Median Throughput | validate-package-template-installation |     1.14  |  ops/s |
|                Max Throughput | validate-package-template-installation |     1.14  |  ops/s |
|      100th percentile latency | validate-package-template-installation |   876.151 |     ms |
| 100th percentile service time | validate-package-template-installation |   876.151 |     ms |
|                    error rate | validate-package-template-installation |     0     |      % |
|                Min Throughput |        update-custom-package-templates |     2.17  |  ops/s |
|               Mean Throughput |        update-custom-package-templates |     2.17  |  ops/s |
|             Median Throughput |        update-custom-package-templates |     2.17  |  ops/s |
|                Max Throughput |        update-custom-package-templates |     2.17  |  ops/s |
|      100th percentile latency |        update-custom-package-templates |  5536.01  |     ms |
| 100th percentile service time |        update-custom-package-templates |  5536.01  |     ms |
|                    error rate |        update-custom-package-templates |     0     |      % |
|                Min Throughput |                             bulk-index |   458.92  | docs/s |
|               Mean Throughput |                             bulk-index |  2465.72  | docs/s |
|             Median Throughput |                             bulk-index |  2645.33  | docs/s |
|                Max Throughput |                             bulk-index |  3139.56  | docs/s |
|       50th percentile latency |                             bulk-index |  3895.14  |     ms |
|       90th percentile latency |                             bulk-index |  6488.42  |     ms |
|      100th percentile latency |                             bulk-index | 10785.4   |     ms |
|  50th percentile service time |                             bulk-index |  3895.14  |     ms |
|  90th percentile service time |                             bulk-index |  6488.42  |     ms |
| 100th percentile service time |                             bulk-index | 10785.4   |     ms |
|                    error rate |                             bulk-index |     0     |      % |

```

### Security
 ```
 2024-12-09 15:50:30,903 ActorAddr-(T|:33389)/PID:4395 esrally.reporter INFO |                        Metric |           
                        Task |     Value |   Unit |
|------------------------------:|---------------------------------------:|----------:|-------:|
|                Min Throughput |                       insert-pipelines |     2.27  |  ops/s |
|               Mean Throughput |                       insert-pipelines |     2.27  |  ops/s |
|             Median Throughput |                       insert-pipelines |     2.27  |  ops/s |
|                Max Throughput |                       insert-pipelines |     2.27  |  ops/s |
|      100th percentile latency |                       insert-pipelines |  6564.03  |     ms |
| 100th percentile service time |                       insert-pipelines |  6564.03  |     ms |
|                    error rate |                       insert-pipelines |     0     |      % |
|                Min Throughput | validate-package-template-installation |     1.04  |  ops/s |
|               Mean Throughput | validate-package-template-installation |     1.04  |  ops/s |
|             Median Throughput | validate-package-template-installation |     1.04  |  ops/s |
|                Max Throughput | validate-package-template-installation |     1.04  |  ops/s |
|      100th percentile latency | validate-package-template-installation |   957.445 |     ms |
| 100th percentile service time | validate-package-template-installation |   957.445 |     ms |
|                    error rate | validate-package-template-installation |     0     |      % |
|                Min Throughput |        update-custom-package-templates |     2.08  |  ops/s |
|               Mean Throughput |        update-custom-package-templates |     2.08  |  ops/s |
|             Median Throughput |        update-custom-package-templates |     2.08  |  ops/s |
|                Max Throughput |        update-custom-package-templates |     2.08  |  ops/s |
|      100th percentile latency |        update-custom-package-templates |  5756.25  |     ms |
| 100th percentile service time |        update-custom-package-templates |  5756.25  |     ms |
|                    error rate |        update-custom-package-templates |     0     |      % |
|                Min Throughput |                             bulk-index |   453.89  | docs/s |
|               Mean Throughput |                             bulk-index |  2296.31  | docs/s |
|             Median Throughput |                             bulk-index |  2512.78  | docs/s |
|                Max Throughput |                             bulk-index |  2895.94  | docs/s |
|       50th percentile latency |                             bulk-index |  4112.97  |     ms |
|       90th percentile latency |                             bulk-index |  8182.64  |     ms |
|      100th percentile latency |                             bulk-index | 11173.9   |     ms |
|  50th percentile service time |                             bulk-index |  4112.97  |     ms |
|  90th percentile service time |                             bulk-index |  8182.64  |     ms |
| 100th percentile service time |                             bulk-index | 11173.9   |     ms |
|                    error rate |                             bulk-index |     0     |      % |
```


### Search

```
2024-12-09 16:08:06,702 ActorAddr-(T|:35495)/PID:4561 esrally.reporter INFO |                        Metric |                                   Task |     Value |   Unit |
|------------------------------:|---------------------------------------:|----------:|-------:|
|                Min Throughput |                       insert-pipelines |     1.98  |  ops/s |
|               Mean Throughput |                       insert-pipelines |     1.98  |  ops/s |
|             Median Throughput |                       insert-pipelines |     1.98  |  ops/s |
|                Max Throughput |                       insert-pipelines |     1.98  |  ops/s |
|      100th percentile latency |                       insert-pipelines |  7527.79  |     ms |
| 100th percentile service time |                       insert-pipelines |  7527.79  |     ms |
|                    error rate |                       insert-pipelines |     0     |      % |
|                Min Throughput | validate-package-template-installation |     1.17  |  ops/s |
|               Mean Throughput | validate-package-template-installation |     1.17  |  ops/s |
|             Median Throughput | validate-package-template-installation |     1.17  |  ops/s |
|                Max Throughput | validate-package-template-installation |     1.17  |  ops/s |
|      100th percentile latency | validate-package-template-installation |   851.888 |     ms |
| 100th percentile service time | validate-package-template-installation |   851.888 |     ms |
|                    error rate | validate-package-template-installation |     0     |      % |
|                Min Throughput |        update-custom-package-templates |     2.43  |  ops/s |
|               Mean Throughput |        update-custom-package-templates |     2.43  |  ops/s |
|             Median Throughput |        update-custom-package-templates |     2.43  |  ops/s |
|                Max Throughput |        update-custom-package-templates |     2.43  |  ops/s |
|      100th percentile latency |        update-custom-package-templates |  4934.01  |     ms |
| 100th percentile service time |        update-custom-package-templates |  4934.01  |     ms |
|                    error rate |        update-custom-package-templates |     0     |      % |
|                Min Throughput |                             bulk-index |   440.07  | docs/s |
|               Mean Throughput |                             bulk-index |  2342.57  | docs/s |
|             Median Throughput |                             bulk-index |  2518.03  | docs/s |
|                Max Throughput |                             bulk-index |  2979.37  | docs/s |
|       50th percentile latency |                             bulk-index |  4113.37  |     ms |
|       90th percentile latency |                             bulk-index |  7248     |     ms |
|      100th percentile latency |                             bulk-index | 11192.4   |     ms |
|  50th percentile service time |                             bulk-index |  4113.37  |     ms |
|  90th percentile service time |                             bulk-index |  7248     |     ms |
| 100th percentile service time |                             bulk-index | 11192.4   |     ms |
|                    error rate |                             bulk-index |     0     |      % |
```

# まとめ
400MB程度のデータを投入して半日程度経過した時点でのコスト（$1=150円とする）
注意：データ入れただけです。最小限のコストと思ってください。操作やオプション次第でこれより増える可能性あります。
- Observavility ... 30円
- Security (Complete版） ... 36円
- Search ... 60円

上記400MBのデータを入れて仮に1ヶ月(30日）このServerlessプロジェクトを放置していたらおおよそ以下となります。
Observability: 0.150 ECU ( $0.150、22.5円くらい）
Security: 0.150 ECU ( $0.150、22.5円くらい）
Elasticsearch: 3.459 ECU ( $3.459、519円くらい）

簡単な検証でElasticを試す場合は、従来のElastic Cloud HostedよりもこのServerlessの方がお得になる可能性が高いです。
データを大量投入する場合はどちらを使うか検討するべきですが、Elastic Cloud Hostedの方は適切なサイジングをしないと実際の使用量よりも大きなElastic Cloud Hostedのインスタンスを用意することがよくあるので、Serverlessはその辺の無駄がない分、単価だけでは比較できないところがあります。

従来のElastic Cloud (Hosted)で年間契約している場合、そのクレジットをServerlessに使うこともできますし、つまりそれで割引を受けることもできます。