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

ブラウザ間(ユーザー間)のPubSub機能のためにAppSyncを導入した話

Avatar for tkg tkg
August 11, 2023

 ブラウザ間(ユーザー間)のPubSub機能のためにAppSyncを導入した話

Avatar for tkg

tkg

August 11, 2023

Other Decks in Technology

Transcript

  1. 22 September 2022 1 Copyright © Murata Manufacturing Co., Ltd.

    All rights reserved. 22 September 2022 ブラウザ間(ユーザー間) でのPubSub機能を実現 するためにAppSyncを導 入した話 JAWS DAYS 2022プレイベント 株式会社村田製作所 高木広大
  2. 2 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 自己紹介 • 名前:高木 広大(たかぎ こうだい) • 所属:株式会社村田製作所(2021年中途入社) • 役割:SWE、(SRE) • 趣味:バスケ、温泉、筋トレ
  3. 3 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 Agenda • サービス(NAONA)についての概要 • 解決したい課題と技術選定 • 開発チームで初採用の技術を導入する際にやったこと • CI/CD Pipelineについて
  4. 4 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 サービス(NAONA)につ いての概要
  5. 5 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 サービス(NAONA)概要 • 対面、非対面(Web会議など)のコミュニケーションを簡単に取得・ 分析することができるコミュニケーション解析プラットフォーム 対面(オフライン) 非対面(Web会議) 1対1面談(2人) 複数人会議(3人以上) NAONA利用環境 コミュニケーション解析人数 × → 提供方法 定量化データ Webアプリケーション
  6. 6 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 NAONA上で提供しているアプリケーション 1on1 GroupDiscussion 1on1コミュニケーションを解析 →良好なコミュニケーションの支援 複数人コミュニケーションを解析 →定量的な評価を支援 →運用の効率化(自動化)
  7. 7 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 全体のアーキテクチャ概要
  8. 8 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 解決したい課題と技術選定
  9. 9 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 解決したい課題 • アプリケーションの利用中(1on1やGroupDiscussion)に管理者が設 定変更や情報更新したことをユーザーにリアルタイムで通知したい 機能イメージ
  10. 10 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 結論 • AppSyncのMutation/Subscriptionを使うことで課題を解決 👉 AppSyncの説明となぜその結論に至ったのかを以下で説明します
  11. 11 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 AWS AppSyncとは 参考:AWS Black Belt Online Seminar「AWS AppSync」
  12. 12 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 そもそもGraphQLとは 参考:AWS Black Belt Online Seminar「AWS AppSync」
  13. 13 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 改めてAppSyncとは 参考:AWS Black Belt Online Seminar「AWS AppSync」
  14. 14 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 AppSyncで構築するGraphQL API 参考:AWS Black Belt Online Seminar「AWS AppSync」
  15. 15 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 今回採用したアーキテクチャ • DataSource: None (Local Re) データソースにDBなど何も配置しないパターン • 今回通知目的なのでデータの永続性が不要 • AppSyncをWebSocketサーバーとして使うイメージ • 認証: Lambda認証(既存基盤を拡張) ※ SubscriptionはDBの変更を購読するのではなく、Mutationを購読するもの アーキテクチャ 参考: https://aws.amazon.com/jp/blogs/news/webinar-bb-aws-appsync-2019/
  16. 16 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 AppSyncを採用した理由 • リアルタイム通信が必要な機能が増えそう点と、API/Clientの負荷の観点か らから定期的なAPI呼び出しをする案は除外 • API GatewayのWebSocket方式とで以下の観点で比較 👉どちらでも同じことができる、導入/利用コスト的にデメリットはない、 (使ったことがない技術を導入してみたい)、などの理由で、AppSyncを採用。 AppSync方式 API Gateway方式 利用料金 〇 〇 開発コスト 〇 △(connectionIDの管理などが必要) Client実装コスト 〇(GraphQLクライアント) 〇(WebSocket) ※ただし、GraphQLクライアントの実装方法の知見が少ない
  17. 17 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 補足: 導入後の全体アーキテクチャ
  18. 18 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 補足 • リソース管理には、SAM(Serverless Application Model)を活用 • 認証はLambda Authorizer – Amplifyでチュートリアルやサンプルの実装などは試したが、 SAM Pipelineの方が定義していたCI/CD Pipelineの要件を満た しやすいことや、Lambda Authorizerのリソース管理がしやす いこと、SAMに慣れていたことからSAMを採用
  19. 19 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 チームで初採用の技術 を導入する際にやった こと
  20. 20 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 開発勉強会やSAに相談 • 2回にかけてチーム内で勉強会を実施し、GraphQLの概要やAppSyncでの アーキテクチャなどについて理解を深めた • AWSのSolution Architectの方との相談の場を設けていただき、実現したい ことや幾つかのアイデアについての議論した
  21. 21 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 クライアント側の実装方法の調査 • クライアント側の実装方法について以下を調査 – Amplify Library – AppSyncClient (SDK) – Apollo Client, Vue Apollo 👉 Amplify Libraryが実装/導入のコストは最も低そう 👉 実装例等をフロントエンドチームに共有・連携した ※ オフライン(ネットワーク未接続時)からの復旧する処理などが必要 な場合で選択は変わる
  22. 22 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 CI/CD Pipelineについて
  23. 23 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 CI/CD Pipelineの導入 • 同時期にCI/CD Pipelineについての検討/輪読をしていた – 踏襲したい項目 • バイナリをビルドするのは1回限り(Stg/Prodで同一バイナリ) • トランクベース • 各ステージでのテスト自動化 – ビルドステージ: UT/IT – デプロイステージ: UAT – デプロイの信頼性の向上/サイクルタイム短縮が目的
  24. 24 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 SAM Pipelineとは • SAMコマンドを使ってCI/CDパイプラインの構築が(簡単に)できる • クロスアカウントでのデプロイも可能 • 前述の要件を満たせる • 導入方法(概要) 参考: https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-cli-command- reference-sam-pipeline-bootstrap.html https://aws.amazon.com/jp/builders-flash/202110/new-lambda-container-development-6/?awsf.filter- name=*all
  25. 25 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 SAM Pipeline を適用したCICD Pipeline全体像
  26. 26 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 AWSでPipelineを構築するその他の手段 • CDK Pipeline: – CDKでCodePipelineやCodeBuildなどのリソースを定義する Pipeline – SAM Pipelineの様にパイプライン構築コマンドはないがCDKを 使っているなら作りやすい • Amplify – Amplify CLI, Amplify Consoleで簡単にPipelineを構築できる 👉 要件や開発プロセスに応じて、使いやすいものを選択
  27. 28 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 まとめ • 管理者からユーザーへリアルタイムで通信・通知する機能を実現するため にAppSyncを採用した • 当初の想定していた利用シーン以外でも今回構築したAPIが使われるケース が増えてきている • 導入したことのない技術・最新技術を使うことが最適解とは限らないが、 導入するために組織内でのベースライン構築や導入のハードルを下げる活 動も大切だと実感しました – 結果的に自分自身の理解も深まる – (導入に対して特に否定的な雰囲気はなく、ありがたかった) • SAなど第三者への相談も重要だが、最終的にはチームでの意思決定と推進 • 小規模/簡単なAPIやリソースでもCI/CD Pipelineをちゃんと構築すると、 別の開発者がエンハンスしやすいなどメリットを感じた
  28. 29 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.

    22 September 2022 ご視聴ありがとうございました。