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
定期料金と従量課金を組み合わせたサブ スクリプション型サービスを作る/jp-stripe-02
Search
Serverless Operations
June 09, 2021
Technology
620
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
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
5.7k
「うまく言えない」検索を叶える ― OpenSearchと生成AIで作る 類似プロジェクト検索
slsops
1
82
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
3
570
Lambdalithアーキテクチャにより大きく進化するWeb APIの世界/lambdalith
slsops
5
1.3k
ITベンダーから見る内製化支援の本質/in-house-dev
slsops
1
860
Case Study for Repurposing Video Content With Generative AI / AWS Community Day Taiwan 2024
slsops
0
520
サーバーレスなユーザー認証認可の考慮事項と実践的プラクティス紹介 / slsdays-tokyo-2024
slsops
11
4.6k
サーバーレスで負荷試験を行う必要性と実践的プラクティスの紹介/slsdays-tokyo-2023
slsops
4
2.8k
Serverless Web Hosting Strategy For Modern Front-end Application
slsops
0
500
Other Decks in Technology
See All in Technology
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
690
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
140
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
300
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
0
190
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
2
510
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
1
290
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
240
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
530
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
180
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.3k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
Featured
See All Featured
We Are The Robots
honzajavorek
0
250
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
ラッコキーワード サービス紹介資料
rakko
1
3.7M
Designing Experiences People Love
moore
143
24k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Why Our Code Smells
bkeepers
PRO
340
58k
Un-Boring Meetings
codingconduct
0
320
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
600
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
Optimising Largest Contentful Paint
csswizardry
37
3.7k
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