TROCCO®のProfessionalプランを試す

# 概要

:::note info
記載されてある情報は2024/10月時点の情報であり最新プランに情報や詳細な条件についてはヘルプドキュメントをご参照ください。
:::


TROCCO®にはいくかプランがあり、最上位プランであるProfessionalプランに試してみたいと思います。
https://trocco.io/lp/plan.html

# プラン特徴
ProfessionalプランとAdvancedプランの差分を見てみると、大きな差分としてと「同時実行数の上限緩和」「サービス品質保証 (SLA)」「リソース増強機能」の有無です。

## 同時実行数の上限緩和
TROCCO®の機能のうち転送ジョブとデータマートジョブについて、同一アカウントで同時に起動できるジョブ総数の制限がされています。契約のプランによって、ジョブの同時実行数上限の値は異なります。


| Free | Starter | Essential | Advanced | Professional | 
|:-:|:-:|:-:|:-:|:-:|
|  5 |  10 | 20 | 50 | 100* | 

* Professionalプランでは、同時実行数の上限を[緩和](https://documents.trocco.io/docs/professional-plan#%E5%90%8C%E6%99%82%E5%AE%9F%E8%A1%8C%E6%95%B0%E3%81%AE%E4%B8%8A%E9%99%90%E7%B7%A9%E5%92%8C)できます


100同時実行数と一番多く制限値が割り当てられている点と制限値が変更できる点でたくさんのジョブが動かすことを想定しているケース、またはそういう状況下でも待ち時間少なくジョブをさばきたいケースではProfessionalプランが有効そうです。

詳しくは下記をご参照ください。
https://documents.trocco.io/docs/professional-plan#%E5%90%8C%E6%99%82%E5%AE%9F%E8%A1%8C%E6%95%B0%E3%81%AE%E4%B8%8A%E9%99%90%E7%B7%A9%E5%92%8C

## サービス品質保証（SLA）
・TROCCO Webアプリケーション
・TROCCO データ転送

において99.9%の稼働を保証するのはProfessionalプランのみとなります。


詳しくは下記をご参照ください
https://documents.trocco.io/docs/professional-plan#%E5%90%84%E7%A8%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E5%93%81%E8%B3%AA%E4%BF%9D%E8%A8%BCsla


## リソース増強
現在の仕様における転送ジョブの実行するときのリソースは下記の条件で実行されています。（以下通常コネクタ転送と呼びます）
・vCPU: 2.0cpu
・Memory: 6.0GB

例外的なコネクタとして「転送元Amazon S3」、「転送元Box」、「転送元Google Cloud Storage」、「転送元Google Play」、「転送元KARTE Datahub」、「転送元Repro」、「転送元ローカルファイル」があり、これらについては以下の条件で実行されています。（以下例外コネクタ転送と呼びます）
・vCPU: 3.5cpu
・Memory: 15GB

Professionalプランの場合、これらのスペックを変更することが可能です。これにより主にジョブ実行時間の短縮化が期待されます。


こちらの表は通常コネクタ転送における選択可能なオプションです。
| リソースサイズ/スペック名 | vCPUサイズ | Memoryサイズ(Gib) | 処理時間の倍率
|:-:|:-:|:-:|:-:|
| Medium  |  2.0 | 6.0 | 1 |
| Large | 4.0  | 12.0 | 2 |
| XLarge | 6.0  | 18.0 | 3 |

例外コネクタ転送の場合は下が選択可能です。
| リソースサイズ/スペック名 | vCPUサイズ | Memoryサイズ(Gib) | 処理時間の倍率
|:-:|:-:|:-:|:-:|
| CustomSpec  |  3.5 | 15.0 | 1 |
| XLarge | 6.0  | 18.0 | 3 |


処理時間という概念があり、これもプランごとに月あたりで定められた数値があります。スペックを上げることで実行時間を短縮できますが、処理時間で規定の倍率をかけた形で計上されるというロジックとなっています。（実行時間 × スペックに応じた倍率 = 処理時間）


こちらも詳細については下記をご参照ください。

https://documents.trocco.io/docs/professional-plan#%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E5%A2%97%E5%BC%B7%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3


# 比較
ここでは実際にいくつかの転送元先でスペックを上げてみて実行時間の改善され具合を試してみました。

通常コネクタ
| 転送元 | 転送先 |　Medium(デフォルト設定) | Large | XLarge | 転送データ量 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| mysql | bigquery | 00:25:59 | 00:18:49 | 00:16:30 | 約2GB |
| sqlserver | snowflake | 00:31:42 | 00:35:28 | 00:34:20 | 約1.2GB |

- mysql to snowflakeについてはデフォルトからLargeにすることで27%くらい速度が改善されました。デフォルトからXLargeにすることで35%程度速度改善されました。
- sqlserver to snowflakeについては特に改善はされていなさそうです




例外コネクタ
| 転送元 | 転送先 |　CustomSpec(デフォルト設定) | XLarge | 転送データ量 | 改善率|
|:-:|:-:|:-:|:-:|:-:|:-:|
| gcs | s3 | 00:14:02 | 00:09:08 | 約3.4GB | 約35% |
| s3  | snowflake  | 00:55:39 | 00:31:49 | 約54GB | 約42% |
| s3  | bigquery  | 01:46:57 | 01:08:56 | 約54GB | 約35% |
| s3  | gcs  | 00:45:23 | 00:38:21 | 約54GB | 約15% |


## 検証まとめ
概ね改善する傾向にありました！
特に顕著だったのは転送元s3です。スペックを上げることで2倍近いパフォーマンスの改善が見込めました。しかし、一部コネクタについては改善しないケースもあり、銀の弾丸でなさそうです（今回のケースだとsqlserver to snowflake）。

mysqlの場合大きなデータのselect自体主な時間を消費するところのように見えたので、もし大規模なデータを日々転送する場合、差分転送を選択するほうが継続的な処理時間は削減できそうな雰囲気でした。

※これらの数値はデータ量やデータの置かれ方(s3を例にすると単一ファイルで大きなファイル、複数ファイルで配置)などの条件によって処理時間も変わってくると思うのであくまで参考値です


# まとめ
Professionalプランで提供されている機能の紹介とその１つであるリソース増強機能について検証をしてみました。転送元先のコネクタの組み合わせはいくつもあるため、今回ではほんの一部しか取り扱うことが出来ませんでしたが、最大2倍近いの転送のパフォーマンス改善が見込める機能であることがわかりました。もし現在TROCCOを使っていて実行時間を短縮したいケースがある場合試してみる価値はあるかもしれません。