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
定期料金と従量課金を組み合わせたサブ スクリプション型サービスを作る/jp-stripe-02
Search
Serverless Operations
June 09, 2021
Technology
650
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
定期料金と従量課金を組み合わせたサブ スクリプション型サービスを作る/jp-stripe-02
Serverless Operations
June 09, 2021
More Decks by Serverless Operations
See All by Serverless Operations
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
180
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
6k
「うまく言えない」検索を叶える ― OpenSearchと生成AIで作る 類似プロジェクト検索
slsops
1
110
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
3
690
Lambdalithアーキテクチャにより大きく進化するWeb APIの世界/lambdalith
slsops
5
1.5k
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
920
Case Study for Repurposing Video Content With Generative AI / AWS Community Day Taiwan 2024
slsops
0
580
サーバーレスなユーザー認証認可の考慮事項と実践的プラクティス紹介 / slsdays-tokyo-2024
slsops
11
4.8k
サーバーレスで負荷試験を行う必要性と実践的プラクティスの紹介/slsdays-tokyo-2023
slsops
4
3.1k
Other Decks in Technology
See All in Technology
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
170
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.3k
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
870
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
370
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
270
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.5k
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
140
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
140
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.5k
hackers_champloo_2026_tidb
makocchi
0
140
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
400
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
The agentic SEO stack - context over prompts
schlessera
0
970
Navigating Team Friction
lara
192
16k
Producing Creativity
orderedlist
PRO
348
41k
Music & Morning Musume
bryan
48
7.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
Transcript
Serverless Operations / Sonu Kim ఆظྉۚͱैྔ՝ۚΛΈ߹Θͤͨαϒ εΫϦϓγϣϯܕαʔϏεΛ࡞Δ
ϓϩϑΟʔϧ ۚɹઋ༏Kim Sonu ʮ͍Λ͙͢ʹܗʹͰ͖Δʯ͜ͱͰ ɹαʔόʔϨεʹίϛοτ͍ͯ͠Δ ϑϩϯτΤϯυʗόοΫΤϯυΛΘͣɺ ָ͘͠αʔϏεΛ࡞Δͷ͕ੜ͖͕͍
αʔόʔϨεͰ ΫϥυͷՁΛ࠷େݶʹ Serverless Operations ͜Ε·ͰάϩʔόϧͷୈҰઢͰ ഓ͖ͬͯͨΫϥυٕज़ʢ"84ʵΞϚκϯΣϒαʔϏεʣͷ ๛ͳ࣮ͱݟΛ׆͔͠ɺ͓٬͞·ͷαʔόʔϨε ʹؔ͢Δ͞·͟·ͳ՝Λղܾ͠·͢ɻ ձࣾհ serverless.co.jp
ຊͷςʔϚ ఆظྉۚͱैྔ՝ۚΛΈ߹ΘͤͨྉۚମܥΛ4USJQFΛͬ ࣮ͯݱ͢Δํ๏Λ۩ମతʹհ "84ͰͷαʔόʔϨεͳγεςϜߏͷύλʔϯΛհ
࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ ʢ"1*6TBHFʣ
࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ ʢ"1*6TBHFʣ ຖ݄ܾ·ͬͨྉۚΛٻ "1*ͷݺͼग़͠ճʹԠͯ͡ ྉۚΛܭࢉͯ͠ٻ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄
࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ ʢ"1*6TBHFʣ ຖ݄ܾ·ͬͨྉۚΛٻ "1*ͷݺͼग़͠ճʹԠͯ͡ ྉۚΛܭࢉͯ͠ٻ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄ αϒεΫ͚ͩͰͳ͘ɺ
ैྔ՝ۚ·Ͱूܭͯ͠ ٻʹөͤ͞ΔΑ͏ͳ ࣮ରԠ͕ඞཁʹͳͬͯ͘Δ αʔϏε։࢝·Ͱྉۚମܥ͕ ֬ఆ͠ͳ͍ɺޙ͔Βॊೈʹ ՝ۚϞσϧΛมߋͰ͖ΔΑ͏ʹ͍ͨ͠
࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ ʢ"1*6TBHFʣ ຖ݄ܾ·ͬͨྉۚΛٻ "1*ͷݺͼग़͠ճʹԠͯ͡ ྉۚΛܭࢉͯ͠ٻ 料金体系
→ ”継続” として商品登録 ・段階的/数量ベースの料金体系として商品登録 ・Stripeへ使用量を報告し、毎月の請求に反映させる
αϯϓϧͷΛొ͢Δ ᶃ4BOECPYr#BTJD1MBOɿҰൠతͳఆظߪೖ͚ͷΛొ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճɺैྔ՝͚ۚͷΛొ
αϯϓϧͷΛొ͢Δ ᶃ4BOECPYr#BTJD1MBOɿҰൠతͳఆظߪೖ͚ͷΛఆ 料金体系モデル: “標準の料金体系” “継続”
αϯϓϧͷΛొ͢Δ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճɺैྔ՝͚ۚͷΛొ 料金体系モデル: “段階的な料金体系” ैྔ՝͚ۚͷྉۚମܥͱͯ͠ ʮஈ֊తʯͱʮྔϕʔεʯͷ ̎छྨ͕͋Δ 具体的な従量課金の料金体系を設定
αϯϓϧͷΛొ͢Δ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճɺैྔ՝͚ۚͷΛొ 料金体系モデル: “段階的な料金体系” 具体的な従量課金の料金体系を設定 ैྔ՝͚ۚͷྉۚମܥͱͯ͠ ʮஈ֊తʯͱʮྔϕʔεʯͷ ̎छྨ͕͋Δ 例えば1ユニットあたりの金額を算定する方式として 「1-100回目は◦◦円、101-200回目は◦◦円」と段階的に
異なる料金を積み上げていく(段階式) 「合計回数100回以下の場合◦◦円、合計回数200回以下の場合は ◦◦円、合計回数が201回以上の場合は◦◦円」と 合計数ベースで単価を決める(数量ベース)
༻ྔΛܭଌ͢ΔΦϓγϣϯΛ༗ޮԽ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճɺैྔ՝͚ۚͷΛొ 「Usage is metered(使用量が計測されます)」にチェック 「Charge for metered usage by(計測された使用量に基づく請求)」
→ 適宜システム仕様に合わせて選択
༻ྔΛܭଌ͢ΔΦϓγϣϯΛ༗ޮԽ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճɺैྔ՝͚ۚͷΛొ 「Usage is metered(使用量が計測されます)」にチェック 「Charge for metered usage by(計測された使用量に基づく請求)」
→ 適宜システム仕様に合わせて選択 ˞ޙ΄Ͳઆ໌͢Δʮ༻ྔͷใࠂʯ ͕Ͱ͖ΔΑ͏ʹͳΔ ˞࣮ࡍʹ֤Ϣʔβʔͷ༻ྔΛTUSJQF ͷ"1*ܦ༝ͰϨϙʔτ͢Δ͚ͩͰɺ ొ࣌ʹઃఆͨ͠ྉۚςʔϒϧʹ߹ Θͤͯ՝ֹ͕ۚٻॻʹө͞ΕΔ
ސ٬ٴͼαϒεΫϦϓγϣϯͷొ ސ٬ɺࢧใɺαϒεΫϦϓγϣϯΛొ ˞͓ࢼ͠Ͱܾࡁొը໘ͷσϞΛ࡞ͬͯΈ͍ͨ߹ɺެࣜͷ$IFDLPVUαϯϓϧ͕ศར e// https://github.com/stripe-samples/checkout-single-subscription e// server/node/server.js L.50 - econst
session = await stripe.checkout.sessions.create({ mode: 'subscription', payment_method_types: [ 'card' ], line_items: [ { price: '{PRICE_ID_PLAN}', quantity: 1 }, { price: '{PRICE_ID_API_USAGE}' } ], // ...
ސ٬ٴͼαϒεΫϦϓγϣϯͷొ 先程登録した2つの商品 (定額課金・従量課金)が 表示されている ˞Χʔυ൪߸TUSJQFςετϞʔυ ઐ༻ͷ൪߸Λ༻
αϒεΫϦϓγϣϯొޙʹٻΛ֬ೝ͢Δͱɾɾɾ ˞ఆظྉۚʢ#BTJD1MBOʣͷྉ͕ۚө͞Ε͍ͯΔ
ैྔ՝ۚͷ༻ྔΛใࠂ͢Δɹ e[request sample] ePOST /v1/subscription_items/:subscription_item_id/usage_records eauthorization: Bearer {SECRET_API_KEY} econtent-type: application/x-www-form-urlencoded
etimestamp=1614752111&quantity=250&action=set e[response sample] e200 OK e{ e "subscription_item": "xxx", e "quantity": 250, e "timestamp": 1615097751, e // ... e} ैྔ՝ۚ .FUFSFE #JMMJOH ͷֹۚΛөͤ͞ΔͨΊʹɺސ٬͕ར༻ͨ͠ྔ Ϣ χοτ Λͱͯ͠4USJQFʹૹ৴ʢ˞6TBHF3FDPSET"1*ʣ ˞1BUIύϥϝʔλʹސ٬ͷఆظࢧͷ μογϡϘʔυը໘͔ΒऔಘͰ͖Δ ʮαϒεΫϦϓγϣϯΞΠςϜ*% ʢTJ@YYYʣʯΛࢦఆͯ͠ྔΛૹ৴ ˞4USJQF"1*ʹ3BUF-JNJU͕͋ΔͷͰҙ ʢMJWFNPEFͰSFBE XSJUFQFSTFDPOEʣ IUUQTTUSJQFDPNEPDTSBUFMJNJUT
ैྔ՝ۚͷ༻ྔΛใࠂ͢Δ ༻ྔΛใࠂͨ͠ޙͷٻใΛ֬ೝ
ΞυϗοΫʹٻ߲ͱֹۚΛՃ͢Δํ๏͋Δ αϒεΫϦϓγϣϯͷظؒதʹ࣍ճͷٻ߲Λਵ࣌ՃͰ͖Δ"1*͋Δ ݮֹՄೳͰɺΞυϗοΫʹ࣍ճٻͷֹۚΛௐઅɾਫ਼ࢉ͢Δͱ͍͍ͬͨํ͕Ͱ͖ͦ͏ IUUQTTUSJQFDPNEPDTCJMMJOHJOWPJDFT TVCTDSJQUJPOBEEJOHVQDPNJOHJOWPJDFJUFNT
(FPMPOJB ΦϯϥΠϯਤαʔϏε ͷࣄྫ ྉۚମܥ͕ྲྀಈతͩͬͨΓɺैྔ՝ۚΛεΫϥονͰ։ൃ͢Δෛ୲͕͋ͬͨ ˠมߋՄೳͰॊೈͳΈͷ࣮ݱͱ࣮ෛ୲Λܰݮ ΧϜϯϲε ĖຌᲦό⑲τ ܭଌσʔλͷ&5-ॲཧΛܦͯ%ZOBNP%#อଘ ᑿᠭᅗΤᏄຓ -BNCEB
"QQMJDBUJPO 4 "UIFOB 'BSHBUF %ZOBNP%# -BNCEB 4 %ZOBNP%# 4USFBNT e{ e “subject_id”: "...", e “subscription_item”: "...", e "quantity": 100, e "timestamp": 1615097751, e // … e} ˞ࣄྫհهࣄͪ͜ΒIUUQTTFSWFSMFTTDPKQCMPH
"84αʔόʔϨεͳγεςϜߏͷྫ ܭଌϩάʢNFUSJDMFWFMʣΛऩू͠ɺ&5-ॲཧΛܦͯ%ZOBNP%#ʹ֨ೲɺ %ZOBNP%#4USFBNTΛར༻ͯ͠ॱ࣍༻ྔΛૹ৴͢Δ ΧϜϯϲε ĖຌᲦό⑲τ ܭଌσʔλͷ&5-ॲཧΛܦͯ%ZOBNP%#อଘ ᑿᠭᅗΤᏄຓ -BNCEB "QQMJDBUJPO 'BSHBUF
%ZOBNP%# -BNCEB 4 %ZOBNP%# 4USFBNT ,JOFTJT'JSFIPTF e{ e “subject_id”: "...", e “subscription_item”: "...", e "quantity": 100, e "timestamp": 1615097751, e // … e}
·ͱΊ ఆظྉۚͷͱैྔ՝ۚͷΛ྆ํొ͠ɺαϒεΫϦϓγϣϯ͢Δ ैྔ՝ۚͷ༻ྔΛܭଌ͢ΔΦϓγϣϯΛ༗ޮԽ͠ɺ "1*ܦ༝Ͱ༻ྔΛใࠂ͢Δͱٻʹө͞ΕΔ ैྔ՝ۚʹ͏՝ۚϩδοΫΛࣗલͰ࣮͢Δඞཁ͕ͳ͘ɺ4USJQFΛ͍͜ͳͦ͏ αʔόʔϨεͷྑ͞Λ׆͔ͯ͠ॊೈͳઃܭΛࢦ͠·͠ΐ͏ ˞ຊͷ͓ͪ͜Βͷϒϩάهࣄͷ༰Λݩʹ͍ͯ͠·͢ɻ߹Θͤͯ͝ࢀߟ͍ͩ͘͞ɻ IUUQTTFSWFSMFTTDPKQCMPH
serverless.co.jp