(株)DTS

大西正太
Me
 大西正太
 (株)DTS
 SIer
 社員2700名
 創業40年強

 ITサービス事業本部
 ITインテグレーション事業部
 IT Platform担当
 クラウド活用を推進
Ruby(Rails)Programmer / Architect / PM
2005~
DTSとRuby
 Ruby System Integrator Gold取得

 Ruby Association評議員輩出企業
 2005年よりRuby on Railsを活用
Bizca
(Groupware)
スポーツリアルタイム
配信サイト
(on Heroku)
Heroku add-on
Bounscale
(SaaS:オートスケール)
この発表のあらすじ
 近年サービスの垂直立ち上げのご要望が

増えています
 ご要望に応えるために講じている3つの

方策を「EC決済サービス基盤」の事例を
交えご紹介します
 最後にそれらを今後どのように改善しよう

と考えているかをご...
サービスの垂直立ち上げ
 多くのお客様が3ヶ月前後でのリリース要望

 でも開発期間の標準的な指標値からすると普通
にやってたら間に合わない

工数(人月)
1 2.15 *
5 2.15 *
10 2.15 *
30 2.15 *
60 ...
どうすればいい?

③

①

②
①作る範囲を
減らす

②作る開発者を
柔軟に増やす

③作る速さを
上げる
具体的には・・・
①作る範囲を減らす

クラウド
コンピューティング

②作る開発者を柔軟
に増やす

ニアショア

③作る速さを上げる
プロジェクト概要
 お客様のグループ共通のECサイトでの決済

サービス基盤
 決済という意味ではエンタープライズ

 開発規模:
 数十人月(全体)
 開発期間:

 ファーストリ
リース 3ヵ月
作る範囲を減らす
クラウドの積極活用

 多数のシステム連携によりサービス実現
 顧客管理データベース
 オブジェクトストレージ
 決済代行システム

 基幹システム

…etc

 全てを一から構築・実装していた場合と比べ

て大...
作る開発者を柔軟に増やす
ニアショアを活用した分散開発
Git
Git

顧客
(東京)

Git
Git

対面
会議

チケット

DTS
(東京)

Git

ビデオ
会議

外注先
(地方)

チケット

質を落とさず最適な人数・スキル...
作る速さを上げる
Ruby利用で高速開発 !

 具体的に何を開発するのか?
 クラウドのオーケストレーション
 開発対象固有の業務ロジック

クラウド

サービス固有の
業務ロジック

クラウド
オーケストレーション
Rubyでクラウドオーケストレーションはなぜ高速?
 Rubyの柔軟性でクラウド接続がシンプル記述
 クラウド連携はマッピングなど定型的な処理が大半
 Rubyのリフレクション機構でシンプルに記述できる
xxxxSession = Xxx...
Rubyで業務ロジック開発はなぜ高速?(1)
 Rubyの柔軟性でDB接続がシンプル記述
 業務ロジックの大半、DBアクセスをシンプル記述
 Rubyのリフレクションをフルに生かしたRailsの力
package jp.kawakubo;...
Rubyで業務ロジック開発はなぜ高速?(2)
 基礎的なデータ組立処理がシンプル記述
 業務ロジックは配列・文字・数値などの組立が多い
 Rubyのブロック機構でシンプルに記述できる
例)あるグループに所属しているユーザの名前の入った配列...
更にRubyの開発が早い理由
 ソフトウェア開発は大半がうまく動かない問題

の調査をしている
 ホビーでRubyをやる人が世界中にたくさん!
 まつもとさんの文化

 ソーシャルコーディングサービスなどに有用な
情報が多数ある
Result
 Rubyを含めたこれらの対応のおかげで

 無事スケジュール通り
 予算通り
 期待の品質で
 サービスインできました
クラウド活用の改善
Keep

クラウドの利用は今後も継続したい
・大幅に工数削減できている

Problem 性能の改善が必要
・一般にSaaS連携箇所は性能が出づらい
・毎回個別にキャッシングなどの対応
→より汎用的な対応が必要

Try
...
ニアショア活用の改善
Keep

ニアショアは今後も継続したい
・現実的な費用でサービスの垂直立ち上げ可能

Problem ニアショア先がなかなか見つからない
・お声掛けください

Try

クラウドソーシングの活用
・更なる分散開発を追求し...
Ruby活用の改善
Keep

Rubyの利用
・他言語に比べて今でもNo.1の開発スピード
・Web開発のトレンドはRailsが牽引

Problem 性能が劣る
・Javaやnode.jsに大きく劣る

Try

他言語のハイブリッド活用
...
Ruby開発はお任せください

