1.1K Views
April 25, 24
スライド概要
https://metaps.connpass.com/event/313920/
2011年にエンジニアとして活動を始め、これまで多数の企業でWEB系のFullstack-Engineer・EM・TL・PdMとして従事。大学では自然言語処理を組み込んだAIサービスの開発・研究を行う。現在、株式会社ワンキャリアでTL、株式会社アイピコでEM/技術顧問、アンドドット株式会社でCTOを務める。
AndDot Inc. アンドドット 株式会社
自 己 紹 介 高根沢 光輔 CTO 2011年にエンジニアとして活動を始め、これまで多数の 企業でWEB系のFullstack-Engineer・EM・TL・PdM として従事。大学では自然言語処理を組み込んだAIサー ビスの開発・研究を行う。現在、株式会社ワンキャリア でTL、株式会社アイピコでEM/技術顧問、アンドドット 株式会社でCTOを務める。
は じ め に 目次 要件、技術選定、現在のインフラ構成 ・生成AIプラットフォームQT-GenAIの紹介 ・要件と技術選定の背景 ・現在のインフラ構成について Terraform構成(詳細) ・シングルテナントを実現するためのフォルダー構成 ・5つのプロバイダーの構成、工夫点の紹介
は じ め に はじめに
は じ め に 皆さんに質問です!
は じ め に 生成AI、業務に使っていますか! (使っている人は挙手!)
は じ め に 生成AIを使っている人は20%弱
は じ め に 生成AIを使う人/使わない人の生産性の差 ※参考: Navigating the Jagged Technological Frontier: Field Experimental Evidence of the Effects of AI on Knowledge Worker Productivity and Quality ref :https://ai-data-base.com/archives/55470
は じ め に QT-GenAIの紹介 チャット形式の生成AIプラットフォーム モードを選ぶだけで自動プロンプト生成 生成AIがもっと身近に。RAG対応 GoogleやMSなど、OpenAI以外の 複数の最新モデルにアクセス可能 自治体や金融機関で導入実績
本 題 裏側はどうなっている?
要 件 今回満たすべき要件 シングルテナント構成 1企業につき、完全に分離したインフラ構成が必要 (VPC, Container, DB) →1テナントを構成するリソースは全てTerraform化 開発速度重視 変化が早い生成AI業界なので、できるだけ早く開発で きるように技術選定を行った。 →アプリ、インフラともに開発速度が求めれる
技 術 選 定 技術選定の概要 アプリケーションの技術選定 フロントエンド+APIの開発を効率よく行えるNext.js + tRPC + Prismaがすぐ使えるcreate-t3-appを採用 クラウドインフラの技術選定 マネージドサービスとの連携がしやすく、後々のカス タマイズ性も高いKubernetes Cluster(GKE)を採用
技 術 選 定 create-t3-appの採用理由 ・tRPC: 型共有可能なAPI Server/Clientを作れる ・Prisma: DB Migrate & ORMとして使える ・NextAuth.js: 認証を簡単に実装できる →PJ立ち上げ時のベースコードを自動生成してくれる便利ツール
技 術 選 定 GKEの採用理由 ・クラスター内リソースからマネージドサービスへの連携が楽(LB等) ・同クラウド内マネージドサービスへの権限付与が楽(KSA,GSA紐付)
構 成 図 公開版では非公開のコンテンツ (インフラ構成図)
ざ っ く り 構 成 図 公開版では非公開のコンテンツ (インフラ構成図)
ワ ー ク ス ペ ー ス 構 成
プ ロ バ イ ダ 利用しているProviders ・hashicorp/google(v4.76.0) ・hashicorp/kubernetes(v2.22.0) ・cloudflare/cloudflare(v4.13.0) ・auth0/auth0(v0.50.1) ・Datadog/datadog(v3.31.0)
フ ォ ル ダ ー 構 成 2-WSからmodulesを呼び出す構成 modules内には、tenant/tenant_kubernetesの2つがあり、そこから 各プロバイダーをを呼び出している。
プ ロ バ イ ダ の 構 成 ・ 工 夫 点 hashicorp/google 定義するもの VPC, DB, GCS Bucketなどを定義 定義しないもの TFC か ら plan and apply 時 に 利 用 す る Workload Identity に つ い て は、対象外(初回apply時に必要にな るため) 工夫したこと tenant-prefix を 用 い て リ ソ ー ス 名 がユニークになるように
プ ロ バ イ ダ の 構 成 ・ 工 夫 点 hashicorp/kubernetes 定義するもの namespace, cronjob, ingress, secretsを定義 定義しないもの クラスター外にあるリソースは定義 しない(GCS BucketやGSAなど) 工夫したこと 予約グローバルIPを使い、作成され るLBに固定IPがアサインされるよう に
プ ロ バ イ ダ の 構 成 ・ 工 夫 点 cloudflare/cloudflare 定義するもの テナントごとのDNSレコード 定義しないもの ページルール、ドメイン設定(初期 設定はGUI上で行う必要あり) 工夫したこと ページルールなどのテナントに依存 しない部分は、対象外とした(利便 性を優先)
プ ロ バ イ ダ の 構 成 ・ 工 夫 点 auth0/auth0 定義するもの アプリケーションクライアント 定義しないもの テナント設定 工夫したこと テ ナ ン ト は 現 在 (v0.50.1) だ と 参 照 しかできないため、アプリケーショ ンクライアントによってテナントを 分離する仕組みを実装した。 (テナント作成工数との兼ね合い)
プ ロ バ イ ダ の 構 成 ・ 工 夫 点 Datadog/datadog 定義するもの Synthetics API Test 定義しないもの Synthetics Browser Test 工夫したこと テ ナ ン ト 単 位 で 実 行 し て い る API Test レ ベ ル の 外 形 監 視 は Terraform で 記 述 し て 展 開 で き る ように。テナントに依存していない Browser TestはTerraform上での 運用コストが高いため、除外。
成 果 まとめ テナントを完全にTerraform化&爆速構築 Terraform の apply だ け で テ ナ ン ト 構 成 で き る よ う に なり、30分程度の作業時間でテナント作成が可能に 運用の効率化 シングルテナント構成のリソースをアップデートする 際に、Modules内のコードを変更すれば全テナントに 適用できるようになった
今 後 今後について Terraform CloudのIaC化 現 状 、 Terraform Workspace だ け 手 動 で 作 成 し て い る。そこも含めてTerraformで管理できると楽。 テナント作成時のコード自動生成 フロントのhygenのように、テンプレートを書いたら 自動で新規テナント向けのTerraformコードを自動生 成できるようにしたい
さ い ご に We are hiring! Our Mission 生成AIの豊富な知識を活かし、社会課題解決に徹底にコミットする。 Purpose 「テクノロジーで世界をわくわくさせる」
Located in Shibuya
AndDot Inc. ご清聴ありがとうご ざいました!