ペパボ福岡支社におけるrubyの活用事例
TRANSCRIPT
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/
ご清聴 ありがとうございました!