お問い合わせ:
ITサービス本部ITインテグレーション事業部ITプラットフォーム担当
大西正太 s-onishi@dts.co.jp
Rubyとクラウドサービスで実現したEC決済共通基盤@Ruby Association ビジネスセミナー201401
Rubyとクラウドサービスで実現したEC決済共通基盤@Ruby Association ビジネスセミナー201401
Rubyとクラウドサービスで実現したEC決済共通基盤@Ruby Association ビジネスセミナー201401
Rubyとクラウドサービスで実現したEC決済共通基盤@Ruby Association ビジネスセミナー201401
Upcoming SlideShare
Loading in...5
×

Rubyとクラウドサービスで実現したEC決済共通基盤@Ruby Association ビジネスセミナー201401

263

Published on

2013/11, 2014/1にRuby Associationのビジネスセミナーで発表した時の資料です。
http://www.ruby.or.jp/ja/news/20131218.html

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
263
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rubyとクラウドサービスで実現したEC決済共通基盤@Ruby Association ビジネスセミナー201401

  1. 1. (株)DTS 大西正太
  2. 2. Me  大西正太  (株)DTS  SIer  社員2700名  創業40年強  ITサービス事業本部  ITインテグレーション事業部  IT Platform担当  クラウド活用を推進
  3. 3. Ruby(Rails)Programmer / Architect / PM 2005~
  4. 4. DTSとRuby  Ruby System Integrator Gold取得  Ruby Association評議員輩出企業  2005年よりRuby on Railsを活用
  5. 5. Bizca (Groupware)
  6. 6. スポーツリアルタイム 配信サイト (on Heroku)
  7. 7. Heroku add-on Bounscale (SaaS:オートスケール)
  8. 8. この発表のあらすじ  近年サービスの垂直立ち上げのご要望が 増えています  ご要望に応えるために講じている3つの 方策を「EC決済サービス基盤」の事例を 交えご紹介します  最後にそれらを今後どのように改善しよう と考えているかをご紹介します
  9. 9. サービスの垂直立ち上げ  多くのお客様が3ヶ月前後でのリリース要望  でも開発期間の標準的な指標値からすると普通 にやってたら間に合わない 工数(人月) 1 2.15 * 5 2.15 * 10 2.15 * 30 2.15 * 60 2.15 * 100 2.15 * 計算式 (1^(1 / 3)) (5^(1 / 3)) (10^(1 / 3)) (30^(1 / 3)) (60^(1 / 3)) (100^(1 / 3)) 開発期間(月) 2.15 3.68 4.63 6.68 8.42 9.98
  10. 10. どうすればいい? ③ ① ② ①作る範囲を 減らす ②作る開発者を 柔軟に増やす ③作る速さを 上げる
  11. 11. 具体的には・・・ ①作る範囲を減らす クラウド コンピューティング ②作る開発者を柔軟 に増やす ニアショア ③作る速さを上げる
  12. 12. プロジェクト概要  お客様のグループ共通のECサイトでの決済 サービス基盤  決済という意味ではエンタープライズ  開発規模:  数十人月(全体)  開発期間:  ファーストリ リース 3ヵ月
  13. 13. 作る範囲を減らす クラウドの積極活用  多数のシステム連携によりサービス実現  顧客管理データベース  オブジェクトストレージ  決済代行システム  基幹システム …etc  全てを一から構築・実装していた場合と比べ て大幅な工数削減
  14. 14. 作る開発者を柔軟に増やす ニアショアを活用した分散開発 Git Git 顧客 (東京) Git Git 対面 会議 チケット DTS (東京) Git ビデオ 会議 外注先 (地方) チケット 質を落とさず最適な人数・スキルの 開発人員を全国からオンタイムに調達
  15. 15. 作る速さを上げる Ruby利用で高速開発 !  具体的に何を開発するのか?  クラウドのオーケストレーション  開発対象固有の業務ロジック クラウド サービス固有の 業務ロジック クラウド オーケストレーション
  16. 16. Rubyでクラウドオーケストレーションはなぜ高速?  Rubyの柔軟性でクラウド接続がシンプル記述  クラウド連携はマッピングなど定型的な処理が大半  Rubyのリフレクション機構でシンプルに記述できる xxxxSession = XxxxSession.openSession( USER_ID, PASSWORD, END_POINT); List<Brand__c> objectList = new ArrayList<Brand__c>(); StringBuffer selectQuery = new StringBuffer(); selectQuery.append("SELECT "); selectQuery.append("Id, "); selectQuery.append("Name "); selectQuery.append("FROM "); selectQuery.append("Brand__c "); selectQuery.append("where IsDeleted = false "); client = Xxxx::Client.new client.authenticate :token => "xxx", :instance_url => "xxx" client.xxxx("Brand") result = Brand.find_by_is_deleted(false) 1/6 QueryResult rs = xxxxSession.binding.query(selectQuery.toString()); boolean done = false; if (rs.getSize() > 0){ while (!done) { for (SObject so : rs.getRecords()) { objectList.add((Brand__c)so); } if (rs.isDone()) { done = true; } else { rs = xxxxSession.binding.queryMore(rs.getQueryLocator()); } } }
  17. 17. Rubyで業務ロジック開発はなぜ高速?(1)  Rubyの柔軟性でDB接続がシンプル記述  業務ロジックの大半、DBアクセスをシンプル記述  Rubyのリフレクションをフルに生かしたRailsの力 package jp.kawakubo; import import import import import @Column(name = "NAMEKANA") public String getNameKana() { return nameKana; } java.io.Serializable; javax.persistence.Column; javax.persistence.Entity; javax.persistence.Id; javax.persistence.Table; public void setNameKana(String nameKana) { this.nameKana = nameKana; } @Entity @Table(name = "MEIGARA") public class Meigara implements Serializable { private private private private private private private private private @Column(name = "DOSU") public int getDosu() { return dosu; } int id = 0; String name = ""; String nameKana = ""; int dosu = 0; String koji = ""; String sweetPotatoName = ""; String manufacturer = ""; float volume = 0f; int price = 0; public void setDosu(int dosu) { this.dosu = dosu; } @Column(name = "KOJI") public String getKoji() { return koji; } public Meigara() { } public Meigara( int id, String name, String nameKana, int dosu, String koji, String sweetPotatoName, String manufacturer, float volume, int price) { this.id = id; this.name = name; this.nameKana = nameKana; this.dosu = dosu; this.koji = koji; this.sweetPotatoName = sweetPotatoName; this.manufacturer = manufacturer; this.volume = volume; this.price = price; } public void setKoji(String koji) { this.koji = koji; } @Column(name = "SWEETPOTATONAME") public String getSweetPotatoName() { return sweetPotatoName; } 1/75 public void setSweetPotatoName(String sweetPotatoName) { this.sweetPotatoName = sweetPotatoName; } @Column(name = "MANUFACTURER") public String getManufacturer() { return manufacturer; } public void setManufacturer(String manufacturer) { this.manufacturer = manufacturer; } @Id @Column(name = "ID") public int getId() { return id; } @Column(name = "VOLUME") public float getVolume() { return volume; } public void setId(int id) { this.id = id; } public void setVolume(float volume) { this.volume = volume; } @Column(name = "NAME") public String getName() { return name; } @Column(name = "PRICE") public int getPrice() { return price; } public void setName(String name) { this.name = name; } ※JPAの例 class Meigara < ActiveRecord::Base end public void setPrice(int price) { this.price = price; } }
  18. 18. Rubyで業務ロジック開発はなぜ高速?(2)  基礎的なデータ組立処理がシンプル記述  業務ロジックは配列・文字・数値などの組立が多い  Rubyのブロック機構でシンプルに記述できる 例)あるグループに所属しているユーザの名前の入った配列を取得 List<String> names = new ArrayList<String>(); if(group != null){ List<User> users = group.getUsers(); for (User user : users) { names.add(user.getName()); } } names = group.try(:users).map(&:name) 1/7
  19. 19. 更にRubyの開発が早い理由  ソフトウェア開発は大半がうまく動かない問題 の調査をしている  ホビーでRubyをやる人が世界中にたくさん!  まつもとさんの文化  ソーシャルコーディングサービスなどに有用な 情報が多数ある
  20. 20. Result  Rubyを含めたこれらの対応のおかげで  無事スケジュール通り  予算通り  期待の品質で  サービスインできました
  21. 21. クラウド活用の改善 Keep クラウドの利用は今後も継続したい ・大幅に工数削減できている Problem 性能の改善が必要 ・一般にSaaS連携箇所は性能が出づらい ・毎回個別にキャッシングなどの対応 →より汎用的な対応が必要 Try 他レイヤのクラウド活用 ・今回はSaaSの利用 ・DTSではIaaS/PaaSの実績もあり ・より積極的に提案していきたい
  22. 22. ニアショア活用の改善 Keep ニアショアは今後も継続したい ・現実的な費用でサービスの垂直立ち上げ可能 Problem ニアショア先がなかなか見つからない ・お声掛けください Try クラウドソーシングの活用 ・更なる分散開発を追求していきたい ・SIerとしてはセキュリティなど課題がある ・携帯端末のテストなど適用内容を見極めたい
  23. 23. Ruby活用の改善 Keep Rubyの利用 ・他言語に比べて今でもNo.1の開発スピード ・Web開発のトレンドはRailsが牽引 Problem 性能が劣る ・Javaやnode.jsに大きく劣る Try 他言語のハイブリッド活用 ・Ruby : 作るのが速いので基本はRuby ・node.js: I/Oが多い、WebSocketなど ※コードは読みづらくなりがち ・Java : 計算速度が必要な場合など ※作るのに時間がかかる
  24. 24. Ruby開発はお任せください お問い合わせ: ITサービス本部ITインテグレーション事業部ITプラットフォーム担当 大西正太 s-onishi@dts.co.jp
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×