SlideShare a Scribd company logo
1 of 120
Download to read offline
Large-scale web service
           and operations
             with Ruby

2011   7   19
2011   7   19
I and
                RubyKaigi
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Large-scale web service
         and operations with
                Ruby
2011   7   19
Large-scale web service
         and operations with
                Ruby
2011   7   19
Large-scale web service
         and operations with
                Ruby
2011   7   19
Large-scale web service
         and operations with
                Ruby
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Bringing smiles to everyone by
           making every day cooking more
                     enjoyable.


2011   7   19
What is
                COOKPAD?

2011   7   19
2011   7   19
12,300,000 UU (pc only)
                1+ million Recipes
           Used by 1 in 2 women
                in their 30s
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Architecture based on best practices




2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
http://d3921.image.cookpad.com/
            recipes/1237075/100x141c/
       0b9c3ad1cba65869058e17cf78988bcb.jpg



2011   7   19
http://d3921.image.cookpad.com/
          recipes/1237075/      100x141c
                                       /
       0b9c3ad1cba65869058e17cf78988bcb.jpg


2011   7   19
‘100’


                ‘100x100’


                ‘100x100c’


                ‘100x100c40_198_137_104_300’

2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Easily customizable
                       search
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Architecture based on best practices



2011   7   19
“Good enough” is not good enough.
                Always focus on what is best


2011   7   19
2011   7   19
•   Only add absolutely necessary features


                •   Avoid complexity




2011   7   19
•   Design for caching


                •   Avoid complex SQL queries




2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Development



2011   7   19
2011   7   19
2011   7   19
Working with Rails within a large team



2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Run specs remotely

2011   7   19
$	
  rake	
  cookpad:spec:remote
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
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
2011   7   19
$	
  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
2011   7   19
2011   7   19
2011   7   19
It is nearly impossible to reduce number of exceptions to 0


                Looking for spikes in number of exceptions is key


2011   7   19
2011   7   19
2011   7   19
2011   7   19
Expands 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
2011   7   19
2011   7   19
new features


                stats for staff
2011   7   19
2011   7   19
How do we handle prototypes
                  we decide not to release?

2011   7   19
$	
  rm	
  app/extensions/
                  foobar_ext



2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
2011   7   19
Thank You

2011   7   19
2011   7   19

More Related Content

Similar to Ruby を利用した大規模ウェブサービスの開発・運用

JavaSE - The road forward
JavaSE - The road forwardJavaSE - The road forward
JavaSE - The road forward
eug3n_cojocaru
 
Shinjo seminar 0721
Shinjo seminar 0721Shinjo seminar 0721
Shinjo seminar 0721
Koji Shinjo
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
Koji SHIMADA
 
20110903 candycane
20110903 candycane20110903 candycane
20110903 candycane
Yusuke Ando
 
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Matteo Collina
 
OpentTansactって何?
OpentTansactって何?OpentTansactって何?
OpentTansactって何?
Nov Matake
 
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
Vũ Nguyễn
 
スマートフォンセミナー Genesis#01
スマートフォンセミナー Genesis#01スマートフォンセミナー Genesis#01
スマートフォンセミナー Genesis#01
tomo tsubota
 

Similar to Ruby を利用した大規模ウェブサービスの開発・運用 (20)

WebDBforum2011
WebDBforum2011WebDBforum2011
WebDBforum2011
 
JavaSE - The road forward
JavaSE - The road forwardJavaSE - The road forward
JavaSE - The road forward
 
Scrumdo Burst
Scrumdo BurstScrumdo Burst
Scrumdo Burst
 
Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!
 
Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!
 
Shinjo seminar 0721
Shinjo seminar 0721Shinjo seminar 0721
Shinjo seminar 0721
 
20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited20110718 you-must-unlearn-what-you-have-learned rivisited
20110718 you-must-unlearn-what-you-have-learned rivisited
 
