Submit Search
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
0 likes
262 views
虎の穴 開発室
Deno Deploy を使うことを前提とした upstashの 使い方、使い様、サンプルなどを共有する
Technology
Read more
1 of 20
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
More Related Content
PDF
DatadogでAWS監視やってみた
tyamane
PDF
Beyond the Twelve-Factor App
Kazuya Takahashi
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
PPTX
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
オラクルエンジニア通信
PDF
DevOps with Database on AWS
Amazon Web Services Japan
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
PDF
そんなトランザクションマネージャで大丈夫か?
takezoe
DatadogでAWS監視やってみた
tyamane
Beyond the Twelve-Factor App
Kazuya Takahashi
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
オラクルエンジニア通信
DevOps with Database on AWS
Amazon Web Services Japan
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
そんなトランザクションマネージャで大丈夫か?
takezoe
What's hot
(20)
PDF
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
オラクルエンジニア通信
PDF
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
Amazon Web Services Japan
PDF
Open Match Deep Dive
Samir Hammoudi
PDF
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
PPTX
基礎から学ぶ? EC2マルチキャスト
Noritaka Sekiyama
PDF
インメモリーデータグリッドの選択肢
Masaki Yamakawa
PDF
Akkaとは。アクターモデル とは。
Kenjiro Kubota
PDF
SharePoint Framework Extension 基礎講座
Hiroaki Oikawa
PDF
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
Mineaki Motohashi
PPTX
はじめての datadog
Naoya Nakazawa
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
PDF
俺の俺による俺のための App Service Environment
Sunao Tomita
PDF
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda
PDF
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
オラクルエンジニア通信
PDF
Vacuum徹底解説
Masahiko Sawada
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
PPTX
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
PDF
20190320 AWS Black Belt Online Seminar Amazon EBS
Amazon Web Services Japan
PDF
初心者向けWebinar AWSで開発環境を構築しよう
Amazon Web Services Japan
PDF
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
あなたのクラウドは大丈夫?NRI実務者が教えるセキュリティの傾向と対策 (Oracle Cloudウェビナーシリーズ: 2021年11月24日)
オラクルエンジニア通信
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
Amazon Web Services Japan
Open Match Deep Dive
Samir Hammoudi
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
基礎から学ぶ? EC2マルチキャスト
Noritaka Sekiyama
インメモリーデータグリッドの選択肢
Masaki Yamakawa
Akkaとは。アクターモデル とは。
Kenjiro Kubota
SharePoint Framework Extension 基礎講座
Hiroaki Oikawa
Snowflake Architecture and Performance(db tech showcase Tokyo 2018)
Mineaki Motohashi
はじめての datadog
Naoya Nakazawa
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
Ohyama Masanori
俺の俺による俺のための App Service Environment
Sunao Tomita
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda
オンプレミスからクラウドへ:Oracle Databaseの移行ベストプラクティスを解説 (Oracle Cloudウェビナーシリーズ: 2021年2月18日)
オラクルエンジニア通信
Vacuum徹底解説
Masahiko Sawada
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
20190320 AWS Black Belt Online Seminar Amazon EBS
Amazon Web Services Japan
初心者向けWebinar AWSで開発環境を構築しよう
Amazon Web Services Japan
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
Ad
More from 虎の穴 開発室
(20)
PDF
FizzBuzzで学ぶJavaの進化
虎の穴 開発室
PDF
Railsのデバッグ どうやるかを改めて確認する
虎の穴 開発室
PDF
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴 開発室
PDF
toranoana.deno #6 アジェンダ 採用説明
虎の穴 開発室
PDF
Deno 向け WEB 開発用のツールを作ったので 紹介します
虎の穴 開発室
PDF
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
PDF
GCPの画像認識APIの紹介
虎の穴 開発室
PDF
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
虎の穴 開発室
PDF
GitHub APIとfreshで遊ぼう
虎の穴 開発室
PDF
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
PDF
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
虎の穴 開発室
PDF
セキュリティを強化しよう!CloudArmorの機能解説
虎の穴 開発室
PDF
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
PDF
Amplify Studioを使ってみた
虎の穴 開発室
PDF
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
PDF
【Saitama.js】Denoのすすめ
虎の穴 開発室
PDF
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴 開発室
PDF
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
PDF
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴 開発室
PDF
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
虎の穴 開発室
FizzBuzzで学ぶJavaの進化
虎の穴 開発室
Railsのデバッグ どうやるかを改めて確認する
虎の穴 開発室
虎の穴ラボ エンジニア採用説明資料 .pdf
虎の穴 開発室
toranoana.deno #6 アジェンダ 採用説明
虎の穴 開発室
Deno 向け WEB 開発用のツールを作ったので 紹介します
虎の穴 開発室
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 –
虎の穴 開発室
GCPの画像認識APIの紹介
虎の穴 開発室
【エンジニアの勉強法ハックLT- vol.7】ゲームから学んだ勉強のこと
虎の穴 開発室
GitHub APIとfreshで遊ぼう
虎の穴 開発室
通販開発部の西田さん「通販開発マネジメントの5ルール」
虎の穴 開発室
社内DX推進!非エンジニア向けにプログラミング講座を実施してみた!
虎の穴 開発室
セキュリティを強化しよう!CloudArmorの機能解説
虎の穴 開発室
JavaScript LT会 〜 React.js Node.js歓迎 〜 Deno で やってみるweb開発
虎の穴 開発室
Amplify Studioを使ってみた
虎の穴 開発室
いいテスト会 (スプリントレビュー) をやろう!
虎の穴 開発室
【Saitama.js】Denoのすすめ
虎の穴 開発室
虎の穴ラボ Tech day#3 チームで戦う!とらのあな通販冬の大感謝祭でのフロント開発について
虎の穴 開発室
【とらのあなラボ Tech Day #3】新規システムにおける技術選定〜GoとgRPCを採用した話〜
虎の穴 開発室
虎の穴ラボ TechDay#3 フルリモート率100%!リモートワークを可能にするマネージメント
虎の穴 開発室
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
虎の穴 開発室
Ad
Deno Deployと組み合わせるのに Upstashをおすすめしたい.pdf
1.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. 2022/08/24 toranoana.deno #8 虎の穴ラボ 奥谷 一陽 Deno Deployと組み合わせるのに upstashをおすすめしたい
2.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. 自己紹介 奥谷 一陽 所属:虎の穴ラボ株式会社 担当:とらコインSHOPなど新規事業系の開発 興味:TypeScript、Deno おすすめコンテンツ: 『プラネテス』 『暴太郎戦隊ドンブラザーズ』 Twitter:@okutann88
3.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deploy どのくらい使っ てますか?
4.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deploy と組み合わせる前提で、 オススメSaaSを紹介したい
5.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. upstash 参考:https://upstash.com/
6.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. upstash - カルフォルニアの Upstash, Inc. が運営するSaaS - Redis Kafka qStashを提供 - キーワード:グローバル 低レイテンシ 上限付きの従量課金
7.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. upstash の Redis - 無料プラン:10K コマンド/日 - 有料プラン:0.2 $/100Kコマンド、月間最大 $120 まで - 公式が、deno.land/x にモジュールを公開済み https://deno.land/x/upstash_redis@v1.12.0-next.1 - Redisと銘打つものの、内部でfetchが使用されたhttpリクエストを使用 「Redisっぽく動く」 「Redis互換の」ぐらいの感触
8.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. upstash の Redis の使用例 import { Application, Router, Context } from "https://deno.land/x/oak/mod.ts"; import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"; const redis = new Redis({ url: Deno.env.get("UPSTASH_URL"), token: Deno.env.get("UPSTASH_TOKEN"), }); const router = new Router(); router.get("/", async (context: Context) => { const count = await redis.get("count"); context.response.body = count; }); router.post("/update", async (context: Context) => { await redis.incr("count"); context.response.body = "updated"; }); const app = new Application(); app.use(router.routes()); app.use(router.allowedMethods()); await app.listen({ port: 8080 });
9.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. upstash の Redis で実際にやりたいのは? - キャッシュの仕組みが有ったときに、Webサービスで扱いたいのは 「セッション」では無いだろうか(偏見かもしれません) - oak_session モジュール + upstash_redis モジュール は組み合わせ可能? => できる ただし...、 オプションが必須
10.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. upstash の Redis を oak_session で使う import { Application, Context, Router } from "https://deno.land/x/oak/mod.ts"; import { RedisStore, Session } from "https://deno.land/x/oak_sessions/mod.ts"; import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"; const redis = new Redis({ url: Deno.env.get("UPSTASH_URL")!, token: Deno.env.get("UPSTASH_TOKEN")!, automaticDeserialization: false, // <== ポイント }); const router = new Router(); router.get("/", async (context: Context) => { const name = await context.state.session.get("name"); context.response.body = ` <!DOCTYPE html> <html> <body> <div> ${!name ? "" : "name=" + name} </div> <form method="POST"> <input name="name"> <button type="submit">submit</button> </form> </body> </html> `; }); router.post("/", async (context: Context) => { const form = await context.request.body({ type: "form" }).value; const name = form.get("name"); if (!!name) context.state.session.set("name", name); context.response.redirect("/"); }); type AppState = { session: Session; }; const app = new Application<AppState>(); const store = new RedisStore(redis); app.use(Session.initMiddleware(store)); app.use(router.routes()); app.use(router.allowedMethods()); await app.listen({ port: 8080 }); upstash_redisは、デフォルトで、jsonの自動デシリアライズが ONになっているので この機能を停止させる デシリアライズは、oak_session に任せる!
11.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. qStash ? - upstashの独自サービス - サーバーレス、エッジランタイム向け、HTTPベースメッセージング/ スケジューリングソリューション - 無料プラン:50リクエスト/日 - 有料プラン:50Kリクエスト/日 0.4 $/1Kリクエスト 月間最大 $450 - 最大のポイント Deno Deploy をスケジュール実行できる => さらに、upstash公式が deno deploy をサポート
12.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. qStash の deno deploy サポート
13.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deployで qStash 使ってみる 以下の内容を実装する - qStashから1分に1回 Deno Deploy に置いたアプリを呼び出す - 呼び出しに対応して upstash Redisに保管した値をカウントする - ブラウザからアクセスし値を参照する
14.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deployで qStash 使ってみる ポイント - 公式が、deno.land/x にモジュールを公開済み - https://deno.land/x/upstash_qstash@v0.1.7 - qStashからのリクエストであることを upstash_qstash モジュールを 使い検証すること
15.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deploy で qStash を使う実装例 import { Application, Router, Context } from "https://deno.land/x/oak/mod.ts"; import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"; import { Receiver } from "https://deno.land/x/upstash_qstash/mod.ts"; const redis = new Redis({ url: Deno.env.get("UPSTASH_URL"), token: Deno.env.get("UPSTASH_TOKEN"), }) const receiver = new Receiver({ currentSigningKey: Deno.env.get("QSTASH_CURRENT_SIGNING_KEY")!, nextSigningKey: Deno.env.get("QSTASH_NEXT_SIGNING_KEY")!, }); const router = new Router(); router.get("/", async(context:Context) => { const count = await redis.get("count"); context.response.body = count; }); router.post("/update", async(context:Context) => { const isValid = await receiver.verify({ // <== ポイント signature: context.request.headers.get("Upstash-Signature")!, body: await context.request.body({ type: "text" }).value, }).catch((err: Error) => { console.error(err); return false; }); if (!isValid) { return new Response("Invalid signature", { status: 401 }); } await redis.incr("count"); return new Response("OK", { status: 200 }); }); const app = new Application(); app.use(router.routes()); app.use(router.allowedMethods()); await app.listen({ port: 8080 });
16.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. 現在動作中です。 一分に一回カウントアップされます。 https://late-otter-59.deno.dev/
17.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. まとめ - Deno Deployの有効活用のため、upstashの組み合わせオススメ - 出来ることが、大きく広がる - Deno Deploy 起点のフルサーバーレスなサービスを開発できる可能性 例えば?
18.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deploy 起点フルサーバーレス サービス インフラ 構想 deno deploy ・APIサーバー ・DB管理 ・ストレージ キャッシュ呼び出し Redis qStash バッチ処理呼び出し フロントサーバー
19.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. Deno Deploy 起点フルサーバーレス サービス インフラ 構想 deno deploy フロントサーバー ・APIサーバー ・DB管理 ・ストレージ キャッシュ呼び出し Redis qStash バッチ処理呼び出し deno deploy + + bunny cdn ... API呼び出し
20.
Copyright (C) 2021
Toranoana Inc. All Rights Reserved. ありがとうございました
Download