SlideShare a Scribd company logo
1 of 31
Download to read offline
約10年年
2014年年08⽉月20⽇日
SonicGarden  安達輝雄
サービスを日々運用し続けながら
最新版のRailsに追従させる極意
安達  輝雄  (  Teruo  Adachi  )
福岡出⾝身の⾃自称フルスタックエンジニア
teruo.adachi @interu
http://interu.hatenablog.com/
約10年年、
開発/運⽤用してるサービス
http://www.skip-‐‑‒sns.jp/
•  機能開発/リリース
•  バージョンアップ
•  フレームワーク/ライブラリ(Rails/Gems)
•  ミドルウェア(Apache/Nginx/Ruby/MySQL)
•  サーバ(OS/IaaS)
•  バックアップ(ログ/データ)
•  緊急対応(脆弱性/不不具合)
•  ユーザサポート
⽇日々のサービス運⽤用で
やっていること
エンジニア視点で
もっとも  面倒  な作業は??
•  機能開発/リリース
•  バージョンアップ
•  フレームワーク/ライブラリ(Rails/Gems)
•  ミドルウェア(Apache/Nginx/Ruby/MySQL)
•  サーバ(OS/IaaS)
•  バックアップ(ログ/データ)
•  緊急対応(脆弱性/不不具合)
•  ユーザサポート
不不具合出ると怒怒られる…
クリエイティビティがない…
⾯面倒なことをやって
享受される  恩恵  は?
•  OS/MW/FWの新機能を使えるように
  →    開発がラクに
  →    時代のトレンドに対応しやすく(ライブラリ充実)
•  パフォーマンス向上
  →    開発/運⽤用がラクに
•  オレオレメンテ不不要
  →    独⾃自パッチ不不要、パッケージ更更新がラクに
⾯面倒事よりもメリットの⽅方が⼤大きい
⾯面倒なことをよりラクに
解決  できないか?
を例例に、
取り組みをご紹介
2005  年年〜~  Rails  0系
    開発開始
2007  年年〜~  Rails  1系
2008  年〜~
 イントラからAWSへ移行
2009〜~2010  年年〜~  Rails  2系
    楽天アワード2009受賞
    フクオカRuby⼤大賞受賞
2012  年年〜~  Rails  3系
2014  年年〜~  Rails  4系
歴史
Rails  4化にフォーカスして
実施したタスクを紹介
(1)テストの最新化
•  テストライブラリの更更新とテストコードの修正
•  Rspec  /  cucumber
(2)影響範囲の⼩小さいライブラリの更更新
•  単機能のライブラリを少しずつ更更新
•  Paperclip(ファイルアップロード)
•  jQuery
•  Ransack(検索索)
•  …  etc
(3)Rubyのバージョンアップ
Ruby  from  1.9  to  2.1
•  Linux  OSの最新化
•  基本設定/セキュリティ設定
•  Serverspec
•  M/W設定⾒見見直し
•  Apache  /  Nginx  /  Ruby
•  アプリケーションの全体テスト
•  複数ブラウザで動作確認
(4)Rails 4へ向けたリファクタリング
•  Rails  3系のままRails  4系に移⾏行行出来る箇所の改善
•  confirm  /  disable_̲with
•  vendor/plugins  の廃⽌止
•  named_̲scope  記法
•  …  etc
(5)Railsのバージョンアップ
•  ⼤大変なところはのちほど対応するように
•  ⾮非strong  parameter(protected_̲attributes)
•  ⾮非assets  digest(non-‐‑‒stupid-‐‑‒digest-‐‑‒assets)
•  DEPRECATION  WARNINGの改善
•  vendor/plugins  の廃⽌止
•  アプリケーションの全体テスト
•  複数ブラウザで動作確認
クソ真面目に、  
1回のリリースで、  
バージョンアップ  
するのは大変
ラクするための取り組み  
  
〜あぷりけーしょん編〜
(1)テストの最新化  (1回)
(2)影響範囲の⼩小さいライブラリの更更新  (5回)
(3)Rubyのバージョンアップ  (1回)
(4)Rails4化へ向けたリファクタリング  (3回)
(5)Railsのバージョンアップ
細かい単位でリリースするようにして
リスクを⼩小さく
①細かくリリースを実施
ラクするための取り組み
+  迅速に切切り戻せるように
②⽇日々の開発時から意識識
•  機能開発前にリファクタを実施
•  過去の負債を少しずつ返済
•  テストコードの追加
•  不不具合を減らす、バージョンアップがラクに
•  コードレビューの実施
•  コードの負債を貯めこまないように
ラクするための取り組み
ラクするための取り組み
③動作確認をアウトソース
http://fjord.jp/
フィヨルドさまに協⼒力力いただき、
インターン⽣生に複数ブラウザでの動作確認を依頼
④その分野の番⻑⾧長を巻き込む
•  番⻑⾧長をいい気分にしましょう
•  番⻑⾧長に頼ってみましょう
•  番⻑⾧長に感謝しましょう
『RspecによるRailsテスト⼊入⾨門』著者
ラクするための取り組み
ラクするための取り組み  
  