First and Important thing in agile 20110704
First and Important thing in agile 20110704First and Important thing in agile 20110704
First and Important thing in agile 20110704
 
20110903 candycane
20110903 candycane20110903 candycane
20110903 candycane
 
Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...Designing and developing mobile web applications with Mockup, Sencha Touch an...
Designing and developing mobile web applications with Mockup, Sencha Touch an...
 
Comparing JVM Web Frameworks - 33rd Degree
Comparing JVM Web Frameworks - 33rd DegreeComparing JVM Web Frameworks - 33rd Degree
Comparing JVM Web Frameworks - 33rd Degree
 
UI for UX_Aug2011
UI for UX_Aug2011 UI for UX_Aug2011
UI for UX_Aug2011
 
OpentTansactって何?
OpentTansactって何?OpentTansactって何?
OpentTansactって何?
 
GitHub Importを使ったfluxflexへのデプロイ例
GitHub Importを使ったfluxflexへのデプロイ例GitHub Importを使ったfluxflexへのデプロイ例
GitHub Importを使ったfluxflexへのデプロイ例
 
Clear and Present Scrum on Devlopers Summit 2011
Clear and Present Scrum on Devlopers Summit 2011Clear and Present Scrum on Devlopers Summit 2011
Clear and Present Scrum on Devlopers Summit 2011
 
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
New trends of web technology on mobile: HTML5, PhoneGap & NaCl - Barcamp Saig...
 
Blending Collaboration and Training to Improve Performance
Blending Collaboration and Training to Improve PerformanceBlending Collaboration and Training to Improve Performance
Blending Collaboration and Training to Improve Performance
 
abc2011w-deb
abc2011w-debabc2011w-deb
abc2011w-deb
 
スマートフォンセミナー Genesis#01
スマートフォンセミナー Genesis#01スマートフォンセミナー Genesis#01
スマートフォンセミナー Genesis#01
 
Movable Type Smartphone Option
Movable Type Smartphone OptionMovable Type Smartphone Option
Movable Type Smartphone Option
 

More from Yuichi Tateno

fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
Yuichi Tateno
 
継続的インテグレーション - Ruby勉強会@札幌-18
継続的インテグレーション - Ruby勉強会@札幌-18継続的インテグレーション - Ruby勉強会@札幌-18
継続的インテグレーション - Ruby勉強会@札幌-18
Yuichi Tateno
 
大江戸Ruby会議01 高速なテストサイクルを回すには
大江戸Ruby会議01 高速なテストサイクルを回すには大江戸Ruby会議01 高速なテストサイクルを回すには
大江戸Ruby会議01 高速なテストサイクルを回すには
Yuichi Tateno
 
さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料
さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料
さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料
Yuichi Tateno
 
デブサミ2009 はてなの開発戦略
デブサミ2009 はてなの開発戦略デブサミ2009 はてなの開発戦略
デブサミ2009 はてなの開発戦略
Yuichi Tateno
 

More from Yuichi Tateno (6)

fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
 
継続的インテグレーション - Ruby勉強会@札幌-18
継続的インテグレーション - Ruby勉強会@札幌-18継続的インテグレーション - Ruby勉強会@札幌-18
継続的インテグレーション - Ruby勉強会@札幌-18
 
大江戸Ruby会議01 高速なテストサイクルを回すには
大江戸Ruby会議01 高速なテストサイクルを回すには大江戸Ruby会議01 高速なテストサイクルを回すには
大江戸Ruby会議01 高速なテストサイクルを回すには
 
さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料
さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料
さいきんの JavaScript テスト / Test.js - Shibuya.js 発表資料
 
Deb2009
Deb2009Deb2009
Deb2009
 
デブサミ2009 はてなの開発戦略
デブサミ2009 はてなの開発戦略デブサミ2009 はてなの開発戦略
デブサミ2009 はてなの開発戦略
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

Ruby を利用した大規模ウェブサービスの開発・運用