Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Momento Topics使ってみた
Search
bohnen
September 14, 2023
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Momento Topics使ってみた
bohnen
September 14, 2023
More Decks by bohnen
See All by bohnen
Momento会 #9 TiDB ServerlessとMomentoの話
bohnen
0
110
Cloud on the beach - いろいろな雲のかたち
bohnen
1
100
TiUG #1 TiDB overview and update
bohnen
0
300
みんなのPython勉強会: 最近のDB事情 TiDB Serverlessの紹介
bohnen
1
890
Postman Tokyo Meetup - Serverless Integration with Flows
bohnen
2
270
Serverless Meetup Re:boot 福岡 TiDB Serverlessの紹介
bohnen
1
190
Serverless Meetup Fukuoka Workshop TiDB
bohnen
0
120
TiUG #0 発表資料: TiDBの紹介と最新情報
bohnen
0
310
Momento会 #8 Serverless with TiDB/Momento/Postman
bohnen
0
110
Other Decks in Programming
See All in Programming
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
260
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
550
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
5
1.8k
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
190
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.3k
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
260
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
390
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
270
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
310
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
290
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
110
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
820
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
360
Transcript
Momento Topics 使ってみた bohnen
そもそもTopicsと ? • いわゆる Pub-Sub 型 メッセージチャネル 一つで、疎結合・非同期なシステム間連 携を実現する •
一つ メッセージを複数 宛先が読み取る ことが可能 • AWSだとSNSとかが該当 • 類似サービス ◦ JMS互換 キュー製品すべて ◦ Redis pub-sub ◦ Kafka ◦ SNS (AWS) ◦ EventBridge (AWS) エンタープライズアーキテクチャパターン より
金融業界で Topics 間に入っているKinesisがシ ステム間 連携を担ってい る。 ここで ポイント 、 •
データ みに依存し た処理(関数型っぽ い) • 並列に処理が実行で きる。例え 株ならそ れぞれ 銘柄毎 • 処理がしょっちゅう増 える・変わる。いわゆ るマイクロサービス AWS金融リファレンスアーキテクチャより
サンプルプログラム(Momento FX!) Rate Publisher Order Executor (本来 )LP 価格に利益を乗せて顧客に提供する 価格
topicsを使ってリアルタイ ムに同報通信 注文 RESTエンドポイントを呼び 出し 注文が実勢価格よりも一定以上 乖離しているとnothing(失効) 実際 LPに投げる LP(Liquidity Provider) 業者向けに価格を提供して、 そ 値段で注文を受け付け る業者 金融機関や取引所など
デモ
Rate Publisher 基本これだけ • TopicClient 初期化 • Publish 今回 websocketでレートを提供している
bitflyer lightning APIを使って、レートを取 得する度にpublishしている (同時に、最新価格を cacheにも保存し、 Execution時に参照する) ※ 全然関係ないけどレート 配信頻度低す ぎない...?
Token API Server Topicsにブラウザから直接アクセスするため に必要な一時トークンを発行する API Chatアプリ サンプルからコードを拝借 Next.js わからなかった
で使う を諦め、 fastify スタンドアロンサーバとして実装して います。 ここで 接続してきた人に 誰でもトークンを 返していますが、Chatアプリサンプル ように 認証済み 人に み返す がベターでしょ う。(認証APIも課金対象な かな?)
UI - トークン 取得 Chatアプリ サンプルからコードを拝借 先ほど REST APIからトークンを取得して、 CredentialProviderを初期化。
ここからtopicClientが取得できる ※変数 命名が変だったり、 cache使ってな い で不要だったり余計なも があります。
UI - Topicから 取得 topicClientを使って、topicにsubscribeしま す。こ ときにコールバック関数を渡して、そ れが価格が届いた時 処理になります。 UI側で
useEffect内でtopicにsubscribeし、 コールバックでStateを変更して画面に反映し ています。
使ってみて • Web-sdk 楽。間にいちいちwebsocket サーバを立てる必要がない で、テ ストも簡単(クライアントjavascriptだけ書いてでテストできる) • 実務で利用する場合 同時接続数を気にする必要がある。これが万単位まで
できるとかなり便利な で ?! • 一時トークン 発行がちょっと手間。Signed URLとかでAPIなしで初期化できる ようにならないかなあ • Typescriptサポートとcopilotが強力すぎて開発体験が爆上がり • レイテンシ 往復20ms位出る で気になる場合 AWS/GCP内でクライアント を動かした方がよいかもしれない。