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

Let's Go Talk#7 - GoでGoogle Cloud Dataflowやってみたい

あく
February 15, 2023

Let's Go Talk#7 - GoでGoogle Cloud Dataflowやってみたい

2023年2月15日に開催されたLet's Go Talk#7 (GoのLT会)の登壇資料です。
Apache BeamのGo SDKを使ってDataflowパイプラインを作成してみます。
https://connehito.connpass.com/event/272814/

あく

February 15, 2023
Tweet

Other Decks in Technology

Transcript

  1. © Magic Moment 2021 Go で Google Cloud Dataflow やってみたい

    © Magic Moment 2021 株式会社Magic Moment Technologiesチーム Akira Nakajima
  2. © Magic Moment 2021 自己紹介 2 • Akira Nakajima •

    株式会社Magic Moment / Software Engineer • GitHub: @aqlwah • Twitter: @aqlwah • 昨年の10月までフロントエンドやってました
  3. © Magic Moment 2021 Magic Moment / 営業行動支援システムMagic Moment Playbookについて①

    3 • 株式会社Magic Moment • 営業行動支援システム 「Magic Moment Playbook」の開発・提供 • 開発組織は20名+業務委託 • 昨年9月にシリーズB完了で累計調達額20億円 • バックエンドにはGoを使ってます!
  4. © Magic Moment 2021 今日話すこと 5 Google Cloud Dataflow (Apache

    Beam)の Go SDKを試してみたい!!! 🥳🥳🥳🎉🎉🎉
  5. © Magic Moment 2021 Dataflowって何? 6 • Google Cloudのマネージドデータパイプラインサービスです ◦

    分散処理やスケーリングを隠蔽してくれます ◦ 「データをどう扱うか」のみに集中できます ◦ バッチ処理、ストリーミング処理の両方に対応できます • 具体的には、Apache Beamの実行プラットフォームです • ワンショットのデータ処理ジョブを実行するものです ◦ 異なるジョブ同士の前後関係の管理や、ジョブのスケジューリングなどは別サービス (Cloud Composer)が必要になります
  6. © Magic Moment 2021 Apache Beamって何?① 7 • データパイプラインを抽象化して定義する 統

    合プログラミングモデルです • 特定のプラットフォームに対応する ランナーによって実行されます ◦ Apache Spark、Google Cloud Dataflow、Direct(ローカル実行) etc. • Python, Java, GoのSDKがあります 画像出典:https://beam.apache.org/
  7. © Magic Moment 2021 Apache Beamって何?② 8 • Pipeline:データパイプラインジョブを表す オブジェクト

    • PCollection:ジョブの各ステップの 入力・出力となるデータセット • PTransform:データセットの変換操作 • ParDo:データセットに関数を実行する操作 • パイプラインI/O:データソースとデータシン クのコネクタ 画像出典:https://beam.apache.org/
  8. © Magic Moment 2021 ③ ParDo Format 作ってみたもの① 9 ①

    PubSubIO Read ② ParDo json.Unmarshal ④ ParDo DB INSERT PubSub Cloud SQL Dataflow PC1 PC2 PC3
  9. © Magic Moment 2021 • パイプラインを書く前準備 • beam.Init() は必須 •

    pipeline オブジェクトの生成も 必須 作ってみたもの② 10
  10. © Magic Moment 2021 • beamx.Run() に pipeline オブジェクトを渡して実行 •

    main() とパイプラインの実行 コンテキストは別なので DB コ ネクションはパイプライン中で 工面する必要がある 作ってみたもの④ 12
  11. © Magic Moment 2021 まとめ 15 • Google Cloud には、データパイプラインを

    イイ感じに動かしてくれる Dataflow(Apache Beam)という サービスがあります • たったスライド3枚分のコードで PubSub -> Cloud SQL のパ イプラインが書けました • 近年 Go SDK が整備されてきており、Gopher にも扱いやすく なってきているようです Go
  12. © Magic Moment 2021 宣伝 16 We’re Hiring! 2/22(水)に弊社 VPoE&Tech

    Lead が 全員出る座談会やります! connpass で「Magic Moment」検索 https://magicmoment.connpass.com/event/274825/ Wantedly のブログ記事も ぜひご覧ください!🙏 https://www.wantedly.com/companies/magicmoment/stories