〜いんふら編〜
⑤サーバ運⽤用はPAASを積極活⽤用
EC2	
 OpsWorks	
⽐比率率率
6  :  2  :  2
⑥統⼀一プラットフォーム化
HerokuやOpsWorksなどのPaaSを利利⽤用しない場合は、
EC2で以下を実施
•  ミドルウェアの統⼀一化
•  リリース処理理を統⼀一化
•  RDSの利利⽤用
アプリさえ⼊入れ替えれば動くようにしておくことで
サーバのOSリプレースもラクに
Serverspecも少なく!
⑦旧版/新盤を同時稼働
•  Rails  3版と  Rails  4版のサーバを同時稼働
•  内部メンバのみRails4版を本番環境でテスト
ひと通りさわったら安⼼心して切切り替え
ラクするための考え方
•  エラーゼロを⽬目指すのではなくすぐに改善してリ
リースできるように
•  守るべきところはしっかりテストを書いて担保
•  サービスメンテによる停⽌止を許容する
•  なるべく短くなるように努⼒力力はするが、ノンストップ
でないとNGとすることはしないようにすることで対
応コストを下げる
ラクするための考え⽅方
運⽤用/メンテにかかる負荷を下げつつ
考え⽅方に縛られないように
完

More Related Content

What's hot

Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話
葛 飛
 
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
智治 長沢
 

What's hot (20)

ゼロから始めるオープンソース生活
ゼロから始めるオープンソース生活ゼロから始めるオープンソース生活
ゼロから始めるオープンソース生活
 
生粋のRubyistがJavaを好きになった理由
生粋のRubyistがJavaを好きになった理由生粋のRubyistがJavaを好きになった理由
生粋のRubyistがJavaを好きになった理由
 
Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話Chatopsのおかけでエンジニアがルーティンワークから解放された話
Chatopsのおかけでエンジニアがルーティンワークから解放された話
 
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
 
リリースを支える負荷測定
リリースを支える負荷測定リリースを支える負荷測定
リリースを支える負荷測定
 
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
 
Jsugプレゼン資料new
Jsugプレゼン資料newJsugプレゼン資料new
Jsugプレゼン資料new
 
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話しDevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
DevLOVE関西2016.2.5 地道にAWS構築自動化に取り組んでいるお話し
 
テスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することテスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決すること
 
ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
161218 cybozu SRE
161218 cybozu SRE161218 cybozu SRE
161218 cybozu SRE
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
オールアバウトの DevOpsと リリースフロー
オールアバウトのDevOpsとリリースフローオールアバウトのDevOpsとリリースフロー
オールアバウトの DevOpsと リリースフロー
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
 
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだらもしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能
 
夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2 夏サミ 2013 A2 セッション資料 #natsumiA2
夏サミ 2013 A2 セッション資料 #natsumiA2
 
20171227_JJUG_LT会資料_西野大介(@nishino_chekhov)
20171227_JJUG_LT会資料_西野大介(@nishino_chekhov)20171227_JJUG_LT会資料_西野大介(@nishino_chekhov)
20171227_JJUG_LT会資料_西野大介(@nishino_chekhov)
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
 

Viewers also liked

How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)
SATOSHI TAGOMORI
 

Viewers also liked (20)

JAWS DAYS 2015 「DevOpsが普及した今だからこそ 考える DevOpsの次の姿」
JAWS DAYS 2015 「DevOpsが普及した今だからこそ 考える DevOpsの次の姿」JAWS DAYS 2015 「DevOpsが普及した今だからこそ 考える DevOpsの次の姿」
JAWS DAYS 2015 「DevOpsが普及した今だからこそ 考える DevOpsの次の姿」
 
DevOpsって何?
DevOpsって何?DevOpsって何?
DevOpsって何?
 
「管理」をなくせばうまくいく
「管理」をなくせばうまくいく「管理」をなくせばうまくいく
「管理」をなくせばうまくいく
 
20140315 JAWS Days OpsWorks
20140315 JAWS Days OpsWorks20140315 JAWS Days OpsWorks
20140315 JAWS Days OpsWorks
 
ライトニングトーーク (第5回開発コンテスト24)
ライトニングトーーク (第5回開発コンテスト24)ライトニングトーーク (第5回開発コンテスト24)
ライトニングトーーク (第5回開発コンテスト24)
 
