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

AWS Startup Tech Meetup 関西 #1 の登壇スライド

AWS Startup Tech Meetup 関西 #1 の登壇スライド

内容は主にAWSのサーバーレスサービス(Lambda、API Gateway、AWS Batch)を活用し、高可用性かつ低コストなサービスを作ることについてお話しました。

Alvin Endratno

October 30, 2022
Tweet

Other Decks in Programming

Transcript

  1. Baseconnect
    株式会社
    Endratno Alvin
    2022.09.29
    サーバーレスを使って⼤量データの処理
    を実装したお話をします
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    Confidential

    View full-size slide

  2. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    Alvin Endratno
    Baseconnect
    株式会社
    / Full Stack Engineer
    フロントエンドから、インフラ(
    AWS
    )まで幅広く
    WEB
    アプリケーションの開発に携わっています。
    2
    年前から
    AWS
    に興味を持ち始め、資格取得の勉強を始めました。
    現在、プロフェッショナルアーキテクトとデブオプスを含む
    6
    つの
    AWS
    認定資格を取得しています。
    Portfolio
     : 
    alvinend.tech
    Blog
       : 
    blog.alvinend.tech
    SNS

    View full-size slide

  3. サーバーレスを使って⼤量データ処理の実装
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    会社の ご紹 介
    私 た ちの ⽬的
    PURPOSE
    会 社 情報
    COMPANY
    事 業 紹介
    Musubu

    View full-size slide

  4. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    会社概要
    COMPANY
    会社名
    所在地
    従業員数
    設 ⽴
    資本⾦
    株 主
    役 員
    Baseconnect
    株式会社
    京都府京都市中京区壬⽣神明町1-5
    230
    名(社員/
    役員 75
    名・アルバイト155
    名) 
    2017
    年 1
    ⽉ 17

    13
    億1912
    万円(累計増資額)
    ・國重侑輝
    ・Z Venture Capital
    ・Genesia Ventures
    ・ユーザベース
    ・JAFCO
    ・East Ventures
    ・みずほキャピタル
    ・京都市スタートアップ⽀援ファンド
    ・オリエントコーポレーション 他   
    代表取締役 國重侑輝
    取締役   野中 崇史
    社外取締役 ⼭川 隆義
    常勤監査役 尾堂 隆久

    View full-size slide

  5. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    私たちの⽬的・存在価値
    PURPOSE
    世界中のデータを繋げることで

    ダイレクトに必要な情報にアクセス

    できる世界を作る。
    15世紀にグーテンベルクにより活版印刷技術が⽣まれて「書籍」が普及
    し、20年前にGoogleが⽣まれて「検索」が普及しました。⼈が何かを知
    る⽅法はここ⼗数年変わっていません。重たい本を持ってくるか、キーワー
    ド検索にヒットしたリンクの⼀覧を1つ1つクリックするか、知⼈に尋ねる
    かのいずれかです。
    Baseconnectは書籍、検索に続く、第3の「知る」インターフェースを創
    造します。知る体験を根本から変え、これからの当たり前を発明します。
    Baseconnectに課せられたミッションは「世界中のデータを繋げる」こ
    とです。世界中のデータを繋げ合わせ、構造化して整理し、世界のデータ
    の中⼼である「Knowledge Base」 を創造します。
    そうすることで、世界中の⼈々はダイレクトに必要な情報にアクセスできる
    ようになります。⼈から何かを教えてもらうようにして知りたいことを「知
    る」ことができ、誰もが簡単に安⼼して「知る」ことができます。
    新しい「知る」の
    あたりまえを作る
    世界最⼤の
    データ製造業の会社
    情報検索に
    イノベーションを
    世界⼀価値ある会社

    View full-size slide

  6. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    事業紹介
    Musubu
    まだ会ったことのない「売れる顧客」に出会える
    法⼈営業を⽀援する企業情報データベース
    通算導⼊
    利⽤社数 社
    ,
    100 000
    1
    営業リスト
    作成サービス No.
    全 国

    ※ 実施委託先:⽇本トレンドリサーチ2020
    年5
    ⽉実施:サイトのイメージ調査
    法⼈営業のための
    クラウド型企業情報データベース。
    企業情報
    140
    万件以上(事業所を含む)の情報量。
    拠点情報や求⼈データも提供。
    ターゲティングからアプローチ、
    顧客分析までオールインワン。
    「最新のテクノロジー
    ×
    ⼈⼒」
    による優れたデータ品質。
    1
    2
    3
    4

    View full-size slide

  7. Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    ここから本編です サーバーレスを使って⼤量データ処理の実装

    View full-size slide

  8. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    パートナー企業様からの連携を受けての求⼈検索の実現
    Musubu
    では元々インターネットから取得した
    求⼈データを提供していた
    1
    2
    パートナー企業様が保有する求⼈データを
    「Musubu
    」のデータベースと連携することになった
    より鮮度の⾼い求⼈情報での検索や
    新たな検索軸での検索が可能となった
    求⼈データの更新頻度や全求⼈を
    網羅する点に課題があった
    3
    4

    View full-size slide

  9. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    やろうとした事
    パートナー企業様
    VPC
    Public subnet
    ?
    Private subnet
    Musubu Database
    特定した
    求⼈データを保存
    求⼈データ
    を送る
    1 2
    データは
    Baseconnect
    が作成した
    API Endpoint
    に送信されます
    どの会社の求⼈なのかを特定する必要があります
    (
    求⼈と企業の名寄せ処理)
    求⼈情報のデータは、パートナー企業様から週
    1
    回送られます(数万件)
    企業が特定された求⼈データは
    Musubu
    のデータベースに追加する

    View full-size slide

  10. サーバーレスを使って⼤量データ処理の実装
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    はどうしたか?

    View full-size slide

  11. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    MUST WANT
    いつでもリクエストを
    受け取れる
    API
    エンドポイント コストはできるだけ低い
    定期的に実⾏する処理 ⾼い可⽤性を持つ
    1 1
    2 2
    運⽤の要件を整理

    View full-size slide

  12. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    実現案1:
    EC
    2を使う
    パートナー企業様
    VPC
    Public subnet Private subnet
    Musubu Database
    特定した
    求⼈データを保存
    EC2
    求⼈データ
    を送る
    1 2

    View full-size slide

  13. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    実現案1:
    EC2
    を使⽤する場合の問題
    問題点
    1
    2
    3
    利⽤頻度が低いため、
    EC2
    のランニングコストが無駄になる
    EC2
    が落ちれば、パートナー企業様に迷惑をかける
    EC2
    を増やしたくない(管理するのが難しい)

    View full-size slide

  14. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    実現案2:
    Serverless
    問 題 点
    1
    1
    1
    利⽤頻度が低いため、
    EC2
    のランニングコストが無駄になる
    EC2
    が落ちれば、パートナー企業様に迷惑をかける
    EC2
    を増やしたくない(管理するのが難しい)
    アクセス数が少ない 可⽤性 Serverless !
    設計する際に2つの構成にわけて考えました。
    Endpoint
    データ処理
    パートナー企業様からのリクエストを
    受け取る役割をもつ
    求⼈データを
    Musubu
    に⼊れる役割をもつ

    View full-size slide

  15. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    実現案2:サーバーレス
    API Endpoint
    部分の構成
    パートナー企業様
    API
    Gateway Lambda S3
    パートナー企業様からのデータは
    APIGateway
    で処理する
    Lambda
    は求⼈データを
    S3
    に保存
    API Gateway
    で認証を⾏う
    S3
    に保存されたデータを後ほど処理する(処理⽅法は後述)

    View full-size slide

  16. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    実現案2:データ処理を設計する際に考えること
    1
    2
    3
    S3
    に求⼈データが
    csv
    形式で保存されている
    求⼈データは数万件程度
    処理にかかる時間は少なくとも3時間(Lambda
    ですぐに処理できない)
    Endpoint
    部分と処理部分は分けた⽅がいい!

    View full-size slide

  17. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    AWS Batch
    AWS
    でバッチジョブを
    実⾏するためのサービスです
    Fargate
    を使⽤してコンテナを
    実⾏することができます(Fargate Spot
    も)
    環境構築は簡単
    1
    3
    2
    A.
    B.
    C.
    Docker Images
    Shell Scripts
    Linux Executeable

    View full-size slide

  18. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    開発プロセス:処理コードを書く
    ローカルに
    Docker
    イメージを構築する
    処理の内容を書く
    コンテナを作り、その中でコードを
    実⾏できることを確認する
    01
    02
    03
    求⼈データ
    データベースに⼊れる
    MusubuのDBにある
    企業に名寄せをして
    紐づく
    Musubuで公開
    CSV
    求⼈1
    企業A 企業C
    企業B
    求⼈1
    求⼈2
    求⼈2

    View full-size slide

  19. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    実現案2:データ処理内容
    S3
    から
    CSV
    を読み込む
    CSV
    から求⼈情報を抽出する
    求⼈情報を元に紐づく会社データが存在するかを
    アルゴリズムを⽤いて確認する
    確認できた求⼈データを
    Musubu
    データベースに投⼊する
    01
    02
    03
    04
    求⼈データ
    データベースに⼊れる
    MusubuのDBにある
    企業に名寄せをして
    紐づく
    Musubuで公開
    CSV
    求⼈1
    企業A 企業C
    企業B
    求⼈1
    求⼈2
    求⼈2

    View full-size slide

  20. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    開発プロセス:
    AWS
    上で動かす
    AWS Elastic Container Registry

    イメージリポジトリを作成し、プッシュしました
    AWS Batch
    のジョブ定義を作成して、
    イメージは(1)の
    ECR
    に指定する
    EventBridge
    を使ってジョブを定期的に実⾏
    01
    02
    03
    VPC
    S3
    Private subnet
    Musubu
    Database
    AWS Batch Event Bridge
    1
    1
    2
    3
    2
    3
    求⼈データを取得する
    定期的に実⾏する
    特定できた求⼈データ保存

    View full-size slide

  21. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    全体アーキテクチャー図
    パートナー企業様
    API
    Gateway Lambda S3
    Private subnet
    Musubu
    Database
    AWS Batch
    VPC

    View full-size slide

  22. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    デプロイ&
    CICD
    Github
    から
    CodePipeline
    を通して
    CodeBuild
    をトリガーする
    CodeBuild

    Docker
    のイメージをビルドし、
    ECR
    にプッシュする
    次の
    AWS Batch
    処理は、
    最新のイメージを使って実⾏される
    1
    2
    3

    View full-size slide

  23. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    今回のアーキテクチャーで良かったこと
    並⾏処理ができる(今回紹介しなかった処理もあり、同時実⾏している)
    プロセスごとに
    Batch
    のジョブを分けることで、処理⼯程を分割できる
    他の
    AWS
    サービスとの連携が容易に実現できる
    いつ
    API
    リクエストが来てもデータ処理を深夜に実⾏できる
    AWS
    のランニングコストが低い
    後⼯程の処理が失敗した場合に、前⼯程の処理を再実⾏する必要がない
    AWS Secrets Manager
    の値を環境変数として利⽤できる
    例:名寄せ処理とデータベース投⼊の処理を分けることで、投⼊処理で失敗したら投⼊処理だけ再実⾏すればいい
    AWS EventBridge
    でジョブを直接トリガーできる

    View full-size slide

  24. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    EC2
    とのコスト⽐較(1ヶ⽉単位)
    AWS Batch
    を使⽤する場合
    ECR
    AWS Batch
    API Gateway
    Lambda
    S3
    合 計 $ 5.13
    $ 0.10
    $ 4.98
    約 $ 0
    約 $ 0
    $ 0.03
    1 GB Repo
    2vCPU, 4GB RAM *
    4回 * 10時間(1週間に1回)
    4 リクエスト
    4 リクエスト
    -
    サービス ⾒積もり 説 明
    EC2
    を使⽤する場合
    EC2
    合 計 $ 39.16
    $ 39.16 常時起動 t3.medium
    サービス ⾒積もり

    View full-size slide

  25. サーバーレスを使って⼤量データ処理の実装
    Endratno Alvin
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    今回のアーキテクチャーで残った課題
    学習コストが⾼い、チーム内で引き継ぎにくい
    リソースのコード化までできなかったこと(CloudFormation
    など)
    使⽤するサービスの数が多い
    AWS API Gateway AWS Batch
    AWS Lambda AWS Event Bridge

    View full-size slide

  26. Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    まとめ
    サーバーレスを利⽤することで、
    実⾏頻度の低いサービスでも⾼可⽤性と低コストを
    両⽴したサービスを構築することができました

    View full-size slide

  27. Baseconnect
    株式会社
    Endratno Alvin
    2022.09.29
    Copyright © 2022 Baseconnect Inc. All Rights Reserved.
    Confidential
    ご清聴ありがとうございました

    View full-size slide