Slide 1

Slide 1 text

Serverless Operations / Sonu Kim ఆظྉۚͱैྔ՝ۚΛ૊Έ߹Θͤͨαϒ εΫϦϓγϣϯܕαʔϏεΛ࡞Δ

Slide 2

Slide 2 text

ϓϩϑΟʔϧ ۚɹઋ༏Kim Sonu ʮ૝͍Λ͙͢ʹܗʹͰ͖Δʯ͜ͱͰ ɹαʔόʔϨεʹίϛοτ͍ͯ͠Δ ϑϩϯτΤϯυʗόοΫΤϯυΛ໰Θͣɺ ָ͘͠αʔϏεΛ࡞Δͷ͕ੜ͖͕͍

Slide 3

Slide 3 text

αʔόʔϨεͰ Ϋϥ΢υͷՁ஋Λ࠷େݶʹ Serverless Operations ͸͜Ε·ͰάϩʔόϧͷୈҰઢͰ ഓ͖ͬͯͨΫϥ΢υٕज़ʢ"84ʵΞϚκϯ΢ΣϒαʔϏεʣͷ ๛෋ͳ࣮੷ͱ஌ݟΛ׆͔͠ɺ͓٬͞·ͷαʔόʔϨε ʹؔ͢Δ͞·͟·ͳ՝୊Λղܾ͠·͢ɻ ձࣾ঺հ serverless.co.jp

Slide 4

Slide 4 text

ຊ೔ͷςʔϚ ఆظྉۚͱैྔ՝ۚΛ૊Έ߹ΘͤͨྉۚମܥΛ4USJQFΛ࢖ͬ ࣮ͯݱ͢Δํ๏Λ۩ମతʹ঺հ "84ͰͷαʔόʔϨεͳγεςϜߏ੒ͷύλʔϯΛ঺հ

Slide 5

Slide 5 text

࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ਺ ʢ"1*6TBHFʣ

Slide 6

Slide 6 text

࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ਺ ʢ"1*6TBHFʣ ຖ݄ܾ·ͬͨྉۚΛ੥ٻ "1*ͷݺͼग़͠ճ਺ʹԠͯ͡ ྉۚΛܭࢉͯ͠੥ٻ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄

Slide 7

Slide 7 text

࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ਺ ʢ"1*6TBHFʣ ຖ݄ܾ·ͬͨྉۚΛ੥ٻ "1*ͷݺͼग़͠ճ਺ʹԠͯ͡ ྉۚΛܭࢉͯ͠੥ٻ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄ αϒεΫ͚ͩͰͳ͘ɺ ैྔ՝ۚ෼·Ͱूܭͯ͠ ੥ٻʹ൓өͤ͞ΔΑ͏ͳ ࣮૷ରԠ͕ඞཁʹͳͬͯ͘Δ αʔϏε։࢝·Ͱྉۚମܥ͕ ֬ఆ͠ͳ͍౳ɺޙ͔Βॊೈʹ ՝ۚϞσϧΛมߋͰ͖ΔΑ͏ʹ͍ͨ͠

Slide 8

Slide 8 text

࣮ݱ͍ͨ͜͠ͱͷ֓ཁʢαϒεΫϦϓγϣϯʴैྔ՝ۚʣ #BTJDϓϥϯ݄ "EWBODFEϓϥϯ݄ &OUFSQSJTFϓϥϯ݄ "1*ݺͼग़͠ճ਺ ʢ"1*6TBHFʣ ຖ݄ܾ·ͬͨྉۚΛ੥ٻ "1*ͷݺͼग़͠ճ਺ʹԠͯ͡ ྉۚΛܭࢉͯ͠੥ٻ  料金体系 → ”継続” として商品登録 ・段階的/数量ベースの料金体系として商品登録 ・Stripeへ使用量を報告し、毎月の請求に反映させる

Slide 9

Slide 9 text

αϯϓϧͷ঎඼Λొ࿥͢Δ ᶃ4BOECPYr#BTJD1MBOɿҰൠతͳఆظߪೖ޲͚ͷ঎඼Λొ࿥ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճ਺౳ɺैྔ՝ۚ޲͚ͷ঎඼Λొ࿥

Slide 10

Slide 10 text

αϯϓϧͷ঎඼Λొ࿥͢Δ ᶃ4BOECPYr#BTJD1MBOɿҰൠతͳఆظߪೖ޲͚ͷ঎඼Λ૝ఆ  料金体系モデル: “標準の料金体系” “継続”

Slide 11

Slide 11 text

αϯϓϧͷ঎඼Λొ࿥͢Δ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճ਺౳ɺैྔ՝ۚ޲͚ͷ঎඼Λొ࿥  料金体系モデル: “段階的な料金体系” ैྔ՝ۚ޲͚ͷྉۚମܥͱͯ͠͸ ʮஈ֊తʯͱʮ਺ྔϕʔεʯͷ ̎छྨ͕͋Δ 具体的な従量課金の料金体系を設定

Slide 12

Slide 12 text

αϯϓϧͷ঎඼Λొ࿥͢Δ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճ਺౳ɺैྔ՝ۚ޲͚ͷ঎඼Λొ࿥  料金体系モデル: “段階的な料金体系” 具体的な従量課金の料金体系を設定 ैྔ՝ۚ޲͚ͷྉۚମܥͱͯ͠͸ ʮஈ֊తʯͱʮ਺ྔϕʔεʯͷ ̎छྨ͕͋Δ  例えば1ユニットあたりの金額を算定する方式として  「1-100回目は○○円、101-200回目は○○円」と段階的に  異なる料金を積み上げていく(段階式)  「合計回数100回以下の場合○○円、合計回数200回以下の場合は  ○○円、合計回数が201回以上の場合は○○円」と  合計数ベースで単価を決める(数量ベース)

