Comments
Description
Transcript
NanaHoshi - EC
Cassandra上でトランザクションを操る ”NanaHoshi” とその展開例 株式会社エスキュービズム http://s-cubism.jp/ 社名 株式会社エスキュービズム (英名:S-cubism Inc.) 代表取締役 薮崎 敬祐 取締役(CTO) 神谷 浩之 取締役 武下 真典 監査役 角田 好志、加藤 一夫 資本金 1億1675万円 主要株主 オリックスキャピタル株式会社、BIGLOBEキャピタル株式会社 他 設立 2006年5月 所在地 〒105-0011 東京都港区芝公園2-4−1 芝パークビル A館 4階 事業内容 1.EC・小売事業者向けシステムソリューションサービス 2.NoSQLデータベースソリューションサービス「Nanaohoshi」 3.法人向け営業・マーケティング支援「会社なび法人サービス」 4.ネットショップ事業 EC構築オープンソースとして国内シェア No.1 機能性 安全性 + 拡張性 単店舗 単店舗 モール 単店舗 Logi & Sales モール 単店舗 Logi & Sales モール iPad POS 単店舗 Logi & Sales モール iPad POS ↑ 受注額 Oracle MySQL PostgreSQL | 1K | 10K | 100K | 1M | 10M 商品数 → ↑ ランニング Oracle MySQL PostgreSQL | | 1K 10K | 100K | 1M | 10M 商品数 → オープンソース 大規模 中小規模 有償 Oracle MySQL PostgreSQL SQL Server Cassandra 複数キーに渡るトランザクションができない Cassandra 複数キーに渡るトランザクションができない ↓ 決済ができない・業務アプリに向かない Cassandra 複数キーに渡るトランザクションができない ↓ 決済ができない・業務アプリに向かない ↓ バッファ・キャッシュ・Hadoop系へ if Cassandra + α 複数キーに渡るトランザクションができる Cassandra + α 複数キーに渡るトランザクションができる ↓ 決済ができる・業務アプリに向いている Cassandra + α 複数キーに渡るトランザクションができる ↓ 決済ができる・業務アプリに向いている ↓ 大規模ECサイト構築・在庫管理 etc. システム利用・提案の幅が広がる then オープンソース 有償 大規模 Cassandra + Transaction Oracle 中小規模 MySQL PostgreSQL SQL Server gihyo.jp gihyo.jp gihyo.jp 同時に ● CAP定理での誤解 × 3つの保証を提供できない ○ 3つの保証を「同時に」提供できない 「同時」ではなかったら? ● Cassandraの場合 C A P 定理 two of "C", "A" and "P" Solution: write & read pair "結果整合性"と関係 "eventual consistency" 書き込み時のみではなく、 読み込み時にも処理を行う ( = "Read Repair") → 強一貫性も実現 書き込み時のみではなく、 読み込み時にも処理を行う ( = "Read Repair") という基本的なアイディアを トランザクションにも応用すると?! ● 「NanaHoshi」を開発 "BASE"型トランザクション のコンセプトと似た実装 BA: Basically Available S : Soft-state ← 重要! E : Eventual consistency トランザクションも 全ノードに自動で分散 (管理専用ノードなし) ↓ 単一障害点フリーのまま Web Server Object mapper Transaction logic Abstract access layer Thrift IF Cassandra Web Server Object mapper Transaction logic Abstract access layer Another IF Another DB NEWS: MySQLがSQLパーサを外して高速化 NEWS: MySQLがSQLパーサを外して高速化 →MySQLの利点が消えつつある →無駄を省いて”APIで操作”が時代の流れ NEWS: MySQLがSQLパーサを外して高速化 →MySQLの利点が消えつつある →無駄を省いて”APIで操作”が時代の流れ →バックエンドとしてMySQLを扱っても同じ →NoSQLのDBの抽象化が始まる →フレームワーク →プログラムレベルでの利用 from nanahoshi.models import * connection = CassandraConnection() connection.open() connection.set_keyspace('TEST') lockable_1 = ModelLockable(connection, 'key_1') lockable_2 = ModelLockable(connection, 'key_2') ### Transaction transaction = ModelTransaction(connection) try: transaction.start() lockable_1.join(transaction) lockable_2.join(transaction) lockable_1.load() lockable_2.load() lockable_1.data += 10 lockable_2.data -= 10 lockable_1.save() lockable_2.save() transaction.end(): except: transaction.forget() Soft-state Soft-state transaction = ModelTransaction(connection) Soft-state transaction = ModelTransaction(connection, key) transaction.load() transaction.end() 【Case 1】 transaction作成 ↓ 保存 カート画面 決済画面 代行会社 Paypal etc. transaction読込 ↓ 終了/ロールバック 決済完了 OK/NG 【Case 2】 transaction作成 ↓ 保存 データ同期 try 基幹 システム 外部 システム データ同期 完了/失敗 【Case 2】 transaction作成 ↓ 保存 データ同期 try 基幹 システム 外部 システム transaction読込 ↓ 終了/ロールバック データ同期 完了/失敗 OK/NG OK/NG SaaS on クラウド環境 SaaS on クラウド環境 SaaS on クラウド環境 必要に応じてすべてを “スケールアウト” できる時代 【検証数値1】 1台当たり 30 Update/秒 設計・使い方次第では ~100 update/秒 【検証数値1】 10 Update/秒 × 1時間 ↓ 36,000 Updates 【検証数値1】 30 Update/秒 × 1時間 ↓ 100,000 Updates /1台 →数万円/月 もっと必要!? もっと必要!? ↓ スケーラブルです。 掛け算でOK 【検証数値2】 商品数は現在のところメモリ依存 検証環境では 1000万商品 まで扱えました。 そもそも分散環境なので 並列処理向き ↓ EC+検索+分析 新規にシステム構築、外部ASPへ投 資をする必要性が低くなっていく Cassandraの標準機能で データセンター間 を簡単にまたげる さらに NanaHoshiとCassandraの分離 したことで・・・ ↓ NanaHoshiのサポート:有 & Cassandraのサポート:有 NanaHoshi本体は 約1000行程度 ソリューションへのご活用・組み込みを お考えの方に 無償提供を考えております アンケートにご記入ください 日本Cassandraコミュニティ ユーザーコミュニティ 企業コミュニティ ソリューション紹介 実績掲載(非公開含む) お問い合わせフォーム 共同セミナー OSS化 etc. http://excellent-solution.jp/ クラウドAPI オートスケール 完全二重化 ランニングコストが大きな負担に・・・ インフラ費用 月額ライセンス費用 保守費用 インフラ費用 月額ライセンス費用 保守費用 他社システムの場合 他社システムの場合 Excellentの場合 Excellentの場合 費用 費用 月 月 クラウド利用による保守料削減やアプリケーションによる月額ライセンス費用が削減され、年間で は大幅なコスト削減が実現。年間4,000万円の削減が実現した企業も。 現状のシステムでは、トラフィックの負担に耐えられない・・・ Internet Internet 想定外のアクセス 想定外のアクセス ファイアウォール ファイアウォール ロードバランサ ロードバランサ SSL SSL サーバを 自動追加 トラフィックに耐えれず、システムダウン キャッシュサーバ Web#1 Master DB Web#2 Slave DB キャッシュサーバ Web#1 Master DB Web#2 Web#3 Slave DB Excellentでは、クラウド環境を利用することによりトラフィックの増化に伴い、オートスケールでサーバを増強い たします。TV通販やプロモーションなどのトラフィックの増化にも安定して対応可能。 売上が思うようにあがらない・・・ ECサイト ECサイト運営者 サイト運営者 店舗 ECサイト ECサイト Amazon 基幹システム 店舗と各ECが別々の運用 店舗 ECサイト ECサイト運営者 サイト運営者 ECサイト ECサイト Amazon 楽天市場 楽天市場 EC・ EC・店舗の 店舗の販促 基幹システム システムを連携させることで、運用人員を減らし、 余った人員が販促に専念し、売上向上 各システム間を有効に連携させることで、最適な人員配置を実現し、コスト削減とともに、売上拡大の為の攻 めのマーケティング業務を推進する体制を構築することが可能に。 ■@ニフティストア・・・ECモール ニフティの運営するECサイト ・@ニフティストアのECサイト ・仕入先担当、倉庫担当もEC-Orange画面を 利用し発注~出荷までをほぼ自動化 会員数:13,000名(2010年7月) 商品数 : 200,000点 ページビュー : 120万/月 @NiftyIDとのシングルサインオン ■JJモード・・・雑誌連動EC JJ-modeサイト ・女性雑誌「JJ」と雑誌掲載商品が連動した ECサイト 会員数:69,500名(2010年5月) 商品数 : 4,300点 ページビュー : 1,926万/月 (PC:1,326万/月、MB:600万/月) JJmodeメルマガ会員数 : 39,200人 (PC:28,000名、MB:11,200名) ■会社なび/就職活動・・・SNS 会社ナビ/就職活動サイト ・エスキュービズムが運営するSNS就職活動サ イト ・スマートレイアウト機能を装備し、多種多様な 機能をアプリとしてレイアウトする斬新なイン ターフェイスを採用 ・アバターなどSNS固有の機能にも対応 ・関連アプリはiPhoneで30万ダウンロードを記 録し、無料アプリランキング1位に ご清聴ありがとうございました!