ruby を利用した大規模ウェブサービスの開発・運用
DESCRIPTION
クックパッドでの、Ruby を利用した大規模ウェブサービスの開発・運用方法の説明TRANSCRIPT
![Page 1: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/1.jpg)
Ruby を利用した大規模ウェブサービスの
開発・運用Large-scale web service
and operations with Ruby
cookpadid:secondlife / @hotchpotch
2011年7月19日火曜日
![Page 2: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/2.jpg)
提供
2011年7月19日火曜日
![Page 3: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/3.jpg)
私とRuby会議
I andRubyKaigi
2011年7月19日火曜日
![Page 4: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/4.jpg)
日本Rubyカンファレンス2006
2011年7月19日火曜日
![Page 5: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/5.jpg)
日本Rubyカンファレンス2006
Perl の会社で使われるRuby の利用法とは!?
2011年7月19日火曜日
![Page 6: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/6.jpg)
RubyKaigi 2007
2011年7月19日火曜日
![Page 7: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/7.jpg)
RubyKaigi 2007
モテるRuby!
2011年7月19日火曜日
![Page 8: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/8.jpg)
RubyKaigi 2011
Ruby を利用した大規模ウェブサービスの
開発・運用Large-scale web service
and operations with Ruby
2011年7月19日火曜日
![Page 9: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/9.jpg)
RubyKaigi 2011
Ruby を利用した大規模ウェブサービスの
開発・運用Large-scale web service
and operations with Ruby
2011年7月19日火曜日
![Page 10: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/10.jpg)
RubyKaigi 2011
Ruby を利用した大規模ウェブサービスの
開発・運用Large-scale web service
and operations with Ruby
イマココ!now
2011年7月19日火曜日
![Page 11: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/11.jpg)
RubyKaigi 2011
Ruby を利用した大規模ウェブサービスの
開発・運用Large-scale web service
and operations with Ruby
イマココ!now
2011年7月19日火曜日
![Page 12: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/12.jpg)
•id:secondlife•@hotchpotch•舘野祐一 / Yuichi Tateno•Shibuya.js 発起人•Asakusa.rb 所属•Ruby, Vim, Git
2011年7月19日火曜日
![Page 13: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/13.jpg)
2011年7月19日火曜日
![Page 14: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/14.jpg)
ミッションMission
2011年7月19日火曜日
![Page 15: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/15.jpg)
2011年7月19日火曜日
![Page 16: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/16.jpg)
毎日の料理を楽しみにすることで
2011年7月19日火曜日
![Page 17: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/17.jpg)
毎日の料理を楽しみにすることで心からの笑顔を増やす
2011年7月19日火曜日
![Page 18: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/18.jpg)
毎日の料理を楽しみにすることで心からの笑顔を増やす
Bringing smiles to everyone by making every day cooking more
enjoyable.
2011年7月19日火曜日
![Page 19: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/19.jpg)
サービス紹介What is
COOKPAD?
2011年7月19日火曜日
![Page 20: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/20.jpg)
COOKPAD
2011年7月19日火曜日
![Page 21: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/21.jpg)
COOKPAD12,300,000 UU (pc only)
1+ million Recipes
Used by 1 in 2 women in their 30s
2011年7月19日火曜日
![Page 22: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/22.jpg)
MOBAREPIモバれぴ
2011年7月19日火曜日
![Page 23: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/23.jpg)
MOBAREPIモバれぴ
フィーチャーフォンfor mobile
2011年7月19日火曜日
![Page 24: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/24.jpg)
Smartphone App
iPhone Android2011年7月19日火曜日
![Page 25: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/25.jpg)
Smartphone App
iPhone Android
(iPhone App only)
2.5+ Million Downloads
2011年7月19日火曜日
![Page 26: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/26.jpg)
TABEMIRUたべみる
2011年7月19日火曜日
![Page 27: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/27.jpg)
Technology
2011年7月19日火曜日
![Page 28: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/28.jpg)
Ruby 1.8.7
Rails 2.32011年7月19日火曜日
![Page 29: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/29.jpg)
EC2
Architecture
lvs
proxy
lvs
app
task
EC2/EMR
Akamailvs
db
log
cache
S3
Image(EC2)
searcher
AWS
2011年7月19日火曜日
![Page 30: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/30.jpg)
定石な構成Architecture based on best practices
http://www.flickr.com/photos/chadmiller/7270219/2011年7月19日火曜日
![Page 31: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/31.jpg)
EC2
App / DB
lvs
proxy
lvs
task
EC2/EMR
Akamailvs
log
cache
S3
Image(EC2)
searcher
AWS
app
db2011年7月19日火曜日
![Page 32: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/32.jpg)
EC2
App / DB
lvs
proxy
lvs
task
EC2/EMR
Akamailvs
log
cache
S3
Image(EC2)
searcher
AWS
app
db
•Ruby 1.8.7•Rails 2.3•haml / sass / jQuery•Passenger 2.2•MySQL 5.0•memcached
2011年7月19日火曜日
![Page 33: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/33.jpg)
EC2lvs
proxy
lvs
task
EC2/EMR
Akamailvs
log
S3
Image(EC2)
searcher
AWS
app
db
cache
Cache
2011年7月19日火曜日
![Page 34: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/34.jpg)
Cache
2.1.52011年7月19日火曜日
![Page 35: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/35.jpg)
Cache
2.1.5About
30ms2011年7月19日火曜日
![Page 36: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/36.jpg)
EC2
Image
lvs
proxy
lvs
task
EC2/EMR
Akamailvs
log
S3
searcher
AWS
app
db
cacheImage(EC2)
2011年7月19日火曜日
![Page 37: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/37.jpg)
http://www.flickr.com/photos/h4ck/3031427985/2011年7月19日火曜日
![Page 38: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/38.jpg)
Image Server
Tofuhttp://www.flickr.com/photos/h4ck/3031427985/
2011年7月19日火曜日
![Page 39: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/39.jpg)
http://www.flickr.com/photos/h4ck/3031427985/
Tofu•Upload Server on EC2•Rails 3 -> S3•Delivery Server on EC2•Apache 2.2•mod_tofu (image magick)•+ CDN (akamai)
2011年7月19日火曜日
![Page 40: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/40.jpg)
http://www.flickr.com/photos/h4ck/3031427985/
Tofu
http://d3921.image.cookpad.com/recipes/1237075/100x141c/
0b9c3ad1cba65869058e17cf78988bcb.jpg
2011年7月19日火曜日
![Page 41: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/41.jpg)
http://www.flickr.com/photos/h4ck/3031427985/
Tofu
http://d3921.image.cookpad.com/recipes/1237075/100x141c/
0b9c3ad1cba65869058e17cf78988bcb.jpg
2011年7月19日火曜日
![Page 42: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/42.jpg)
http://www.flickr.com/photos/h4ck/3031427985/
‘100x100c40_198_137_104_300’
‘100’
‘100x100’
‘100x100c’
2011年7月19日火曜日
![Page 43: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/43.jpg)
EC2
Searcher
lvs
proxy
lvs
task
EC2/EMR
Akamailvs
log
S3
AWS
app
db
cacheImage(EC2)
searcher
2011年7月19日火曜日
![Page 44: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/44.jpg)
Search
検索2011年7月19日火曜日
![Page 45: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/45.jpg)
2011年7月19日火曜日
![Page 46: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/46.jpg)
MySQL+Tritonn
Solr2011年7月19日火曜日
![Page 47: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/47.jpg)
柔軟な検索Easily customizable
search
2011年7月19日火曜日
![Page 48: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/48.jpg)
•Facet (like group by)•集合を扱う•Boost Search •重みづけ検索•Dynamicfields •動的なフィールド追加
2011年7月19日火曜日
![Page 49: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/49.jpg)
Log Analytics
lvs
proxy
lvs
Akamailvs
AWS
app
db
cacheImage(EC2)
searcher
task
log EC2
S3
EC2/EMR
2011年7月19日火曜日
![Page 50: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/50.jpg)
•TABEMIRU (たべみる)•EC2 + hadoop•Other•Elastic MapReduce (AWS)•Mapper/Reducer•Ruby
Log Analytics
2011年7月19日火曜日
![Page 51: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/51.jpg)
速度speed
2011年7月19日火曜日
![Page 52: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/52.jpg)
速度speed
slow?
2011年7月19日火曜日
![Page 53: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/53.jpg)
速度speedNo!
2011年7月19日火曜日
![Page 54: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/54.jpg)
速度speed
> 200ms2011年7月19日火曜日
![Page 55: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/55.jpg)
定石をきちんとArchitecture based on best practices
http://www.flickr.com/photos/chadmiller/7270219/2011年7月19日火曜日
![Page 56: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/56.jpg)
“GOOD はやらない”“Best のみ集中”
“Good enough” is not good enough.Always focus on what is best
2011年7月19日火曜日
![Page 57: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/57.jpg)
シンプルさを保つKeep It Simple
Stupid
2011年7月19日火曜日
![Page 58: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/58.jpg)
シンプルさを保つ
•本当に必要な機能のみに絞る• Only add absolutely necessary features
•無駄に複雑なことをやらない• Avoid complexity
2011年7月19日火曜日
![Page 59: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/59.jpg)
シンプルさを保つ
•キャッシュにのりやすく• Design for caching
•シンプルなクエリ• Avoid complex SQL queries
2011年7月19日火曜日
![Page 60: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/60.jpg)
あとでやるAsync Loading
2011年7月19日火曜日
![Page 61: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/61.jpg)
非同期処理
2011年7月19日火曜日
![Page 62: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/62.jpg)
非同期処理
2011年7月19日火曜日
![Page 63: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/63.jpg)
非同期処理
2011年7月19日火曜日
![Page 64: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/64.jpg)
非同期処理
2011年7月19日火曜日
![Page 65: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/65.jpg)
速度speednot slow
2011年7月19日火曜日
![Page 66: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/66.jpg)
【PR】
2011年7月19日火曜日
![Page 67: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/67.jpg)
Development
2011年7月19日火曜日
![Page 68: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/68.jpg)
2011年7月19日火曜日
![Page 69: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/69.jpg)
30+Engineers
2011年7月19日火曜日
![Page 70: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/70.jpg)
Rails アプリの多人数開発
Working with Rails within a large team
2011年7月19日火曜日
![Page 71: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/71.jpg)
DevelopmentCycle
2011年7月19日火曜日
![Page 72: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/72.jpg)
開発Dev
デプロイDeploy
フィードバックFeedback
2011年7月19日火曜日
![Page 73: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/73.jpg)
開発Dev
デプロイDeploy
フィードバックFeedback
2011年7月19日火曜日
![Page 74: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/74.jpg)
•rspec 1.x•unit•functional•Integration
Tests
2011年7月19日火曜日
![Page 75: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/75.jpg)
beforeUnit
Functional
Integration
2011年7月19日火曜日
![Page 76: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/76.jpg)
nearUnitFunctional
Integration2011年7月19日火曜日
![Page 77: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/77.jpg)
nearUnitFunctional
Integration2011年7月19日火曜日
![Page 78: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/78.jpg)
nearUnitFunctional
IntegrationJavaScript
2011年7月19日火曜日
![Page 79: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/79.jpg)
nearUnitFunctional
Integration
JavaScript♥
capybara-webkit
2011年7月19日火曜日
![Page 80: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/80.jpg)
nearUnitFunctional
Integration
JavaScript♥
capybara-webkit
2011年7月19日火曜日
![Page 81: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/81.jpg)
nearUnitFunctional
Integration
JavaScript♥
capybara-webkit
2011年7月19日火曜日
![Page 82: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/82.jpg)
30+Engineers
2011年7月19日火曜日
![Page 83: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/83.jpg)
manyspecs
2011年7月19日火曜日
![Page 84: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/84.jpg)
2011年7月19日火曜日
![Page 85: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/85.jpg)
So slow!!
@ryo_katsuma2011年7月19日火曜日
![Page 86: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/86.jpg)
テストをリモート上で実行するRun specs remotely
2011年7月19日火曜日
![Page 87: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/87.jpg)
•Custom in-house library•Designated test servers•Synchronize local source code via rsync•Test results are fetched via ssh
remote spec
$ rake cookpad:spec:remote2011年7月19日火曜日
![Page 88: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/88.jpg)
x4 servers32 parallel processes
2011年7月19日火曜日
![Page 89: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/89.jpg)
Speed test
0
750
1500
2250
3000
1.8.7 REE para.. remote
速度(秒) メモリ(MB)
2011年7月19日火曜日
![Page 90: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/90.jpg)
19.2x50sec
2011年7月19日火曜日
![Page 91: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/91.jpg)
For more infoOedo RubyKaigi 01
http://d.hatena.ne.jp/secondlife/20110410/1302442313
2011年7月19日火曜日
![Page 92: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/92.jpg)
開発Dev
デプロイDeploy
フィードバックFeedback
2011年7月19日火曜日
![Page 93: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/93.jpg)
•Only allow successful CI builds to be deployed
•Send deploy notifications•Always check error logs after deployment
Deploy Rules
2011年7月19日火曜日
![Page 94: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/94.jpg)
Continuous Integration
継続的インテグレーション
2011年7月19日火曜日
![Page 95: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/95.jpg)
2011年7月19日火曜日
![Page 96: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/96.jpg)
2011年7月19日火曜日
![Page 97: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/97.jpg)
CI が導入され変わった開発パターン•CI を通ったコードのみリリース•みんなテストを書く・実行するように•「CIで動かないテスト」≒「将来的に価値がないテスト」の認識•継続することの重要性•新しい技術を導入する=CIで動くテストが書けるを意識 (JavaScript のテストなども...)
How did using a CI change our development flow?
Only release successful CI builds
Test coverage as a requirement
Tests should be written so they can run on a CI
2011年7月19日火曜日
![Page 98: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/98.jpg)
For more infoRubyStudy@Sapporo#18
http://d.hatena.ne.jp/secondlife/20110704/1309759409
2011年7月19日火曜日
![Page 99: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/99.jpg)
•デプロイ時にメッセージを記入•新機能の追加・大きな変更•Skype による通知•エンジニア以外にも変更点のメール
Notifications$ cap production deploy
Add a "deploy message" to every release
(ex: "Added feature x", "Fixed bug z" etc)
Skype notification
Mail sent to developer and support mailing lists
2011年7月19日火曜日
![Page 100: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/100.jpg)
Error monitoring
2011年7月19日火曜日
![Page 101: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/101.jpg)
monitoring
2011年7月19日火曜日
![Page 102: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/102.jpg)
2011年7月19日火曜日
![Page 103: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/103.jpg)
•Exception Log•Rails / JavaScript•例外を0件にするのは難しい•バースト検知するのは簡単
It is nearly impossible to reduce number of exceptions to 0
Looking for spikes in number of exceptions is key
2011年7月19日火曜日
![Page 104: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/104.jpg)
2011年7月19日火曜日
![Page 105: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/105.jpg)
開発Dev
デプロイDeploy
フィードバックfeedback
2011年7月19日火曜日
![Page 106: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/106.jpg)
Extensions
2011年7月19日火曜日
![Page 107: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/107.jpg)
•Rails 拡張•条件指定で有効化•一部ユーザのみ限定公開可能•プロトタイプ開発向き•“Spec を書かなくても良い” ルール•例外発生時 “自動で無効化”
ExtensionsExpands upon Rails functionality
Selective release of new features
(ex: “Show feature X only to users A, B, C)
Used for prototyping
Specs not required
If an exception occurs in an extension, it is turned off automatically
2011年7月19日火曜日
![Page 108: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/108.jpg)
2011年7月19日火曜日
![Page 109: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/109.jpg)
2011年7月19日火曜日
![Page 110: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/110.jpg)
new features
stats for staff2011年7月19日火曜日
![Page 111: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/111.jpg)
2011年7月19日火曜日
![Page 112: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/112.jpg)
もし、機能をリリースしない決断をしたら
How do we handle prototypes we decide not to release?
2011年7月19日火曜日
![Page 113: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/113.jpg)
$ rm app/extensions/foobar_ext
2011年7月19日火曜日
![Page 114: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/114.jpg)
For more info
テキスト
http://techlife.cookpad.com/2011/07/15/extension-framework/
2011年7月19日火曜日
![Page 115: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/115.jpg)
DevelopmentCycle
2011年7月19日火曜日
![Page 116: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/116.jpg)
開発Dev
デプロイDeploy
フィードバックfeedback
2011年7月19日火曜日
![Page 117: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/117.jpg)
開発Dev
デプロイDeploy
フィードバックfeedback
2011年7月19日火曜日
![Page 118: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/118.jpg)
提供
2011年7月19日火曜日
![Page 119: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/119.jpg)
ご清聴ありがとうございました
Thank You
2011年7月19日火曜日
![Page 120: Ruby を利用した大規模ウェブサービスの開発・運用](https://reader036.vdocuments.pub/reader036/viewer/2022062705/5565f80fd8b42a20158b51f7/html5/thumbnails/120.jpg)
クックパッドでは一緒に働くエンジニアを募集しています
あなたの技術で、たくさんの笑顔をふやしませんか?
2011年7月19日火曜日