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

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

いい感じに 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
  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
  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
  4. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 自己紹介 4

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

    のメンテナ をしてたりもします 5 Scala Steward Fomantic-UI Vue-i18n rspec-openapi Scala 本の監訳も!
  6. 【背景】 お客様のカスタムアプリ開発に TD からのインフラ支援が 期待されている Background: Not a small number

    of Enterprise customers expect TD to offer IT Infrastructure for their custom app development
  7. © 2022 Treasure Data, Inc. Confidential—Internal Use Only TreasureData はエンタープライズ

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

    導入の技術的支援 8 • 課題のヒアリング • 技術的質問への回答 • 技術デモ、概念実証(Proof-of-Concept) • ソリューションの提案 • お客さまのシステムやサードパーティ製品との統合 • 製品の高度なセットアップ • 技術的なトレーニング • 技術ドキュメント ケースバイケースですがおおむね セ | ル ス エ ン ジ ニ ア    プ ロ フ ェ ッ シ ョ ナ ル サ | ビ ス テクニカル ライター
  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、ファイルストレージなど
  10. © 2022 Treasure Data, Inc. Confidential—Internal Use Only お客さまの事情と TD

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

    • 第1は戦略的パートナーシップ • パートナーの開発会社を通じた販路拡大 • 中長期的なアプリ開発支援を通じ、お客さまの課題をより広 く理解し、アップセルやクロスセルへ • 特定のお客さま固有アプリから、他社へ展開できる製品へ 発展(TD が開発し知財をいただくケース) • 今後の TD 製品のインフラとしての応用
  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 の技術支援はきびしい • ではどうすれば…?
  14. © 2022 Treasure Data, Inc. Confidential—Internal Use Only インフラ提供どうする問題と施策 15

    ①IaC で作り込んだ高品質 ビルディングブロック ①アプリごとにバラバラな 技術選択だとノウハウ共有で きず、品質も担当者次第 ⑦ 専門チームが サービスとして提供 ②アプリ開発者やお客様が AWS 習熟しなくても使え,開 発をスケールさせたい ③ただの AWS 又貸でなく TD ならではの付加価値で 選ばれるインフラにしたい ⑥ビルディングブロックを API で操作可能に ②変更可能な部分を厳選 ④ TreasureData 製品の 利用価値を高める統合 問題 施策 ⑤AWS クロスアカウント ③独自の Web コンソール
  15. © 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
  16. © 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……
  17. © 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 の頻繁なバージョンアッ プによる予期せぬ差異がないか検査 • 実際のデプロイ:作成から削除まで一連の操作
  18. © 2022 Treasure Data, Inc. Confidential—Internal Use Only 施策② 変更可能な部分を厳選

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

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

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

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

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

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

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

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

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

    29 • パートナー開発者向けのクローズドなインフラ提供、みんなどう やってるの? • 内部で AWS Lambda などを使ったインフラ製品(Vercel, Serverless Cloud)提供は最近あるが、みんなどうやってるの?