ペパボ福岡支社におけるrubyの活用事例

56
GMOペパボ株式会社 技術基盤チーム アドバンスド・シニア 近藤宇智朗 2015/03/11 RubymrubyビジネスセミナーFUKUOKA2015 ペパボ福岡支社における Rubyの活用事例

Upload: uchio-kondo

Post on 15-Jul-2015

10.797 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: ペパボ福岡支社におけるRubyの活用事例

GMOペパボ株式会社 技術基盤チーム アドバンスド・シニア

近藤宇智朗

2015/03/11 Ruby・mrubyビジネスセミナーFUKUOKA2015

ペパボ福岡支社における Rubyの活用事例

Page 2: ペパボ福岡支社におけるRubyの活用事例

こんにちは

Page 3: ペパボ福岡支社におけるRubyの活用事例

me

Page 4: ペパボ福岡支社におけるRubyの活用事例
Page 5: ペパボ福岡支社におけるRubyの活用事例
Page 6: ペパボ福岡支社におけるRubyの活用事例
Page 7: ペパボ福岡支社におけるRubyの活用事例
Page 8: ペパボ福岡支社におけるRubyの活用事例
Page 9: ペパボ福岡支社におけるRubyの活用事例

❌パペボ 💮ペパボ

Page 10: ペパボ福岡支社におけるRubyの活用事例

❌うずら 💮うづら

cf.

Page 11: ペパボ福岡支社におけるRubyの活用事例

!

使ってます

Page 12: ペパボ福岡支社におけるRubyの活用事例

福岡のサービス紹介

Page 13: ペパボ福岡支社におけるRubyの活用事例
Page 14: ペパボ福岡支社におけるRubyの活用事例

minne> 国内最大(当社調べ)のハンドメイドマーケットサービス > Web、アプリ(iOS/Android)の展開 > 2012年1月リリースのRailsサービス

Page 15: ペパボ福岡支社におけるRubyの活用事例

Ruby技術要素> Ruby on Rails(4.1.9) > Ruby (2.1.5) > Puppet (3.7系) > Serverspec (2.x) > Capistrano (3.x) > Fluentd(td-agent 2.x/Fluentd 0.10.x) > Ruboty, Thor による自作ツールなど…

Page 16: ペパボ福岡支社におけるRubyの活用事例
Page 17: ペパボ福岡支社におけるRubyの活用事例

ムームードメイン> 国内老舗のドメイン取得・管理サービス > ムームーメールという独自ドメイン利用可能メールサービスも

Page 18: ペパボ福岡支社におけるRubyの活用事例

Ruby技術要素> Ruby on Rails(4.1) > Chef(開発環境構築) > Capistrano(3.x)/Webistrano > Capybara

Page 19: ペパボ福岡支社におけるRubyの活用事例
Page 20: ペパボ福岡支社におけるRubyの活用事例

ロリポップ!> こちらも国内老舗のレンタルサーバーサービス > 今年で14周年! > 何十台ものサーバを扱う社内でも最大級のサービス

Page 21: ペパボ福岡支社におけるRubyの活用事例

ビジネスプラン始めました

Page 22: ペパボ福岡支社におけるRubyの活用事例

Ruby技術要素> Puppet(2系/3系アップグレード中) > Capistrano(3.x) > mod_mruby > (Serverspec) > (Ruby on Rails導入中…)

Page 23: ペパボ福岡支社におけるRubyの活用事例

Ruby事例のご紹介

Page 24: ペパボ福岡支社におけるRubyの活用事例

Ruby on Rails の利用

Page 25: ペパボ福岡支社におけるRubyの活用事例

Ruby on Rails> 以下のサービスで利用(比較的大きなもの抜粋) > minne(Webアプリ、API、管理画面) > ムームードメイン(スマホ向けサイト) > ムームーメール > ロリポップ!(一部API)

Page 26: ペパボ福岡支社におけるRubyの活用事例

Ruby on Rails> minne:3.0から~ムームードメイン: 3.2から~ > 継続的なアップグレードを実施→大きなものは4.0/4.1までキャッチアップ > 途中、Asset Pipelineの有効化など Yak刈りもありました…… > 引き続き4.2系のキャッチアップ予定

Page 27: ペパボ福岡支社におけるRubyの活用事例

Puppetによる インフラのコード化

Page 28: ペパボ福岡支社におけるRubyの活用事例

Puppet> 構成管理言語の一つ、Ruby製 > ペパボはPuppetのハードユーザ > ほぼ全社のプロジェクトで採用 > 福岡では主にロリポップ!/minne

Page 29: ペパボ福岡支社におけるRubyの活用事例

Puppet or Chef> ペパボでは原則Puppetを利用 > ノウハウが社内に蓄積されている > 枯れた挙動、安定感 > 内部DSLでなく専用言語の安心感「やりたいことを確実にやる」

> 一部、Chef/Itamae/Ansibleも適材適所で利用している

Page 30: ペパボ福岡支社におけるRubyの活用事例

Serverspec> サーバの状態を検査するツール > 元々作者の宮下氏がペパボに在籍していたこともあり、社内でも普及している > Puppetとともに活用中

Page 31: ペパボ福岡支社におけるRubyの活用事例

Puppet+ServerspecによるインフラCI

> minneの事例Puppet + Docker/Drone.io + Serverspec

Page 32: ペパボ福岡支社におけるRubyの活用事例

Puppet+ServerspecによるインフラCI

