Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NoCodeツールでWebHookからDWHへのデータの転送処理を爆速で実装した話

Yusuke Tamura
December 26, 2022

 NoCodeツールでWebHookからDWHへのデータの転送処理を爆速で実装した話

2022/12/21に行われためぐろLT会での登壇資料になります

https://raksul.connpass.com/event/267974/

Yusuke Tamura

December 26, 2022
Tweet

More Decks by Yusuke Tamura

Other Decks in Technology

Transcript

  1. @ 2022 Novasell, Inc. All Rights Reserved. 自己紹介 GitHub: @tamtam-fitness,

    Twitter: @TamtamFitness たむたむといいます! 今年新卒でラクスル /ノバセルに入りました 💪 社内部活のマッスル部で部長もしています!
  2. @ 2022 Novasell, Inc. All Rights Reserved. 社内のエンジニアの生産性を分析するために、 - ClickUpのWebhookからステータスの更新情報を取得する

    - 取得したデータを最終的にSnowflakeに転送させる         処理を実装することになりました。 Snowflakeへのデータ転送の即時性に関しては求められていないです。 Snowflake…SaaS型のデータウェアハウス ClickUp…タスク管理ツール、スプリント毎にチケットを切り進捗確認をするために使う。
  3. @ 2022 Novasell, Inc. All Rights Reserved. 自前実装パターン - APIGatewayとDynamoDBはPutEventを統合して、

    ClickUpWebhookのレスポンスをDynamoDBのレコードとして追加 - DynamoDBのDataExport機能でS3に転送 - SnowflakeのCOPY INTO コマンドでS3のデータを一括ロード
  4. @ 2022 Novasell, Inc. All Rights Reserved. 自前実装パターン - APIGatewayとDynamoDBはPutEventを統合して、

    ClickUpWebhookのレスポンスをDynamoDBのレコードとして追加 - DynamoDBのDataExport機能でS3に転送 - SnowflakeのCOPY INTO コマンドでS3のデータを一括ロード 設計から実装(CDK書いたりレビューしたり) までに1週間は少なくともかかりそう...?
  5. @ 2022 Novasell, Inc. All Rights Reserved. NoCodeツール活用パターン - ZapierのZapワークフロー連携

    - TriggerとしてWebhookを登録 - 取得したデータを GoogleSheetに転送 - troccoの転送設定 - 転送元をGoogleSheet - 転送先をSnowflake Google Sheet
  6. @ 2022 Novasell, Inc. All Rights Reserved. NoCodeツール活用パターン - ZapierのZapワークフロー連携

    - TriggerとしてWebhookを登録 - 取得したデータを GoogleSheetに転送 - troccoの転送設定 - 転送元をGoogleSheet - 転送先をSnowflake Google Sheet 約2日で実装が終わりました🎉
  7. @ 2022 Novasell, Inc. All Rights Reserved. Zapier 様々なサービスを連携させ、業務効率化・自動化を支援するiPaaS (

    Integration Platform as a Service )             ※ Zapierの使用画面をキャプチャしたもの
  8. @ 2022 Novasell, Inc. All Rights Reserved. NoCodeツール活用パターン実装時のQ&A - QWebHookのレスポンスのデータは

    jsonのデータ構造のまま Snowflakeへ転送させているの ? A.その方が Snowflakeに raw dataが送られて良いかもですが、  Zapier→ GoogleSheetの際に json形式で1カラムで入れる際手間だったのと  将来的に使うであろうデータも限られていたため、  データを絞りZapierが加工する形でGoogleSheetへ転送し、最終的に Snowflakeへ転送させています。 - Q.GoogleSheet使っているけど、データが蓄積された時はどうするの ? ( 蓄積 or 定期でリフレッシュ ) A.蓄積させています。GoogleSheetのデータ上限1,000万セルですが、  1レコード 5セル程のため 200万レコードまで格納可能です。  月のレコード数が約 3000レコード程度なので、 蓄積自体は50年くらいは大丈夫そうです。
  9. @ 2022 Novasell, Inc. All Rights Reserved. NoCodeツール活用パターン実装時のQ&A - Q.troccoを使った一括ロード処理の更新頻度は

    ? A.1日1回深夜に動かすように troccoで定義しています。データ反映に即時性が求められてない  かつ分析時に昨日のデータが反映されている方が体験的に良いと判断しました。 - Q.GoogleSheet → Snowflakeへのデータの出力方法はどうしているの ? A.TRUNCATE INSERTで全件洗い替えています。月約 3000レコードほどのデータが蓄積しますが、  この程度のデータ量なら直近 5年くらいは少なくとも処理の負担等は意識しなくて問題なさそうです。
  10. @ 2022 Novasell, Inc. All Rights Reserved. NoCodeツール活用パターン実装時のQ&A - Q.自前実装パターンとの料金比較は

    ? A.自前実装パターン...主コストのAPIGateway, DynamoDB共に最小単位で収まるので 月約 3000円位です。加えて開発工数分の費用がそこそこかかります。 NoCodeパターン...NoCodeツールの有料プランの料金ですがノバセルは全面的にこれらのツール を使っているため利用数で割ったら 5000円は下回りそうです。 - Q.コード管理できるの ? A.troccoは別途料金がかかりますが Git連携しymlファイルで管理できます。 Zapierは2022年 12月時点では存在を確認できていないです。 - Q.エラー通知できるの ? A.Zapierとtroccoどちらも可能です。troccoは簡単に通知設定ができます。 Zapierの場合、 エラー通知用のワークフローを定義し対象のワークフローを監視させる形になるので若干面倒です。
  11. @ 2022 Novasell, Inc. All Rights Reserved. NoCodeツールを活用できそうな場合 - 自社で開発/運用するよりROIが良い

    優れたエンジニアになればなるほど内製するためのコストが低くなるが、 属人性の観点などチーム全体の意思決定として長期的に良いかどうかを意識 - ビジネスロジックに依存しない汎用的な処理である 開発工数を下げられるが複雑性に対応できない性質を意識 NoCodeツールに依存しない設計/実装 → 通知やETLなどの処理はNoCode/LowCodeツールを事前に調査すると良いかも!