Slide 13

Slide 13 text

࢖༻ྔΛܭଌ͢ΔΦϓγϣϯΛ༗ޮԽ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճ਺౳ɺैྔ՝ۚ޲͚ͷ঎඼Λొ࿥ 「Usage is metered(使用量が計測されます)」にチェック 「Charge for metered usage by(計測された使用量に基づく請求)」 → 適宜システム仕様に合わせて選択

Slide 14

Slide 14 text

࢖༻ྔΛܭଌ͢ΔΦϓγϣϯΛ༗ޮԽ ᶄ4BOECPYr"1*6TBHFɿ"1*ݺͼग़͠ճ਺౳ɺैྔ՝ۚ޲͚ͷ঎඼Λొ࿥ 「Usage is metered(使用量が計測されます)」にチェック 「Charge for metered usage by(計測された使用量に基づく請求)」 → 適宜システム仕様に合わせて選択 ˞ޙ΄Ͳઆ໌͢Δʮ࢖༻ྔͷใࠂʯ ͕Ͱ͖ΔΑ͏ʹͳΔ ˞࣮ࡍʹ֤Ϣʔβʔͷ࢖༻ྔΛTUSJQF ͷ"1*ܦ༝ͰϨϙʔτ͢Δ͚ͩͰɺ঎ ඼ొ࿥࣌ʹઃఆͨ͠ྉۚςʔϒϧʹ߹ Θͤͯ՝ֹ͕ۚ੥ٻॻʹ൓ө͞ΕΔ

Slide 15

Slide 15 text

ސ٬ٴͼαϒεΫϦϓγϣϯͷొ࿥ ސ٬ɺࢧ෷৘ใɺαϒεΫϦϓγϣϯΛొ࿥ ˞͓ࢼ͠Ͱܾࡁొ࿥ը໘ͷσϞΛ࡞ͬͯΈ͍ͨ৔߹ɺެࣜͷ$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}' } ], // ...

Slide 16

Slide 16 text

ސ٬ٴͼαϒεΫϦϓγϣϯͷొ࿥  先程登録した2つの商品 (定額課金・従量課金)が 表示されている ˞Χʔυ൪߸͸TUSJQFςετϞʔυ ઐ༻ͷ൪߸Λ࢖༻

Slide 17

Slide 17 text

αϒεΫϦϓγϣϯొ࿥௚ޙʹ੥ٻΛ֬ೝ͢Δͱɾɾɾ ˞ఆظྉۚʢ#BTJD1MBOʣͷྉ͕ۚ൓ө͞Ε͍ͯΔ

Slide 18

Slide 18 text

ैྔ՝ۚͷ࢖༻ྔΛใࠂ͢Δɹ 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

Slide 19

Slide 19 text

ैྔ՝ۚͷ࢖༻ྔΛใࠂ͢Δ ࢖༻ྔΛใࠂͨ͠ޙͷ੥ٻ৘ใΛ֬ೝ

Slide 20

Slide 20 text

ΞυϗοΫʹ੥ٻ߲໨ͱֹۚΛ௥Ճ͢Δํ๏΋͋Δ αϒεΫϦϓγϣϯͷظؒதʹ࣍ճͷ੥ٻ߲໨Λਵ࣌௥ՃͰ͖Δ"1*΋͋Δ 
 ݮֹ΋ՄೳͰɺΞυϗοΫʹ࣍ճ੥ٻͷֹۚΛௐઅɾਫ਼ࢉ͢Δͱ͍ͬͨ࢖͍ํ͕Ͱ͖ͦ͏ IUUQTTUSJQFDPNEPDTCJMMJOHJOWPJDFT TVCTDSJQUJPOBEEJOHVQDPNJOHJOWPJDFJUFNT

Slide 21

Slide 21 text

(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

Slide 22

Slide 22 text

"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}

Slide 23

Slide 23 text

·ͱΊ ఆظྉۚͷ঎඼ͱैྔ՝ۚͷ঎඼Λ྆ํొ࿥͠ɺαϒεΫϦϓγϣϯ͢Δ ैྔ՝ۚͷ঎඼͸࢖༻ྔΛܭଌ͢ΔΦϓγϣϯΛ༗ޮԽ͠ɺ 
 "1*ܦ༝Ͱ࢖༻ྔΛใࠂ͢Δͱ੥ٻʹ൓ө͞ΕΔ ैྔ՝ۚʹ൐͏՝ۚϩδοΫΛࣗલͰ࣮૷͢Δඞཁ͕ͳ͘ɺ4USJQFΛ࢖͍͜ͳͦ͏ αʔόʔϨεͷྑ͞Λ׆͔ͯ͠ॊೈͳઃܭΛ໨ࢦ͠·͠ΐ͏ ˞ຊ೔ͷ͓࿩͸ͪ͜Βͷϒϩάهࣄͷ಺༰Λݩʹ͍ͯ͠·͢ɻ߹Θͤͯ͝ࢀߟ͍ͩ͘͞ɻ 
 IUUQTTFSWFSMFTTDPKQCMPH

Slide 24

Slide 24 text

serverless.co.jp