Puppetのコードをプッシュ

Drone.io のジョブで 素のDockerコンテナを作成。 そのコンテナにPuppetを適用、

Serverspecも流す

※merge後のCIが成功したら、Puppet masterに自動でマニフェストを配備

(Continuous Delivery)

Page 33: ペパボ福岡支社におけるRubyの活用事例

Capistranoによる デプロイ

Page 34: ペパボ福岡支社におけるRubyの活用事例

Capistrano以前> 手動デプロイなんて…… > 目視チェック/Excel > あらゆるタイプのミス > 上長のチェックが云々

Page 35: ペパボ福岡支社におけるRubyの活用事例

Capistrano> デプロイ(リリース)の手順を自動化するコマンドラインツール > Ruby製、もともとRoRに特化 > ロリ/ムー/minneで最新の3.x系を利用中 > WebistranoというWebラッパーもある

Page 36: ペパボ福岡支社におけるRubyの活用事例

PHPのデプロイにも導入> ディレクトリ構成さえあわせればPHPでも基本問題なし > 結果的にただの自動化以上のメリット > 秘伝のタレ化していた手順の形式知化 > stagingなどの環境導入、整備 > デプロイと言うフロー自体の見える化

Page 37: ペパボ福岡支社におけるRubyの活用事例

デプロイの記録> capistrano-github-release プラグインの開発(OSSです) > ワークフローの高速化

Page 38: ペパボ福岡支社におけるRubyの活用事例

CMによる 高負荷対応

Page 39: ペパボ福岡支社におけるRubyの活用事例

minneのCM対応> おかげさまで好評のTV CM > 技術的には=負荷のスーパー急増

Page 40: ペパボ福岡支社におけるRubyの活用事例

行った対応> よりRailsらしくする!アプリケーションを12factor対応 > ログのFluentd化 > サーバのOSアップグレードと構成のリファイン > Rubyによるサーバ操作のラッパーツールを作成(Thor) > などなど……

Page 41: ペパボ福岡支社におけるRubyの活用事例

期間> 基盤改善チームは3名(!!) > @hsbt @udzura(発表者) @yano3

> 期間は11月末~2月半ば(CM放映日)さ、、3ヶ月(他にも業務が……)

Page 42: ペパボ福岡支社におけるRubyの活用事例

その結果

Page 43: ペパボ福岡支社におけるRubyの活用事例

結果> CM前後のテレビ(全国ネット含む)特集や、CM自体の放映にも関わらずサーバダウンはなかった > 特別なことは少なく、「Railsらしく」していっただけ > Rubyと、そのエコシステムの力でアクセス増を乗り切ることができた

Page 44: ペパボ福岡支社におけるRubyの活用事例

その他のRuby導入事例

Page 45: ペパボ福岡支社におけるRubyの活用事例

CapybaraによるE2Eテスト自動化

> ムームードメインのE2EテストをCapybara + Phantomjsで作成 > 既存のPHPアプリケーションのE2Eテストも書くことができる

Page 46: ペパボ福岡支社におけるRubyの活用事例

mod_mruby/ngx_mruby> ロリポップ!:ホスティングのリソース制御でmod_mrubyを検証中 > minne:ngx_mrubyを用いた動的な画像変換サーバの導入予定→もともとカラメルで使われていたものの進化版→複数のサイズの画像、WebPなどへの対応

Page 47: ペパボ福岡支社におけるRubyの活用事例

rubotyによるChatOps> minneその他でrubotyを利用したSlack(かつてIRC)ボットを運用 > 定期的なJobの登録 > 言及を拾ってくれる > 文化作り

Page 48: ペパボ福岡支社におけるRubyの活用事例

研修での活用

Page 49: ペパボ福岡支社におけるRubyの活用事例

研修におけるRubyの活用> Rails Tutorial

Page 50: ペパボ福岡支社におけるRubyの活用事例

Rails Tutorialの活用> 新卒研修での利用 > 一部第二新卒研修でも > 非常にまとまった && 更新され続けるリソース > Railsを通じて、Web開発の基本を身につけられる

Page 51: ペパボ福岡支社におけるRubyの活用事例

総括

Page 52: ペパボ福岡支社におけるRubyの活用事例

Rubyは不可欠な技術> 自社でサービスを開発、運営することに必要な > スピードの向上 > 柔軟な仕様変更への対応 > 技術的ブランディング

> などの維持のために、Ruby on Railsの存在と豊富なRuby製ミドルウェアは非常に力になっている > エンジニアもRubyに触れられるとモチベーションが高まる

Page 53: ペパボ福岡支社におけるRubyの活用事例

参考サイト> GMOペパボ攻勢の裏側にあった「技術的負債を抱えない開発体制づくり」3つの布石 > http://engineer.typemag.jp/article/pepabo-dev

Page 54: ペパボ福岡支社におけるRubyの活用事例

Rubyを全力で使える仕事あります> GMOペパボは福岡/東京ともにエンジニアを募集中です。 > アプリケーション/インフラ両方です! > 詳細は:http://pepabo.com/recruit/career/

Page 55: ペパボ福岡支社におけるRubyの活用事例

ペパランチョン> カジュアルにエンジニアの話を聞ける制度です福岡ではガレリア様のご協力のもと開催中!http://pepabo.com/recruit/pepaluncheon/

Page 56: ペパボ福岡支社におけるRubyの活用事例

ご清聴 ありがとうございました!