Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ブラウザ間(ユーザー間)のPubSub機能のためにAppSyncを導入した話
Search
tkg
August 11, 2023
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ブラウザ間(ユーザー間)のPubSub機能のためにAppSyncを導入した話
tkg
August 11, 2023
Other Decks in Technology
See All in Technology
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
670
その Valkey 使いこなしていますか?
onk
PRO
5
1.6k
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
900
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
740
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
300
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
150
Optunaの最新リリースv5.0について
pfn
PRO
0
120
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
360
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
WENDY [Excerpt]
tessaabrams
14
40k
For a Future-Friendly Web
brad_frost
184
10k
Between Models and Reality
mayunak
4
500
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Designing for Timeless Needs
cassininazir
1
530
Everyday Curiosity
cassininazir
0
360
Bash Introduction
62gerente
615
220k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Navigating Team Friction
lara
192
16k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Transcript
22 September 2022 1 Copyright © Murata Manufacturing Co., Ltd.
All rights reserved. 22 September 2022 ブラウザ間(ユーザー間) でのPubSub機能を実現 するためにAppSyncを導 入した話 JAWS DAYS 2022プレイベント 株式会社村田製作所 高木広大
2 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 自己紹介 • 名前:高木 広大(たかぎ こうだい) • 所属:株式会社村田製作所(2021年中途入社) • 役割:SWE、(SRE) • 趣味:バスケ、温泉、筋トレ
3 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 Agenda • サービス(NAONA)についての概要 • 解決したい課題と技術選定 • 開発チームで初採用の技術を導入する際にやったこと • CI/CD Pipelineについて
4 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 サービス(NAONA)につ いての概要
5 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 サービス(NAONA)概要 • 対面、非対面(Web会議など)のコミュニケーションを簡単に取得・ 分析することができるコミュニケーション解析プラットフォーム 対面(オフライン) 非対面(Web会議) 1対1面談(2人) 複数人会議(3人以上) NAONA利用環境 コミュニケーション解析人数 × → 提供方法 定量化データ Webアプリケーション
6 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 NAONA上で提供しているアプリケーション 1on1 GroupDiscussion 1on1コミュニケーションを解析 →良好なコミュニケーションの支援 複数人コミュニケーションを解析 →定量的な評価を支援 →運用の効率化(自動化)
7 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 全体のアーキテクチャ概要
8 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 解決したい課題と技術選定
9 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 解決したい課題 • アプリケーションの利用中(1on1やGroupDiscussion)に管理者が設 定変更や情報更新したことをユーザーにリアルタイムで通知したい 機能イメージ
10 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 結論 • AppSyncのMutation/Subscriptionを使うことで課題を解決 👉 AppSyncの説明となぜその結論に至ったのかを以下で説明します
11 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 AWS AppSyncとは 参考:AWS Black Belt Online Seminar「AWS AppSync」
12 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 そもそもGraphQLとは 参考:AWS Black Belt Online Seminar「AWS AppSync」
13 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 改めてAppSyncとは 参考:AWS Black Belt Online Seminar「AWS AppSync」
14 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 AppSyncで構築するGraphQL API 参考:AWS Black Belt Online Seminar「AWS AppSync」
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 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 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 補足: 導入後の全体アーキテクチャ
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 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 チームで初採用の技術 を導入する際にやった こと
20 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 開発勉強会やSAに相談 • 2回にかけてチーム内で勉強会を実施し、GraphQLの概要やAppSyncでの アーキテクチャなどについて理解を深めた • AWSのSolution Architectの方との相談の場を設けていただき、実現したい ことや幾つかのアイデアについての議論した
21 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 クライアント側の実装方法の調査 • クライアント側の実装方法について以下を調査 – Amplify Library – AppSyncClient (SDK) – Apollo Client, Vue Apollo 👉 Amplify Libraryが実装/導入のコストは最も低そう 👉 実装例等をフロントエンドチームに共有・連携した ※ オフライン(ネットワーク未接続時)からの復旧する処理などが必要 な場合で選択は変わる
22 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 CI/CD Pipelineについて
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 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 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 SAM Pipeline を適用したCICD Pipeline全体像
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 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 まとめ
28 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 まとめ • 管理者からユーザーへリアルタイムで通信・通知する機能を実現するため にAppSyncを採用した • 当初の想定していた利用シーン以外でも今回構築したAPIが使われるケース が増えてきている • 導入したことのない技術・最新技術を使うことが最適解とは限らないが、 導入するために組織内でのベースライン構築や導入のハードルを下げる活 動も大切だと実感しました – 結果的に自分自身の理解も深まる – (導入に対して特に否定的な雰囲気はなく、ありがたかった) • SAなど第三者への相談も重要だが、最終的にはチームでの意思決定と推進 • 小規模/簡単なAPIやリソースでもCI/CD Pipelineをちゃんと構築すると、 別の開発者がエンハンスしやすいなどメリットを感じた
29 Copyright © Murata Manufacturing Co., Ltd. All rights reserved.
22 September 2022 ご視聴ありがとうございました。