How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)How to create/improve OSS product and its community (revised)
How to create/improve OSS product and its community (revised)
 
Data Analytics Service Company and Its Ruby Usage
Data Analytics Service Company and Its Ruby UsageData Analytics Service Company and Its Ruby Usage
Data Analytics Service Company and Its Ruby Usage
 
クックパッドのRailsリニューアル
クックパッドのRailsリニューアルクックパッドのRailsリニューアル
クックパッドのRailsリニューアル
 
VPSやめてHerokuに移行したお話
VPSやめてHerokuに移行したお話VPSやめてHerokuに移行したお話
VPSやめてHerokuに移行したお話
 
Data Analytics Service Company and Its Ruby Usage
Data Analytics Service Company and Its Ruby UsageData Analytics Service Company and Its Ruby Usage
Data Analytics Service Company and Its Ruby Usage
 
How to Make Norikra Perfect
How to Make Norikra PerfectHow to Make Norikra Perfect
How to Make Norikra Perfect
 
Cocos2d-x ver.3 開発の効率化
Cocos2d-x ver.3 開発の効率化Cocos2d-x ver.3 開発の効率化
Cocos2d-x ver.3 開発の効率化
 
Netadashi Meetup #2 20170120
Netadashi Meetup #2 20170120Netadashi Meetup #2 20170120
Netadashi Meetup #2 20170120
 
キャンバス個人用アプリ 速習ガイド
キャンバス個人用アプリ 速習ガイドキャンバス個人用アプリ 速習ガイド
キャンバス個人用アプリ 速習ガイド
 
Demodayプレゼン資料0129
Demodayプレゼン資料0129Demodayプレゼン資料0129
Demodayプレゼン資料0129
 
Herokuの新料金について
Herokuの新料金についてHerokuの新料金について
Herokuの新料金について
 
今さらきけない環境ハブ
今さらきけない環境ハブ今さらきけない環境ハブ
今さらきけない環境ハブ
 
メタップスでの少人数 グローバルプラットフォーム開発について
メタップスでの少人数 グローバルプラットフォーム開発についてメタップスでの少人数 グローバルプラットフォーム開発について
メタップスでの少人数 グローバルプラットフォーム開発について
 
Distributed Logging Architecture in Container Era
Distributed Logging Architecture in Container EraDistributed Logging Architecture in Container Era
Distributed Logging Architecture in Container Era
 
Multi thread slave_performance_on_opc
Multi thread slave_performance_on_opcMulti thread slave_performance_on_opc
Multi thread slave_performance_on_opc
 

Similar to サービスを日々運用し続けながら最新版のRailsに追従させる極意

Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
鉄平 土佐
 
福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT
学 松崎
 
Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)
masayoshi takahashi
 
Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4
Kazunori Inaba
 
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
Operation Lab, LLC.
 
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
学 松崎
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Masanori Itoh
 

Similar to サービスを日々運用し続けながら最新版のRailsに追従させる極意 (20)

第39回「Windows Server 2003 EOSに備えよう -SQL Serverはどうする?-」(2014/12/18 on しすなま!)
第39回「Windows Server 2003 EOSに備えよう -SQL Serverはどうする?-」(2014/12/18 on しすなま!)第39回「Windows Server 2003 EOSに備えよう -SQL Serverはどうする?-」(2014/12/18 on しすなま!)
第39回「Windows Server 2003 EOSに備えよう -SQL Serverはどうする?-」(2014/12/18 on しすなま!)
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
 
福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT福岡Ruby会議01 20121201 LT
福岡Ruby会議01 20121201 LT
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)Web関連技術の最新動向・プログラミング言語(サーバ側)
Web関連技術の最新動向・プログラミング言語(サーバ側)
 
Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4Linuxサーバーのセキュリティ対策 part4
Linuxサーバーのセキュリティ対策 part4
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
Fn project爆誕
Fn project爆誕Fn project爆誕
Fn project爆誕
 
WebエンジニアがXR業界へ転職した話
WebエンジニアがXR業界へ転職した話WebエンジニアがXR業界へ転職した話
WebエンジニアがXR業界へ転職した話
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
 
株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
 
running-elixir-in-production
running-elixir-in-productionrunning-elixir-in-production
running-elixir-in-production
 
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
 
OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208OSC福岡2012 LT 20121208
OSC福岡2012 LT 20121208
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
 
PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
 
A08  角田研究室8 平田詔保
A08  角田研究室8 平田詔保A08  角田研究室8 平田詔保
A08  角田研究室8 平田詔保
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
 

サービスを日々運用し続けながら最新版のRailsに追従させる極意