Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
定期料金と従量課金を組み合わせたサブ スクリプション型サービスを作る/jp-stripe-02
Serverless Operations
June 09, 2021
Technology
0
170
定期料金と従量課金を組み合わせたサブ スクリプション型サービスを作る/jp-stripe-02
Serverless Operations
June 09, 2021
Tweet
Share
More Decks by Serverless Operations
See All by Serverless Operations
サーバーレス時代に共創型受託開発をやることの価値/sls-jutaku
slsops
0
450
Auth0とクラウドサービスを組み合わせて作るメディアコマースの開発事例/auth0-media-commerce
slsops
0
380
Shifter HeadlessとSaaSを組み合わせた サーバーレスECサイトの構築/shifter-serverless-ec
slsops
0
1.4k
サーバーレスにおいてどのようにDynamoDBとRDSを使い分ければ良いのか/serverless-webinar-02
slsops
9
2.6k
実践AWSサーバーレスアーキテクチャ導入の基礎とその概念/serverless-webinar-01
slsops
0
390
サーバーレス時代に共創型受託開発をやることの価値/jawsdays2020
slsops
0
540
サーバーレス時代に 共創型受託開発をやることの価値/slsdaysfukuoka2019
slsops
1
1.9k
オープンソースで加速するサーバーレスの未来/serverless will be
slsops
0
65
Other Decks in Technology
See All in Technology
データをモデリングしていたら、組織をモデリングし始めた話 / engineers-in-carta-vol3-data-engineer
pei0804
4
3.2k
JFrog 最新情報 - JFrog DevOps プラットフォームの今までとこれから / jfrog-update-for-devopskaigi-2022
tsuyo
0
140
LINEのB2Bプラットフォームにおけるトラブルシューティング2選
line_developers
PRO
3
280
ログ基盤をCloudWatchLogからNewRelic Logs + S3に変えたら 利便性も上がってコストも下がった話
onohiroshi1
0
170
What's Data Lake ? Azure Data Lake best practice
ryomaru0825
2
730
Scrum Fest Osaka 2022 フルリモート下でのチームビルディング
moritamasami
2
1k
2022年度新卒技術研修「DNS」講義
excitejp
PRO
0
350
Data in Google I/O - IO Extended GDG Seoul
kennethanceyer
0
150
Implementing Kubernetes operators in Java with Micronaut - TechWeek Java Summit 2022
alvarosanchez
0
110
オンラインでのサーバー切替事例紹介/ColoplTech-05-01
colopl
0
160
組織の崩壊と再生、その中で何を考え、感じたのか。 そして本当に必要だったもの
kosako
1
1.3k
Custom GitHub Actions by Java
kazamori
0
280
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_i
23
15k
What's new in Ruby 2.0
geeforr
336
30k
Atom: Resistance is Futile
akmur
255
20k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
GraphQLとの向き合い方2022年版
quramy
16
8.3k
Bootstrapping a Software Product
garrettdimon
296
110k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
A Modern Web Designer's Workflow
chriscoyier
689
180k
How to train your dragon (web standard)
notwaldorf
58
3.9k
A better future with KSS
kneath
225
15k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Building Flexible Design Systems
yeseniaperezcruz
310
34k
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