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

開発を加速するEKS + Flux + Hasura [燈株式会社 AI SaaS/ AWS ...

Avatar for taqqn taqqn
November 28, 2023
57

開発を加速するEKS + Flux + Hasura [燈株式会社 AI SaaS/ AWS for Startups 2023]

燈株式会社では、建設業特化の請求書電子化サービス「Digital Billder 請求書」を開発し、リリースから1年間で36都道府県、100社への導入を達成しました。その姉妹サービスとして「発注」「経費精算」の2つのプロダクトをまもなくリリース予定です。

このように姉妹サービスを次々とリリースし事業を拡大していくフェーズにあり、いかに開発・デプロイの効率を上げていくかが焦点となっています。例えば、プロダクト拡大に向けて、Hasuraを含めたマイクロサービスアーキテクチャを採用しましたが、それによりインフラの複雑性は増しており、スムーズにデプロイすることの重要性が増してきています。

そこで弊社では、EKS上でのデプロイをスムーズに行うために、Fluxを導入したGitOpsのアプローチを採用しました。実運用におけるHasura GraphQL Engineやマイクロサービス間のgRPC通信を含めたデプロイのノウハウを発表させていただきます。

Avatar for taqqn

taqqn

November 28, 2023

Transcript

  1. 2 自己紹介 小田川 拓利 (taqqn) X: @tictaqqn 所属: 燈株式会社 AI

    SaaS 事業部 VPoE 言語: TypeScript が最近は主です。 雑食に Go, Dart, Rust なども触ります。 趣味: マーダーミステリー(実はアプリ開発してました)
  2. アルゴリズム
 研究開発
 AIモジュール
 AI SaaS
 DXソリューション事業 AI SaaS事業 研究開発したアルゴリズムを独 自のAI開発基盤を用いて蓄積し

    たAIモジュールをカスタマイズ し、企業様のビジネスモデルや ワークフローに最適な形で提供 し、アルゴリズムでエンハンス した共同事業なども展開。 燈固有のAIモジュールをソフト ウェアに搭載し、建設業界の ワークフローに最適な形のプロ ダクトを提供。 燈株式会社の事業内容
  3. 8 AI 開発環境 計算機クラスタ を構築 計算機1 計算機2 メリット デメリット 概要

    従来 独自k8sクラスタ Amath 必要なスペック を要求 空いたリソースから確保 割り当て 各計算機に使う人があらかじめ決まっている 作業の度に必要なスペックの計算機が作成される 構築が簡単 ・計算機の追加・交換や人の配置換えの度に膨大な工数 ・計算機によっては閑散とすることがあるが測定もできない ・計算機の追加が数分で完了 (スケーラブル) ・常に最適な稼働率 コンテナオーケストレーションという難しい技術を扱う (だが楽しい) 追加
  4. 16 マイクロサービスのメリット・デメリット ➢ 開発期間を短縮できる ➢ 小さな機能に分割するので、コードを再利用可能 ➢ 柔軟性・拡張性が高い デメリット メリット

    ➢ インフラの運用コスト ➢ データの一貫性の担保が難しくなる ➢ サービスの境界を後から変更することが難しい
  5. 18 マイクロサービスの実際 メリット ➢ 開発期間を短縮できる ◦ 経費精算と発注・請求書とで、完全にコードが分かれている状態 ◦ 既存の機能に与える影響が小さい開発となり高速に ➢

    小さな機能に分割するので、コードを再利用可能 ◦ 共通ロジックのパッケージ化のリファクタが促進され把握が容易に ➢ 柔軟性・拡張性が高い ◦ サービスを立ち上げるコストを下げられる
  6. 19 マイクロサービスの実際 デメリット ➢ インフラの整備コスト ◦ IaC、AWS フルマネージドサービスでカバー(後述) ➢ データの一貫性の担保が難しくなる

    ◦ サービスの性質上、厳密な一貫性は必ずしも不要 ➢ サービスの境界を後から変更することが難しい ◦ 経費精算と発注・請求書の境界線が明確
  7. 22 Hasura GraphQL Engine とは ➢ DB スキーマから自動で GraphQL の

    エンドポイントを作成 ➢ 各 API について権限設定 ➢ Remote Schema 機能を用いて、 各マイクロサービスの Graph を結合
  8. 23 Hasura GraphQL Engine とは ➢ 開発者間でのGraphQL スキーマ定義の共通化 ➢ 簡単な権限管理

    ➢ ローコードによる高速開発! ➢ DB スキーマから自動で GraphQL の エンドポイントを作成 ➢ 各 API について権限設定 ➢ Remote Schema 機能を用いて、 各マイクロサービスの Graph を結合
  9. 1. Why Microservices?
 2. Why Hasura?
 3. Why EKS +

    Flux?
 4. How to deploy them with AWS?
 26
  10. 28 Amazon Aurora ➢ 高性能で高速なスループット ➢ 標準的な MySQL の約 5

    倍、PostgreSQL の約 3 倍の処理 ➢ リードレプリカを最大 15 個設置でき、高速化と高可用性を実現 ➢ 使用量に応じたオートスケーリング インフラの管理コストの低減
  11. ➢ Kubernetes のマネージドサービス ◦ 更新・パッチの適用 ◦ Kubernetes Masterの検出、置き換え ◦ 複数AZへのKubernetes

    Masterの配置・構成 ◦ 既存の AWS サービス(IAM、KMS など)と統合 EKS + Flux 便利!
 AWS EKS

  12. 31 Flux とは ➢ GitOpsによるKubernetesリソース管理 ◦ Git 管理で整合性 ◦ GitHub

    Actions ではない         -> インフラのセキュリティ担保 ➢ flux.yaml として manifest を生成
  13. 36 EKS + Flux 便利! ➢ マニフェストで管理できる ◦ デプロイ状況をmanifestで管理できるのはシンプル ➢

    GitHub Actions に強い権限を持たせる必要がない ◦ コンテナ操作は FluxCD がプル型で行う ➢ 環境間の移行も簡単 ◦ kustomization などと組合わせればすぐに環境ごとの変更が可能