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

近藤宇智朗
2015/03/11 Ruby・mrubyビジネスセミナーFUKUOKA2015
ペパボ福岡支社における
Rubyの活用事例
こんにちは
me
❌パペボ
💮ペパボ
❌うずら
💮うづら
cf.
!
使ってます
福岡のサービス紹介
minne
> 国内最大(当社調べ)の

ハンドメイドマーケットサービス
> Web、アプリ(iOS/Android)の展
開
> 2012年1月リリースの

Railsサービス
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 による自作ツールなど…
ムームードメイン
> 国内老舗の

ドメイン取得・管理サービス
> ムームーメールという

独自ドメイン利用可能

メールサービスも
Ruby技術要素
> Ruby on Rails(4.1)
> Chef(開発環境構築)
> Capistrano(3.x)/Webistrano
> Capybara
ロリポップ!
> こちらも国内老舗の

レンタルサーバーサービス
> 今年で14周年!
> 何十台ものサーバを扱う

社内でも最大級のサービス
ビジネスプラン始めました
Ruby技術要素
> Puppet(2系/3系アップグレード中)
> Capistrano(3.x)
> mod_mruby
> (Serverspec)
> (Ruby on Rails導入中…)
Ruby事例のご紹介
Ruby on Rails
の利用
Ruby on Rails
> 以下のサービスで利用

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

ムームードメイン: 3.2から∼
> 継続的なアップグレードを実施

→大きなものは4.0/4.1までキャッチアップ
> 途中、Asset Pipelineの有効化など

Yak刈りもありました……
> 引き続き4.2系のキャッチアップ予定
Puppetによる
インフラのコード化
Puppet
> 構成管理言語の一つ、Ruby製
> ペパボはPuppetのハードユーザ
> ほぼ全社のプロジェクトで採用
> 福岡では主にロリポップ!/minne
Puppet or Chef
> ペパボでは原則Puppetを利用
> ノウハウが社内に蓄積されている
> 枯れた挙動、安定感
> 内部DSLでなく専用言語の安心感

「やりたいことを確実にやる」
> 一部、Chef/Itamae/Ansibleも適
材適所で利用している
Serverspec
> サーバの状態を検査するツール
> 元々作者の宮下氏がペパボに在籍し
ていたこともあり、社内でも普及し
ている
> Puppetとともに活用中
Puppet+ServerspecによるインフラCI
> minneの事例

Puppet + Docker/Drone.io + Serverspec
Puppet+ServerspecによるインフラCI
Puppetの

コードをプッシュ
Drone.io のジョブで
素のDockerコンテナを作成。
そのコンテナにPuppetを適用、
Serverspecも流す
※merge後のCIが成功したら、

Puppet masterに自動でマニフェストを配備
(Continuous Delivery)
Capistranoによる
デプロイ
Capistrano以前
> 手動デプロイなんて……
> 目視チェック/Excel
> あらゆるタイプのミス
> 上長のチェックが云々
Capistrano
> デプロイ(リリース)の手順を

自動化するコマンドラインツール
> Ruby製、もともとRoRに特化
> ロリ/ムー/minneで最新の

3.x系を利用中
> WebistranoというWebラッパーもある
PHPのデプロイにも導入
> ディレクトリ構成さえあわせれば

PHPでも基本問題なし
> 結果的にただの自動化以上のメリット
> 秘伝のタレ化していた手順の形式知化
> stagingなどの環境導入、整備
> デプロイと言うフロー自体の見える化
デプロイの記録
> capistrano-github-release

プラグインの

開発

(OSSです)
> ワークフロー

の高速化
CMによる
高負荷対応
minneのCM対応
> おかげさまで好評のTV CM
> 技術的には=負荷のスーパー急増
行った対応
> よりRailsらしくする!

アプリケーションを12factor対応
> ログのFluentd化
> サーバのOSアップグレードと構成のリファイン
> Rubyによるサーバ操作の

ラッパーツールを作成(Thor)
> などなど……
期間
> 基盤改善チームは3名(!!)
> @hsbt

@udzura(発表者)

@yano3
> 期間は11月末∼2月半ば(CM放映
日)

さ、、3ヶ月(他にも業務が……)
その結果
結果
> CM前後のテレビ(全国ネット含む)特
集や、CM自体の放映にも関わらずサーバ
ダウンはなかった
> 特別なことは少なく、

「Railsらしく」していっただけ
> Rubyと、そのエコシステムの力で

アクセス増を乗り切ることができた
その他のRuby導入
事例
CapybaraによるE2Eテスト自動化
> ムームードメインのE2Eテストを

Capybara + Phantomjsで作成
> 既存のPHPアプリケーションの

E2Eテストも書くことができる
mod_mruby/ngx_mruby
> ロリポップ!:

ホスティングのリソース制御で

mod_mrubyを検証中
> minne:

ngx_mrubyを用いた動的な

画像変換サーバの導入予定

→もともとカラメルで使われていたものの進化版

→複数のサイズの画像、WebPなどへの対応
rubotyによるChatOps
> minneその他でrubotyを利用した

Slack(かつてIRC)ボットを運用
> 定期的なJobの登録
> 言及を拾ってくれる
> 文化作り
研修での活用
研修におけるRubyの活用
> Rails Tutorial
Rails Tutorialの活用
> 新卒研修での利用
> 一部第二新卒研修でも
> 非常にまとまった && 更新され続ける

リソース
> Railsを通じて、Web開発の基本を身
につけられる
総括
Rubyは不可欠な技術
> 自社でサービスを開発、運営することに必要な
> スピードの向上
> 柔軟な仕様変更への対応
> 技術的ブランディング
> などの維持のために、Ruby on Railsの存在と豊
富なRuby製ミドルウェアは非常に力になっている
> エンジニアもRubyに触れられるとモチベーショ
ンが高まる
参考サイト
> GMOペパボ攻勢の裏側にあった「技術的負債を抱えない開発
体制づくり」3つの布石
> http://engineer.typemag.jp/article/pepabo-dev
Rubyを全力で使える仕事あります
> GMOペパボは

福岡/東京ともにエンジニアを

募集中です。
> アプリケーション/インフラ両方です!
> 詳細は:

http://pepabo.com/recruit/
career/
ペパランチョン
> カジュアルにエンジニアの話を聞ける制度です

福岡ではガレリア様のご協力のもと開催中!
http://pepabo.com/recruit/pepaluncheon/
ご清聴
ありがとうございました!

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