$30 off During Our Annual Pro Sale. View Details »

いい感じに AWS を組み合わせたビルディングブロックでアプリ開発を支援する / TdTechTalk 2022 11

いい感じに AWS を組み合わせたビルディングブロックでアプリ開発を支援する / TdTechTalk 2022 11

TATSUNO Yasuhiro

December 01, 2022
Tweet

More Decks by TATSUNO Yasuhiro

Other Decks in Technology

Transcript

  1. #TdTechTalk 2022-11-29
    いい感じに
    AWS を組み合わせた
    ビルディングブロックで
    アプリ開発を支援する
    Empowering app dev by providing nicely-crafted AWS building blocks
    TATSUNO Yasuhiro, Insights and Data Systems group

    View Slide

  2. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    今日のお話
    2
    DB
    App
    App
    official apps
    Custom App
    Customer-built apps
    App
    TreasureData CDP
    TreasureData-managed
    Platform
    DB
    App Runtime
    API
    API
    API
    API
    Overly simple view of TD platform

    View Slide

  3. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    今日のお話
    3
    DB
    App
    App
    official apps
    Custom App
    Customer-built apps
    App
    TreasureData CDP
    TreasureData-managed
    Platform
    DB
    App Runtime
    API
    API
    API
    【背景】お客さまのカスタムアプリ開発に TD か
    らのインフラ支援が期待されている
    API
    Aoki’s talk
    Keisuke &
    okumin’s talk
    My talk
    Mikurube’s talk
    【施策】専門チームが用意した AWS ビルディ
    ングブロックでアプリ開発を支える
    Overly simple view of TD platform

    View Slide

  4. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    自己紹介
    4
    • ユーザー系 SIer、ベンチャー2社を経て 2022年1月に TD 入社
    • AWS を極めていきたい Web アプリ開発者。データ分析未経験
    • 好きな言語は Scala、仕事は Ruby と TypeScript
    • ふだんは長野県でリモート
    • 東京出張でピクミンブルームが捗る
    exoego
    exoego

    View Slide

  5. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    いろんな OSS のメンテナ
    をしてたりもします
    5
    Scala Steward Fomantic-UI Vue-i18n
    rspec-openapi
    Scala 本の監訳も!

    View Slide

  6. 【背景】
    お客様のカスタムアプリ開発に
    TD からのインフラ支援が
    期待されている
    Background: Not a small number of Enterprise customers expect TD to offer IT
    Infrastructure for their custom app development

    View Slide

  7. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    TreasureData はエンタープライズ SaaS
    7
    エンタープライズ SMB
    Small & Mid-size Businesses
    日本語で
    言うところの
    大企業、中堅企業、行政機関
    定義にもよるが売上 50億以上
    中小企業、零細企業、個人事業主
    会社数 少数 多数
    購買力
    高単価
    ・1組織でのユーザー数が多い
    ・IT予算が SMB より潤沢
    低単価
    TreasureData の主なお客さま:大量の顧客データを有効活用したいエン
    タープライズのマーケ、営業、サービス部門など

    View Slide

  8. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    エンタープライズ SaaS 導入の技術的支援
    8
    • 課題のヒアリング
    • 技術的質問への回答
    • 技術デモ、概念実証(Proof-of-Concept)
    • ソリューションの提案
    • お客さまのシステムやサードパーティ製品との統合
    • 製品の高度なセットアップ
    • 技術的なトレーニング
    • 技術ドキュメント
    ケースバイケースですがおおむね









      












    ス テクニカル
    ライター

    View Slide

  9. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    システム統合に対する TD 製品・ツール
    9
    • お客さま所有システムやサードパーティ製品⇆TDつなぎこみ
    • さまざまな手段を長年提供。SDK, Workflow, Connector,
    Custom Scripts あるいは OSS の fluentd や embulkなど
    • TD を軸にしたお客さま固有のカスタムアプリの開発
    • TD と連携したアプリは、SDK などを使えば開発可能
    • 一般的な IT インフラはお客さま自身で用意。アプリサーバー、
    PostgresSQL、ファイルストレージなど

    View Slide

  10. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    お客さまの事情と TD への期待
    10
    • IT 内製化が流行だが、 IT 人材の確保は容易ではなく、パートナー
    企業で補うことは多い(日本でも海外でも)
    • カスタムアプリ開発に AWS などパブリッククラウドを使い、すばやく、
    少ない初期投資で、運用負荷を軽減したい……が、クラウドに強い
    内製人材やパートナーもなかなか厳しい
    • ということでカスタムアプリ開発に必要なインフラ技術支援を TD に
    望む声が少なくない

    View Slide

  11. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    ③顧客
    ・TD as CDP を軸にした
     ビジネスの成功
    ・TD からの技術的支援
    11
    ①TreasureData
    ・カスタマイズを避けて
     製品のギャップを埋める
    ・開発会社通じた販路拡大
    ・ITインフラ提供による収益
    ②システム開発会社
    ・TD通じた高単価開発の受注
    ・TD開発経験を他社に売込
    https://imgflip.com/memegenerator/206999279/Epic-Handshake-3-arms
    三方
    よし

    View Slide

  12. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    なぜインフラ提供まで踏み切ったのか?
    12
    • 第1は戦略的パートナーシップ
    • パートナーの開発会社を通じた販路拡大
    • 中長期的なアプリ開発支援を通じ、お客さまの課題をより広
    く理解し、アップセルやクロスセルへ
    • 特定のお客さま固有アプリから、他社へ展開できる製品へ
    発展(TD が開発し知財をいただくケース)
    • 今後の TD 製品のインフラとしての応用

    View Slide

  13. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    が…ぶっちゃけ AWS 運用むずいという話
    13
    • S3 の公開範囲ミスなど事故は枚挙にいとまがない(2021事例↓)
    • 80を越す米国自治体で S3 バケットから個人情報漏洩
    • CodeCov 脆弱性で Twilio の S3 バケットから顧客情報漏洩
    • Route53、ELB、SG、VPN、SG、RDS などは最初に作り込んだあとはあま
    り触らないので、”DevOps” 文化でもスキル忘れがち
    • TreasureData にはお客さまへ技術支援する SE/PS チームがいるが、自
    社製品が専門なので、AWS の技術支援はきびしい
    • ではどうすれば…?

    View Slide

  14. 【施策】
    専門チームが用意した
    AWS ビルディングブロックで
    アプリ開発を支える
    Our solution: Empowering app dev by providing AWS building blocks well-crafted by expert team

    View Slide

  15. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    インフラ提供どうする問題と施策
    15
    ①IaC で作り込んだ高品質
    ビルディングブロック
    ①アプリごとにバラバラな
    技術選択だとノウハウ共有で
    きず、品質も担当者次第
    ⑦ 専門チームが
    サービスとして提供
    ②アプリ開発者やお客様が
    AWS 習熟しなくても使え,開
    発をスケールさせたい
    ③ただの AWS 又貸でなく
    TD ならではの付加価値で
    選ばれるインフラにしたい ⑥ビルディングブロックを API
    で操作可能に
    ②変更可能な部分を厳選
    ④ TreasureData 製品の
    利用価値を高める統合
    問題 施策
    ⑤AWS クロスアカウント
    ③独自の Web コンソール

    View Slide

  16. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    “Provisioner” サービス全体像
    16
    TD Main Account “Provisioner” Account
    AWS CDK
    Other services/Products
    Core services
    Provisioner
    auth, etc
    integrate
    integrate
    provision
    Request provisioning
    through API
    TD Admins
    App Devs
    execute
    Well-crafted blocks, all single-tenant
    Multi-tenant basis

    View Slide

  17. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    TD向けアプリ開発ならではの
    AWS+α なビルディングブロックの具体例
    17
    • TD クエリコンソール からもクエリできる PostgreSQL
    • 使用: Aurora、VPC、Backup、KMS、SecretsManager、
    IAM、CloudWatch Logs……
    • ADL(リアルタイムなデータ格納と分析のための TD製品)の拡張
    をはじめ、さまざまな応用に使えるサーバーレス関数
    • 使用: Lambda、ALB、Route53、CloudWatch Logs、IAM,
    S3、SecretsManager……

    View Slide

  18. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策① IaC で作り込んだ高品質インフラの提供
    18
    • TypeScript 版 CDK(Cloud-Development-Kit)を採用
    • 静的型付け、記述量の少なさ、トライアンドエラーの速さ
    • JSON や YAML でなく、使い慣れたプログラミング言語で AWS
    infrastructure を記述できる
    • 他に Python、Java、.Net、Go がサポートされてる。Ruby…
    • 自動テストでの品質保証
    • ユニットテスト:お客さまで設定可能にしている部分の入力バリデー
    ションや条件組み合わせ
    • スナップショットテスト:構成変化、特に CDK の頻繁なバージョンアッ
    プによる予期せぬ差異がないか検査
    • 実際のデプロイ:作成から削除まで一連の操作

    View Slide

  19. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策② 変更可能な部分を厳選
    19
    • 専任チームが設定を作り込んだと言っても、ある程度のユース
    ケースのバリエーションは設定でカバーしたい
    • 生の AWS は汎用的で設定項目が膨大で、設定が柔軟すぎても
    お客さまやアプリ開発者が困る
    • そこでお客さまが変えられる設定をしぼりこみ
    • アクセスを許可する IP アドレスのリスト
    • DB のメンテナンスで止めてもよい時間帯、などなど

    View Slide

  20. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策③ 独自の Web コンソール
    20
    • 厳選された設定項目
    • 誰がいつどんな変更をインフラに加えたか履歴追跡
    • 生の CloudFormation や CloudTrail にも変更履歴はあるが、わか
    りやすさ優先で独自の仕組み
    • AWS のログを Kinesis Stream Lambda などで吸い上げ、AWS アカウ
    ントなしで見れるようにもしている
    • AWS との契約上「TD が保有する AWS アカウントのコンソールを
    他社であるお客さまに提供できない」ので独自開発という事情も
    ……

    View Slide

  21. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策④ TD 製品の利用価値を高める統合
    21
    • 単なる AWS リソース又貸しにはしたくない
    • TD カスタムアプリ開発が便利になるように、さまざまな TD 製品・
    サービスとの深い統合
    • TreasureData コンソール
    • ADL
    • 課金システム
    • and more

    View Slide

  22. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策⑤ AWS クロスアカウント
    22
    • TD 製品群が使う AWS アカウント(メイン)とは別の AWS アカウ
    ントにリソースを構築している
    • メインアカと別アカ双方向で必要なアクセスは、クロスアカウントポ
    リシーで厳しく制限
    • 1アカウント内で IAM ポリシーやロールを駆使してアクセス制
    御がんばるより案外ラクでミスりにくい
    • AWS アカウントごとに上限あるリソース制限も緩和
    • たとえば ENI の個数制限など

    View Slide

  23. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策⑥ ビルディングブロックを API で操作可能に
    23
    • Provisioner はTD 内部に API を公開している
    • TD のサービスはいつでも「いい感じに設定済のAWS」をポン
    ポン作ったり、破棄したりできる!
    • たとえば「お客様が何かしらの製品を購入されたら、必要なシング
    ルテナント AWS インフラを自動で瞬時に構築」というように、自社
    製品インフラに使っていく(進行中)

    View Slide

  24. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    施策⑦ 専門チームがサービスとして提供
    24
    • TD の SE/PS は TD 製品全般の技術支援はできるが、SE/PS 組
    織全体として AWS など外部技術の支援はむずかしい
    • さらに、提供するインフラは TD のプラットフォームとして 付加価値
    (TD 製品群と連携、API、UI)をつける必要があり、フルスタックに
    色々やれる人材をあてたい
    • そこで、TD プラットフォーム担当エンジニアから結成した専門チー
    ムがサービスの開発運用に責任を持っている

    View Slide

  25. 2年くらい開発運用して
    実際いい感じなのか?
    Thoughts after 2 year: Did the solution work nicely in reality?

    View Slide

  26. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    いい感じ?
    26
    • いい感じっぽい
    • DB 系。インフラとして初期に構築したら、アプリ開発者側が設
    定をめったに触らないので困ることがあまりない
    • まだまだ、めちゃくちゃ改良の余地あり
    • アプリ実行環境(Lambda)。アプリ開発者は頻繁にトライ&エ
    ラーしたいのに、デプロイが遅かったり、AWS を隠蔽している
    せいで Lambda の開発者ツールが使えなかったり、ログも使
    いにくかったり……

    View Slide

  27. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    Provisioner の開発運用で大変だったこと
    27
    • AWS の謎な制限のため、CDK でがんばる必要がよくある
    • 「import した VPN に追加した Lambda」を素直に削除できず、隠れたリソースを依存
    ツリーに足して削除…など
    • 提供するインフラはシングルテナントにしてるので、お客さんの少ない初期でもメンテナン
    スの調整や実施に追われまくる
    • メンテナンスしてよい時間帯をお客さまごとに指定してもらったり、自動更新の仕組み
    を導入してラクに
    • AWS のバグを踏んで、お客様の本番環境に障害!! 特定バージョンの RDS で Database
    Activity Stream を有効にし、かつ CURSOR を使うと DB 死す…AWS の品質を信じてた
    のに…
    • さまざまな SQL ステートメントを流す自動テストで再発防止

    View Slide

  28. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    今後の展望
    28
    • シングルテナントのメンテナンスをとにかくラクにしたい
    • 「この AWS にも対応して」という要望をタイムリーに消化
    • ウケ悪い Lambda でのアプリ開発者体験をとにかく向上

    View Slide

  29. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    逆 Q&A
    29
    • パートナー開発者向けのクローズドなインフラ提供、みんなどう
    やってるの?
    • 内部で AWS Lambda などを使ったインフラ製品(Vercel,
    Serverless Cloud)提供は最近あるが、みんなどうやってるの?

    View Slide

  30. © 2022 Treasure Data, Inc. Confidential—Internal Use Only
    30
    Thank you

    View Slide