Upgrade to Pro — share decks privately, control downloads, hide ads and more …

社内アプリで Cloudflare D1を プロダクト運用してみた体験談 @Cloudflare Meetup Nagoya

社内アプリで Cloudflare D1を プロダクト運用してみた体験談 @Cloudflare Meetup Nagoya

Haochen Kotoi-Xie

April 15, 2024
Tweet

More Decks by Haochen Kotoi-Xie

Other Decks in Programming

Transcript

  1. ฐࣾ homepage: kxc.inc • Target: ʮଧࠁγεςϜʯ • Status: ϓϩμΫγϣϯӡ༻ •

    Tech Stack: Workers + D1 • Complexity: ௿͍ • Total Satisfaction: ·͊·͊ • Code Matuality: ࡶ • Code Performance: ͱͯ΋Α͍ D1 ࢖ͬͯΈͨ
  2. ฐࣾ homepage: kxc.inc • Target: ʮଧࠁγεςϜʯ • Status: ϓϩμΫγϣϯӡ༻ •

    Tech Stack: Workers + D1 • Complexity: ௿͍ • Total Satisfaction: ·͊·͊ • Code Matuality: ࡶ • Code Performance: ͱͯ΋Α͍ ར༻Πϝʔδ D1 ࢖ͬͯΈͨ
  3. D1 ࢖ͬͯΈͨ • Target: ʮଧࠁγεςϜʯ • Status: ϓϩμΫγϣϯӡ༻ • Tech

    Stack: Workers + D1 • Code Matuality: Ұ੾࠷దԽͯ͠ͳ͍ • Complexity: ௿͍ • System Performance: ͱͯ΋Α͍ • Total Satisfaction: ·͊·͊ ฐࣾ homepage: kxc.inc
  4. ར༻Πϝʔδʢଧࠁʣ Request Journey 1. Cmd: ʮpunch ...ʯ 2. HTTP POST

    㱺
 api1.kxc.inc/worklogger/v0/punching 3. Cloudflare Workers (api1.kxc.inc)㱺
 Cloudflare D1 db = context.env.D1_WORKLOGGER st = db.prepare(`...sql..(?, ?, ?1)..`)
 .bind(param1, param2) await db.exec(st) D1 ࢖ͬͯΈͨ
  5. ײ૝ • ͱʹ͔͘࢖͍΍͍͢ (Workers ͔Βͩͱ) • ૣ͍! ͍҆! • 㱺

    listing ͷࡶίʔυͰ΋ CPU Time ~30ms • ~2,000ߦ૯ͳΊ + JSσʔλ͝ʹΐ͝ʹΐ, etc • latency 2ܻmsɺମײͰ͸ແࢹͰ͖ΔϨϕϧ ར༻Πϝʔδʢlistingʣ D1 ࢖ͬͯΈͨ
  6. Usage Stat ײ૝ • ͱʹ͔͘࢖͍΍͍͢ (Workers ͔Βͩͱ) • ૣ͍! ͍҆!

    • 㱺 listing ͷࡶίʔυͰ΋ CPU Time ~30ms • ~2,000ߦ૯ͳΊ + JSσʔλ͝ʹΐ͝ʹΐ, etc • latency 2ܻmsɺମײͰ͸ແࢹͰ͖ΔϨϕϧ • 1೔ >5k Request Ͱ΋ແྉʹͳΔݟࠐΈ (Paid Workers) • ࠷େ 1 DB 10GB ·ͰΒ͍͠ • Transaction ͳ͍ͷ͕ਏ͍.. (SQLite ͳͷͰɺ stored function ΋ͳ͍..) • Batch ͞Εͨ΋ͷ͸ 1 txn Ͱ͕͢.. D1 ࢖ͬͯΈͨ
  7. • 1DB 10GB ·Ͱ! (ࠓ·Ͱ 100MB → 1GB) • λΠϜτϥϕϧ!

    • σʔλ Export / Import ※ͳΜͱࠓ·ͰͰ͖ͳ͔ͬͨ :D • άϩʔόϧɾϨϓϦΧ • Account͝ͱ: 50,000 DB! (max storage = 250GB) ※ιϑτϦϛοτΒ͍͠ • ແྉͰ࢝ΊΒΕΔ! • ແྉ࿮: 10DB, 500MB/DB, 5GB/Account, 5M read /day, 100K write /day ࠷ۙ GA (General Available) ʹͳͬͨΒ͍͠ Cloudflare D1