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

Too Big to Succeed: Scaling e-Commerce on Rails

Too Big to Succeed: Scaling e-Commerce on Rails

Talk about issues encountered building e-Commerce platform on Rails, presented at "Ruby on Rails x E-Commerce Startup Night" in Shibuya, Tokyo.

Chris Salzberg

November 30, 2015
Tweet

Other Decks in Programming

Transcript

  1. Too Big To Fail Succeed Scaling e-Commerce on Rails Chris

    Salzberg クリス・サルツバーグ
  2. e コマース @ • ストアがいっぱい (50+) • 通貨がいっぱい (JPY, EUR,

    USD, TWD...) • 複数の言語 ( 日本語 , 英語 , フランス語 ...) • コンビニ、銀行振込、予約販売など • ライセンスキー、 DRM
  3. 条件によるシステムの構成 • フロント – Spree + Spree extensions – Comfortable

    Mexican Sofa (CMS) – (Nginx per-site configuration) • バック – 独自の注文・商品管理システム (Spree Admin なし) – CMS Admin
  4. request.env['SERVER_NAME'] www.avg.co.jp www.kotoeu.com Prod Site Dev Site name “AVG ”

    ストア domains “www.avg.co.jp” default_currency JPY name “Kotobukiya” domains “www.kotoeu.com” default_currency EUR has_many :cms_sites コンビニ クレジット has_many :payment_methods 銀行振込 Electronic has_many :shipping_methods Prod Site Dev Site has_many :cms_sites PayPal Credit Card has_many :payment_methods EMS has_many :shipping_methods Air Mail
  5. カスタム機能 • ライセンスキー( spree_license_key ) • 予約販売( spree_pre_order ) •

    出荷サービス( spree_shipping_service ) • コンビニ手数料( spree_payment_method_fee ) • DRM の有効化 • 外部 API との連動など
  6. 柔軟性のあるシステム • ストア設定 – コンテンツ+レイアウト – 支払方法、配送方法 – Spree Preferences

    • メールのデザインと見た目も変更できる • ニーズに応じてカスタム機能も追加
  7. 柔軟性のリスク • コンテンツ – コンテンツはヘルパー機能だらけ • カスタム機能 (Spree) – class_eval

    と alias_method_chain だらけ – 注文フローの callbacks が複雑すぎる • 機能を外部サービスに任せたい
  8. CMS のない e コマース • カートフローなどをクライアント (js) に • コンテンツを静的な形

    (jekyll など)に • 必要に応じて microservices を使う CHECK ORDER PAYMENT GATEWAY FRONT CART.JS /purchase GET mystore.com HTML + cart.js
  9. If I were to do it again... • “Distributed e-Commerce”

    – カートを javascript に任せて、注文状態を保存しない – サイトを静的な形や外部サービスに任せる – 注文ではなく決済を中心に – 出荷も外部サービスに任せる cart.js pay ship check AJAX API WEB HOOK