SlideShare a Scribd company logo
Copyright © 2009-2015 eureka, inc. All rights reserved.	
会員数180万人のマッチングサービスpairsの
急成長を支える技術基盤
Takuma Morikawa / Eureka, Inc.
Copyright © 2009-2015 eureka, inc. All rights reserved.	
訂正
会員数180万人のマッチングサービスpairsの
急成長を支える技術基盤
Copyright © 2009-2015 eureka, inc. All rights reserved.	
訂正
会員数180万人のマッチングサービスpairsの
急成長を支える技術基盤
↓ + 1 0 0 , 0 0 0
Copyright © 2009-2015 eureka, inc. All rights reserved.	
訂正
会員数180万人のマッチングサービスpairsの
急成長を支える技術基盤
↓ + 1 0 0 , 0 0 0
会員数190万人のマッチングサービスpairsの
急成長を支える技術基盤
Copyright © 2009-2015 eureka, inc. All rights reserved.	
1. エウレカについて
2. サービスのスケール∼pairs編∼
3. そして伝説へ…
もくじ
Copyright © 2009-2015 eureka, inc. All rights reserved.	
1. エウレカについて
2. サービスのスケール∼pairs編∼
3. そして伝説へ…
もくじ
エウレカについて
About eureka
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
Copyright © 2009-2015 eureka, inc. All rights reserved.	
で、あんた誰?
・pairsのサーバーサイド全般を担当
・エウレカは2014年2月から
・お雑煮が好きです
pairsについて
About pairs
F a c e b o o k の ソ ー シ ャ ル グ ラ フ を 活 用 し た
O n l i n e D a t i n g サ ー ビ ス
【pairsのシステム特性】
現在、月間10億PV・スクリーンビュー超
・多対多のSNSなので、ユーザーの登録数に対して、指数関数的に
負荷が上がる
⇒  今日は余裕でも、明日はそうじゃないかも…
・ゲーム並のキャンペーン展開
=> キャンペーンの種類によって負荷のアップダウンが激しい
・接点0からはじまるコミュニケーションを提供するサービスなの
で、デリケートな配慮が必要
=> 不具合はもちろんちょっとした仕様やUXの配慮の足りなさが、
クリティカルになる
Copyright © 2009-2015 eureka, inc. All rights reserved.	
1. エウレカについて
2. サービスのスケール∼pairs編∼
3. そして伝説へ…
もくじ
サービスのスケール
Scale of service
Copyright © 2009-2015 eureka, inc. All rights reserved.	
私が入ってちょうど一年くらい経ちました。
(2014年2月∼)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
入った頃について、少し昔話をします。
Copyright © 2009-2015 eureka, inc. All rights reserved.	
あのころのわたし
Copyright © 2009-2015 eureka, inc. All rights reserved.	
あのころのわたし
(半年間の FPS 出来事は長いので省略)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
あのころのわたし年表
8月(PHPがイヤで)前の会社を退職
9月 無職を謳歌する
10月 無職を謳歌する
11月 現金資産が目減りを始める
12月 現金資産がそこをついてくる...
1月 give me chocolate
Copyright © 2009-2015 eureka, inc. All rights reserved.	
あのころのわたし年表
8月(PHPがイヤで)前の会社を退職
9月 無職を謳歌する
10月 無職を謳歌する
11月 現金資産が目減りを始める
12月 現金資産がそこをついてくる...
1月 give me chocolate
2月 わけあって、エウレカへJOIN! ←New!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
pairsの事例を用いて、サービスの拡大と
ともに、どのようにシステムをスケールし
ていったか、ざっくりとお話します。
サービスのスケール
Copyright © 2009-2015 eureka, inc. All rights reserved.	
4つのプチストーリー
1) はじめてのリリース編
2) リニューアル編
3) RDB使えますか編
4) FIFO or LIFO編
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ はじめてのリリース ∼
第壱話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース
ʕº̫͡ºʔ(私=森川)        (ボス)ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日(2月)
ʕº̫͡ºʔ< 「よろしくお願いいたします。」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日(2月)
ʕº̫͡ºʔ< 「よろしくお願いいたします。」
「緊張しないでくださいね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「席はここです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日
ʕº̫͡ºʔ< o00(FPS以外のことをするのは久しぶりだな...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日
ʕº̫͡ºʔ< o00(FPS以外のことをするのは久しぶりだな...)
ʕº̫͡ºʔ< o00(キーボード無しで人と会話できるだろうか...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日
「...というわけでこんな感じで修正お願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日
「...というわけでこんな感じで修正お願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< 「かしこまりました。」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日
ʕº̫͡ºʔ< o00(...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 入社日
ʕº̫͡ºʔ< o00(...)
ʕº̫͡ºʔ< o00(またPHPか...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< (カタカタカタ..)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< (カタカタカタ..)
ʕº̫͡ºʔ< (git push [enter]  ターン!! ) ←打 音
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< (カタカタカタ..)
ʕº̫͡ºʔ< (git push [enter]  ターン!! )
ʕº̫͡ºʔ< (しばしドヤ顔。)
←打 音
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< 「修正終わりました」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< 「修正終わりました」
「お、ありがとう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「では...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「では...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「今からリリースしちゃいます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「では...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「今からリリースしちゃいます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(ええ!さすがC向けサービス。サイクルが早い..)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「新規の滞在時間低下は売上に影響ありますし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「新規の滞在時間低下は売上に影響ありますし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「既存のDAUが下がると...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「新規の滞在時間低下は売上に影響ありますし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「既存のDAUが下がると...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(なんか、わからんけどすごい...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「森川さんにはリリースも担当してもらいたいので」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「森川さんにはリリースも担当してもらいたいので」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「ちゃんと手順見てて下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: 一週間くらいして
「森川さんにはリリースも担当してもらいたいので」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「ちゃんと手順見てて下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(おお...緊張してきた...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「まずWebサーバーに入ります...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「まずWebサーバーに入ります...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ ssh srv-01」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「まずWebサーバーに入ります...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ ssh srv-01」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(メモメモ...✍)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そして公開ディレクトリに移動します」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そして公開ディレクトリに移動します」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ cd /path/to っと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そして公開ディレクトリに移動します」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ cd /path/to っと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「ふむふむ…」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ git pull」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ git pull」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「ターン!(エンターキーを叩きつける)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ git pull」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「ターン!(エンターキーを叩きつける)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(えっ)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「remote counting objects...」> bash
「create mode 100644 controller/user.php (100%)」> bash
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「remote counting objects...」> bash
「create mode 100644 controller/user.php (100%)」> bash
ʕº̫͡ºʔ< o00(あ...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「さて...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「さて...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「これで、リリースは終わりです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「さて...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「これで、リリースは終わりです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ ) o00(ぽかーん)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「あっ! あとはapp.confを編集して...と」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「あっ! あとはapp.confを編集して...と」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ vi app.conf」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「あっ! あとはapp.confを編集して...と」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「$ vi app.conf」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「e?」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「この部分を書き換えて下さい。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「この部分を書き換えて下さい。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「ま、1,2行だけなんで」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「この部分を書き換えて下さい。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「ま、1,2行だけなんで」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「2台目も同様に行います」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「2台目も同様に行います」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「git pull [enter](ターン)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「書き換えを忘れないようにしないとですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「書き換えを忘れないようにしないとですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「あ、あの」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「なんですか?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「なんですか?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「ロールバックはどうするんですか...?」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
(ちっ…git初心者かよ…)> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
(ちっ…git初心者かよ…)> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
(gitさんのスゴサ、教えてやるか…)> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「git checkout」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「git checkout」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「あるじゃないですかぁ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「git checkout」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「あるじゃないですかぁ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「git reset --hard HEAD^ でもいいですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「設定ファイルの書き換えは忘れないで下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「設定ファイルの書き換えは忘れないで下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「お、おう...」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
正直
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: コードデプロイ
しんどい
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: pairs@2014-02
この時のpairsは…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
はじめてのリリース: pairs@2014-02
■ pairsの登録者数
・80万人
■ pairsの売上
・1週間の売上=年収のx倍くらい
Copyright © 2009-2015 eureka, inc. All rights reserved.	
2014年2月頃の開発体制
Copyright © 2009-2015 eureka, inc. All rights reserved.	
2014年2月頃の開発体制
一般的…?
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・AWSを使用したPHP x MySQL
-  非VPCの全てフラットな構成
・デプロイ
-  $ git pull
・ロールバック
-  $ git checkout
2014年2月頃のpairs
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・AWSを使用したPHP x MySQL
-  非VPCの全てフラットな構成
・デプロイ
-  $ git pull
・ロールバック
-  $ git checkout
2014年2月頃のpairs
やっぱしんどい…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「…」
はじめてのリリースを終えて…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「…」
ʕº̫͡ºʔ<「また…」
はじめてのリリースを終えて…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「…」
ʕº̫͡ºʔ<「また…」
ʕº̫͡ºʔ<「PHPか…」
はじめてのリリースを終えて…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ はじめてのリリース ∼
完
第壱話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ リニューアル ∼
第弐話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル: 入社一ヶ月くらいのある日
「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル: 入社一ヶ月くらいのある日
「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「諸事情により、UIを全部変えます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル: 入社一ヶ月くらいのある日
「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「諸事情により、UIを全部変えます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「なのでPHP、JS、インフラ全てお願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル: 入社一ヶ月くらいのある日
「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「諸事情により、UIを全部変えます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「なのでPHP、JS、インフラ全てお願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(クレイジー...)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
説明しよう!
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
pairsのインフラとは
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
AWSのコンポーネントを
フル活用した
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
こんな感じである!
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
■ Web(App)
 ・EC2 2台
■ データベース
 ・RDS(MySQL)2台
■ キャッシュ
 ・ElastiCache(Memcache)2台
当時のpairsメインシステム(簡易版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
じゃん!
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
あれ…
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
なんだこれ...
全開放...?
MPやん
どこにログ保存してるんだ
ユーザー管理したいんだけど
スケーラビリティが...
Copyright © 2009-2015 eureka, inc. All rights reserved.	
なんだこれ...
全開放...?
MPやん
どこにログ保存してるんだ
ユーザー管理したいんだけど
スケーラビリティが...
しんどい
Copyright © 2009-2015 eureka, inc. All rights reserved.	
でも
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアルでは
ダウンタイムが取れるので
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
1から作りなおしました
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
システム構成図
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル前
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
堅牢なセキュリティ!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
堅牢なセキュリティ!
詳細な権限設定!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
VPC(AWS仮想プライベートクラウド)
EC2-Classic	
 VPC内	
サブネット	
 共有	
 専用	
アプリ間接続	
 インターネット経由	
 プライベート	
N/W設計	
 全開放	
 オンプレなみ	
セキュリティ	
 SGのみ	
 SG+Subnetごとの
ACL&private NW
Copyright © 2009-2015 eureka, inc. All rights reserved.	
VPC化@pairs
・EC2-Classicな構成で稼働していた
・VPCに既存のサーバーは追加できない
=> VPCの中にECを新規で作成
※ 最近は移行ツールができている模様…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
VPC化@あたし
・はじめてのVPC(VPC歴 1日)
・AWS歴 20日くらい
・もちろん、かなりはまる
- NetworkACLのレスポンスとか…
Copyright © 2009-2015 eureka, inc. All rights reserved.	
IAM(権限管理)
・アプリケーションに詳細なAWS権限を付与できる
- VPCじゃなくても元々できるやつ
・サーバーに詳細なAWS権限を付与できる
- ステージングか ら本番へのアクセス不可とか
- 擬似本番はR e a d だけ 許可とか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル���
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
柔軟なログ収集!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
柔軟なログ収集!
そしてデータ可視化!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
導入の経緯
a) アプリケーションの高速化を行いたい
- 担当者が応答速 度を集計するのが手間
- 集計結果もチェ ックしなければならない
b) ログのロストを防ぎたい
- 気軽に Web の作成・追加・削除を実行し たい
- 証跡を残す(事件や犯罪のログになり得 る)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
fluentdによるログ収集
・いい感じにログ収集してくれます
- 再送機能
- パフォーマンス
- 豊富なプラグイン
-> S3への保存も簡単
-> ElasticSearchへの送信も簡単
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ElasticSearch
・全文検索エンジン
・luceneクエリ使える
・REST APIとJSONでいい感じに操作できる
Copyright © 2009-2015 eureka, inc. All rights reserved.	
kibana
・いい感じにグラフ化できるダッシュボード
・ElasticSearchを裏側で利用
Copyright © 2009-2015 eureka, inc. All rights reserved.	
連携図
Copyright © 2009-2015 eureka, inc. All rights reserved.	
導入の結果
a) アプリケーションの高速化を行いたい
 => 応 答速度の可視化
 => 正 社員以外にも集計が可能になった
 => ト ータルで1 秒以上の改善を実行できた
ʕº̫͡ºʔo00(アプリのテキストログの集計もしたい…)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ブログ記事
http://eure.jp/blog/fluentd_elasticsearch_kibana/
kibanaとElasticSearchによる可視化
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
内部から死活監視!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
外部からパフォーマンス監視!
内部から死活監視!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
監視システム Zabbix
・様々なデータを監視できる
-  分間アクセス数・ロック数・登録者数
・しきい値を超えたらアラート
-  メール・チャット・電話 etc...
・しきい値を超えたらアクション実行
-  Apache再起動・DBクエリ抽出
Copyright © 2009-2015 eureka, inc. All rights reserved.	
監視システム NewRelic
・手軽
・一般的なサーバーの監視
・アプリケーションの監視
-  様々な言語に対応
-  応答速度の内訳を可視化できる
・DB/キャッシュ/アプリ/レンダリング
-  アプリエラー率も補足可能
Copyright © 2009-2015 eureka, inc. All rights reserved.	
監視システム NewRelic
・手軽
・一般的なサーバーの監視
・アプリケーションの監視
-  様々な言語に対応
-  応答速度の内訳を可視化できる
・DB/キャッシュ/アプリ/レンダリング
-  アプリエラー率も補足可能
Copyright © 2009-2015 eureka, inc. All rights reserved.	
監視システム NewRelic
・サーバー監視サービスのインストール
=> 4行
1.  rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm
2.  yum install newrelic-sysmond
3.  nrsysmond-config --set license_key=<ライセンスキー>
4.  /etc/init.d/newrelic-sysmond start
Copyright © 2009-2015 eureka, inc. All rights reserved.	
監視システム NewRelic
・アプリ監視サービスのインストール
=> 4行
※ PHPの実行を解析するため、性能が劣化します。
1.  yum install newrelic-php5
2.  newrelic-install install
3.  echo “newrelic.license=<ライセンスキー>” >> /etc/php.d/newrelic.ini
4.  /etc/init.d/httpd restart
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
そして一貫したデプロイ!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
そして一貫したデプロイ!
Forever Git Pull!
Copyright © 2009-2015 eureka, inc. All rights reserved.	
Capistranoによるデプロイ
・デプロイ&ロールバック!
・全て/特定 のサーバーに対して同一作業
・意外に色々できます
-  緊 急 メ ン テ 対 応
-  リ ア ル タ イ ム ロ グ 監 視
-  メ ー ル レ ポ ー テ ィ ン グ
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新機能リリース∼
1) Capistranoでデプロイする
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新機能リリース∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(バグ混入)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新機能リリース∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(バグ混入)
3) PHPのNoticeエラー上昇! 
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新機能リリース∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(バグ混入)
3) PHPのNoticeエラー上昇! 
4) NewRelicからSlackへ通知
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新機能リリース∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(バグ混入)
3) PHPのNoticeエラー上昇! 
4) NewRelicからSlackへ通知
5) (通知でiPhoneが振動する)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新機能リリース∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(バグ混入)
3) PHPのNoticeエラー上昇! 
4) NewRelicからSlackへ通知
5) (通知でiPhoneが振動する)
6) 起きる(むくり ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロ��と監視 ∼新キャンペーン∼
1) Capistranoでデプロイする
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新キャンペーン∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新キャンペーン∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇 
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新キャンペーン∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇 
4) NewRelicからSlackへ通知
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新キャンペーン∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇 
4) NewRelicからSlackへ通知
5) (通知でiPhoneが振動する)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
デプロイと監視 ∼新キャンペーン∼
1) Capistranoでデプロイする
2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇 
4) NewRelicからSlackへ通知
5) (通知でiPhoneが振動する)
6) 起きる(むくり ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
Slack
・チャットツール
・美しさ × IRCの使いやすさ
・API操作
Copyright © 2009-2015 eureka, inc. All rights reserved.	
Slack 監視用チャンネル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
Slack 監視用チャンネル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
Slack 監視用チャンネル
Copyright © 2009-2015 eureka, inc. All rights reserved.	
総評
ʕº̫͡ºʔ<「VPC化は早めにやってよかった」
ʕº̫͡ºʔ<「ログシステムは少し持て余し気味」
ʕº̫͡ºʔ<「NewRelic抜きでデプロイはもはや怖い」
ʕº̫͡ºʔ<「Capistranoはたまに失敗してかわいい」
ʕº̫͡ºʔ<「Slack便利」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ リニューアル ∼
完
第弐話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ RDB使えますか∼
第参話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「あとは私がバイオレンスな気分にならぬよう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「あとは私がバイオレンスな気分にならぬよう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「DBマスターの負荷を下げるだけですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「あとは私がバイオレンスな気分にならぬよう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「DBマスターの負荷を下げるだけですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「そ、そうですね...」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「さもなくば私が"台風の目"となります」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「さもなくば私が"台風の目"となります」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「そ、そうですか...」
Copyright © 2009-2015 eureka, inc. All rights reserved.	
RDB使えますか
「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「さもなくば私が"台風の目"となります」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「そ、そうですか...」
ʕº̫͡ºʔo00( …)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
説明しよう!
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
この時pairsは
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
DBマスターの
負荷が問題で
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
非常に困っていた
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・単一サーバ/テーブルに負荷がかかる設計
- 初期のDB設計のまま
- シャーディングできず
・スレーブに検索クエリを移し終えていた
・マスターは限界までスケールアップ済み
・/(^o^)\
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
よろしい、ならば…
非RDBだ!
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
新たなデータストアを探して
・ファイルに保存
・R e d i s
・MongoDB
・C a s s a n d r a (+ xxx万円給料上げて欲しい )
=> p e r l製の掲示板の時代に逆戻り!
=> かわいい。でも今回は様々な要因で除外
=> かわいい。でも運用面倒
=> こわい。
Copyright © 2009-2015 eureka, inc. All rights reserved.	
そこで…
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
リニューアル後
(簡略版)
Copyright © 2009-2015 eureka, inc. All rights reserved.	
DynamoDB
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・簡単にスケールする書き込み負荷
・運用の手間なし
・見た目はこわいけど根は優しい
(・社内のカップルアプリCouplesでも利用事例あり)
DynamoDB
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・ちょっとわかりづらい
・JOINするようなデータ集計は難しい
・厳密なトランザクションは難しい
・AWSから離れられなくなるリスク…
DynamoDBのダークサイド
Copyright © 2009-2015 eureka, inc. All rights reserved.	
DynamoDBにした結果…
RDB使えますか
Copyright © 2009-2015 eureka, inc. All rights reserved.	
DynamoDBにした結果…
RDB使えますか
負荷85-95%
負荷75%以下に
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・足あと機能
・行動ログ
・通知フラグ関連
DynamoDB化の例
Copyright © 2009-2015 eureka, inc. All rights reserved.	
メール・プッシュ管理 / お知らせ /
つぶやき / ベストマッチ / 投稿フィルタ
/ キャンペーン管理 / 写真リクエスト
DynamoDB化の予定
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・単一ユーザーで完結するデータ取得は向いている
・RDBのような集計クエリが使えない
- リアルタイム集計はちょっとN Gプレイ
- バッチ処理での解析はできる
- ただしプログラムを書く必要あり
DynamoDBをつかってみて
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「やはり”足あと機能”でしたね。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
DynamoDBをつかってみて
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「やはり”足あと機能”でしたね。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「はい。そう思ってました。」
DynamoDBをつかってみて
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「やはり”足あと機能”でしたね。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「はい。そう思ってました。」
ʕº̫͡ºʔo00(本当にそうだったとは…)
DynamoDBをつかってみて
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ RDB使えますか∼
完
第参話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ FIFO or LIFO ∼
第四話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「キュー化もしときましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「キュー化もしときましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(ついで…?)
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「キュー化もしときましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< o00(ついで…?)
ʕº̫͡ºʔ< 「わかりました。何使ってもいいですか?」
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「SQS使って下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「SQS使って下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< 「直接SQSで大丈夫ですかね…?」
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「SQSを」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「SQSを」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「信じましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
FIFO
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・AWSのメッセージキューサービス
・MQサーバーの運用をしなくてよい
・要件によっては多少注意が必要
・厳密なFIFOにはならない
・指定件数取りたい場合は要工夫
SQS
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・パフォーマンス / 耐障害性
 - ローカルでキューイングした方が良いのでは?
 - TCP接続のコストって大丈夫?
 - SQSが落ちたらどうしよう
SQSを考える
Copyright © 2009-2015 eureka, inc. All rights reserved.	
わたしは、
ボスSQSを信じました。
SQS
Copyright © 2009-2015 eureka, inc. All rights reserved.	
その結果…
SQS
Copyright © 2009-2015 eureka, inc. All rights reserved.	
余裕で捌きました
6万リクエスト / 1h
SQS
Copyright © 2009-2015 eureka, inc. All rights reserved.	
・半年以上落ちることもなく安定して動いています
・パフォーマンスも安定しており、スループット課
金ではないので、コストを気にしないでもOK
・最悪ロストしてよいデータだけ入れる
SQS後
Copyright © 2009-2015 eureka, inc. All rights reserved.	
∼ FIFO or LIFO ∼
完
第四話
Copyright © 2009-2015 eureka, inc. All rights reserved.	
1. エウレカについて
2. サービスのスケール∼pairs編∼
3. そして伝説へ…
もくじ
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「このスキーマは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「このスキーマは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「愛が欲しい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「時に、森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「時に、森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「はい、なんでしょうか」
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「時に、森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ<「はい、なんでしょうか」
ʕº̫͡ºʔ< o00(やべーな、この人...)
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「次のうち、もっとも愛くるしいのは」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「次のうち、もっとも愛くるしいのは」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「どいつ?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「scala」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「scala」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「golang」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「scala」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「golang」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「erlang」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「それはもちろん」
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「それはもちろん」
ʕº̫͡ºʔ<「日本人だったらやっぱり」
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「それはもちろん」
ʕº̫͡ºʔ<「日本人だったらやっぱり」
ʕº̫͡ºʔ<「JavaScriptですよね。」
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「未来を見ましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「未来を見ましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「今はその時期じゃないでしょう...!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「確かに...」
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「確かに...」
ʕº̫͡ºʔ<「分かりました...」
10月頃のある日
Copyright © 2009-2015 eureka, inc. All rights reserved.	
ʕº̫͡ºʔ<「確かに...」
ʕº̫͡ºʔ<「分かりました...」
ʕº̫͡ºʔ<「じゃあ⃝⃝で。」
10月頃のある日
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
え?俺?
鋭意、開発中!!
To be continued…

More Related Content

会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版

  • 1. Copyright © 2009-2015 eureka, inc. All rights reserved. 会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 Takuma Morikawa / Eureka, Inc.
  • 2. Copyright © 2009-2015 eureka, inc. All rights reserved. 訂正 会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤
  • 3. Copyright © 2009-2015 eureka, inc. All rights reserved. 訂正 会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ↓ + 1 0 0 , 0 0 0
  • 4. Copyright © 2009-2015 eureka, inc. All rights reserved. 訂正 会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ↓ + 1 0 0 , 0 0 0 会員数190万人のマッチングサービスpairsの 急成長を支える技術基盤
  • 5. Copyright © 2009-2015 eureka, inc. All rights reserved. 1. エウレカについて 2. サービスのスケール∼pairs編∼ 3. そして伝説へ… もくじ
  • 6. Copyright © 2009-2015 eureka, inc. All rights reserved. 1. エウレカについて 2. サービスのスケール∼pairs編∼ 3. そして伝説へ… もくじ
  • 11. Copyright © 2009-2015 eureka, inc. All rights reserved. で、あんた誰? ・pairsのサーバーサイド全般を担当 ・エウレカは2014年2月から ・お雑煮が好きです
  • 13. F a c e b o o k の ソ ー シ ャ ル グ ラ フ を 活 用 し た O n l i n e D a t i n g サ ー ビ ス
  • 15. Copyright © 2009-2015 eureka, inc. All rights reserved. 1. エウレカについて 2. サービスのスケール∼pairs編∼ 3. そして伝説へ… もくじ
  • 17. Copyright © 2009-2015 eureka, inc. All rights reserved. 私が入ってちょうど一年くらい経ちました。 (2014年2月∼)
  • 18. Copyright © 2009-2015 eureka, inc. All rights reserved. 入った頃について、少し昔話をします。
  • 19. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたし
  • 20. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたし (半年間の FPS 出来事は長いので省略)
  • 21. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたし年表 8月(PHPがイヤで)前の会社を退職 9月 無職を謳歌する 10月 無職を謳歌する 11月 現金資産が目減りを始める 12月 現金資産がそこをついてくる... 1月 give me chocolate
  • 22. Copyright © 2009-2015 eureka, inc. All rights reserved. あのころのわたし年表 8月(PHPがイヤで)前の会社を退職 9月 無職を謳歌する 10月 無職を謳歌する 11月 現金資産が目減りを始める 12月 現金資産がそこをついてくる... 1月 give me chocolate 2月 わけあって、エウレカへJOIN! ←New!
  • 23. Copyright © 2009-2015 eureka, inc. All rights reserved. pairsの事例を用いて、サービスの拡大と ともに、どのようにシステムをスケールし ていったか、ざっくりとお話します。 サービスのスケール
  • 24. Copyright © 2009-2015 eureka, inc. All rights reserved. 4つのプチストーリー 1) はじめてのリリース編 2) リニューアル編 3) RDB使えますか編 4) FIFO or LIFO編
  • 25. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ はじめてのリリース ∼ 第壱話
  • 26. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース ʕº̫͡ºʔ(私=森川)        (ボス)ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 27. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日(2月) ʕº̫͡ºʔ< 「よろしくお願いいたします。」
  • 28. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日(2月) ʕº̫͡ºʔ< 「よろしくお願いいたします。」 「緊張しないでくださいね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「席はここです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 29. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日 ʕº̫͡ºʔ< o00(FPS以外のことをするのは久しぶりだな...)
  • 30. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日 ʕº̫͡ºʔ< o00(FPS以外のことをするのは久しぶりだな...) ʕº̫͡ºʔ< o00(キーボード無��で人と会話できるだろうか...)
  • 31. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日 「...というわけでこんな感じで修正お願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 32. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日 「...というわけでこんな感じで修正お願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< 「かしこまりました。」
  • 33. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日 ʕº̫͡ºʔ< o00(...)
  • 34. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 入社日 ʕº̫͡ºʔ< o00(...) ʕº̫͡ºʔ< o00(またPHPか...)
  • 35. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして ʕº̫͡ºʔ< (カタカタカタ..)
  • 36. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして ʕº̫͡ºʔ< (カタカタカタ..) ʕº̫͡ºʔ< (git push [enter]  ターン!! ) ←打 音
  • 37. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして ʕº̫͡ºʔ< (カタカタカタ..) ʕº̫͡ºʔ< (git push [enter]  ターン!! ) ʕº̫͡ºʔ< (しばしドヤ顔。) ←打 音
  • 38. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして ʕº̫͡ºʔ< 「修正終わりました」
  • 39. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして ʕº̫͡ºʔ< 「修正終わりました」 「お、ありがとう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 40. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「では...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 41. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「では...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「今からリリースしちゃいます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 42. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「では...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「今からリリースしちゃいます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(ええ!さすがC向けサービス。サイクルが早い..)
  • 43. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 44. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 45. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 46. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「新規の滞在時間低下は売上に影響ありますし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 47. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「新規の滞在時間低下は売上に影響ありますし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「既存のDAUが下がると...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 48. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「80万人が使っているサービスですからね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「一日の売上もX万円ありますから」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「軽微なバグも影響が大きいんですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「新規の滞在時間低下は売上に影響ありますし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「既存のDAUが下がると...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(なんか、わからんけどすごい...)
  • 49. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「森川さんにはリリースも担当してもらいたいので」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 50. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「森川さんにはリリースも担当してもらいたいので」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「ちゃんと手順見てて下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 51. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: 一週間くらいして 「森川さんにはリリースも担当してもらいたいので」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「ちゃんと手順見てて下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(おお...緊張してきた...)
  • 52. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 53. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「まずWebサーバーに入ります...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 54. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「まずWebサーバーに入ります...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ ssh srv-01」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 55. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「まあ、簡単なんで!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「まずWebサーバーに入ります...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ ssh srv-01」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(メモメモ...✍)
  • 56. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そして公開ディレクトリに移動します」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 57. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そして公開ディレクトリに移動します」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ cd /path/to っと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 58. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そして公開ディレクトリに移動します」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ cd /path/to っと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「ふむふむ…」
  • 59. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 60. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ git pull」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 61. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ git pull」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「ターン!(エンターキーを叩きつける)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 62. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「そこでおもむろに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ git pull」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「ターン!(エンターキーを叩きつける)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(えっ)
  • 63. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「remote counting objects...」> bash 「create mode 100644 controller/user.php (100%)」> bash
  • 64. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「remote counting objects...」> bash 「create mode 100644 controller/user.php (100%)」> bash ʕº̫͡ºʔ< o00(あ...)
  • 65. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「さて...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 66. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「さて...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「これで、リリースは終わりです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 67. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「さて...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「これで、リリースは終わりです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ( ิ ω ิ ) o00(ぽかーん)
  • 68. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「あっ! あとはapp.confを編集して...と」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 69. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「あっ! あとはapp.confを編集して...と」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ vi app.conf」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 70. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「あっ! あとはapp.confを編集して...と」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「$ vi app.conf」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ( ิ ω ิ )<「e?」
  • 71. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 72. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「この部分を書き換えて下さい。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 73. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「この部分を書き換えて下さい。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「ま、1,2行だけなんで」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 74. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ここと...」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「この部分を書き換えて下さい。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「ま、1,2行だけなんで」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ( ิ ω ิ )<「」
  • 75. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「2台目も同様に行います」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 76. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「2台目も同様に行います」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「git pull [enter](ターン)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 77. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「書き換えを忘れないようにしないとですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 78. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「書き換えを忘れないようにしないとですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ( ิ ω ิ )<「あ、あの」
  • 79. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「なんですか?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 80. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「なんですか?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ( ิ ω ิ )<「ロールバックはどうするんですか...?」
  • 81. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 82. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ (ちっ…git初心者かよ…)> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 83. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ (ちっ…git初心者かよ…)> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ (gitさんのスゴサ、教えてやるか…)> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 84. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「git checkout」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 85. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「git checkout」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「あるじゃないですかぁ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 86. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「git checkout」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「あるじゃないですかぁ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「git reset --hard HEAD^ でもいいですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 87. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 88. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「設定ファイルの書き換えは忘れないで下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 89. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「設定ファイルの書き換えは忘れないで下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ( ิ ω ิ )<「お、おう...」
  • 90. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ 正直
  • 91. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: コードデプロイ しんどい
  • 92. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: pairs@2014-02 この時のpairsは…
  • 93. Copyright © 2009-2015 eureka, inc. All rights reserved. はじめてのリリース: pairs@2014-02 ■ pairsの登録者数 ・80万人 ■ pairsの売上 ・1週間の売上=年収のx倍くらい
  • 94. Copyright © 2009-2015 eureka, inc. All rights reserved. 2014年2月頃の開発体制
  • 95. Copyright © 2009-2015 eureka, inc. All rights reserved. 2014年2月頃の開発体制 一般的…?
  • 96. Copyright © 2009-2015 eureka, inc. All rights reserved. ・AWSを使用したPHP x MySQL -  非VPCの全てフラットな構成 ・デプロイ -  $ git pull ・ロールバック -  $ git checkout 2014年2月頃のpairs
  • 97. Copyright © 2009-2015 eureka, inc. All rights reserved. ・AWSを使用したPHP x MySQL -  非VPCの全てフラットな構成 ・デプロイ -  $ git pull ・ロールバック -  $ git checkout 2014年2月頃のpairs やっぱしんどい…
  • 98. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「…」 はじめてのリリースを終えて…
  • 99. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「…」 ʕº̫͡ºʔ<「また…」 はじめてのリリースを終えて…
  • 100. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「…」 ʕº̫͡ºʔ<「また…」 ʕº̫͡ºʔ<「PHPか…」 はじめてのリリースを終えて…
  • 101. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ はじめてのリリース ∼ 完 第壱話
  • 102. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ リニューアル ∼ 第弐話
  • 103. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル: 入社一ヶ月くらいのある日 「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 104. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル: 入社一ヶ月くらいのある日 「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「諸事情により、UIを全部変えます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 105. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル: 入社一ヶ月くらいのある日 「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「諸事情により、UIを全部変えます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「なのでPHP、JS、インフラ全てお願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 106. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル: 入社一ヶ月くらいのある日 「突然ですが」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「諸事情により、UIを全部変えます」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「なのでPHP、JS、インフラ全てお願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(クレイジー...)
  • 107. Copyright © 2009-2015 eureka, inc. All rights reserved. 説明しよう! リニューアル
  • 108. Copyright © 2009-2015 eureka, inc. All rights reserved. pairsのインフラとは リニューアル
  • 109. Copyright © 2009-2015 eureka, inc. All rights reserved. AWSのコンポーネントを フル活用した リニューアル
  • 110. Copyright © 2009-2015 eureka, inc. All rights reserved. こんな感じである! リニューアル
  • 111. Copyright © 2009-2015 eureka, inc. All rights reserved. ■ Web(App)  ・EC2 2台 ■ データベース  ・RDS(MySQL)2台 ■ キャッシュ  ・ElastiCache(Memcache)2台 当時のpairsメインシステム(簡易版)
  • 112. Copyright © 2009-2015 eureka, inc. All rights reserved. じゃん! リニューアル
  • 113. Copyright © 2009-2015 eureka, inc. All rights reserved. あれ… リニューアル
  • 114. Copyright © 2009-2015 eureka, inc. All rights reserved. なんだこれ... 全開放...? MPやん どこにログ保存してるんだ ユーザー管理したいんだけど スケーラビリティが...
  • 115. Copyright © 2009-2015 eureka, inc. All rights reserved. なんだこれ... 全開放...? MPやん どこにログ保存してるんだ ユーザー管理したいんだけど スケーラビリティが... しんどい
  • 116. Copyright © 2009-2015 eureka, inc. All rights reserved. でも リニューアル
  • 117. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアルでは ダウンタイムが取れるので リニューアル
  • 118. Copyright © 2009-2015 eureka, inc. All rights reserved. 1から作りなおしました リニューアル
  • 119. Copyright © 2009-2015 eureka, inc. All rights reserved. システム構成図
  • 120. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル前 (簡略版)
  • 121. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 122. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 123. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 124. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) 堅牢なセキュリティ!
  • 125. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) 堅牢なセキュリティ! 詳細な権限設定!
  • 126. Copyright © 2009-2015 eureka, inc. All rights reserved. VPC(AWS仮想プライベートクラウド) EC2-Classic VPC内 サブネット 共有 専用 アプリ間接続 インターネット経由 プライベート N/W設計 全開放 オンプレなみ セキュリティ SGのみ SG+Subnetごとの ACL&private NW
  • 127. Copyright © 2009-2015 eureka, inc. All rights reserved. VPC化@pairs ・EC2-Classicな構成で稼働していた ・VPCに既存のサーバーは追加できない => VPCの中にECを新規で作成 ※ 最近は移行ツールができている模様…
  • 128. Copyright © 2009-2015 eureka, inc. All rights reserved. VPC化@あたし ・はじめてのVPC(VPC歴 1日) ・AWS歴 20日くらい ・もちろん、かなりはまる - NetworkACLのレスポンスとか…
  • 129. Copyright © 2009-2015 eureka, inc. All rights reserved. IAM(権限管理) ・アプリケーションに詳細なAWS権限を付与できる - VPCじゃなくても元々できるやつ ・サーバーに詳細なAWS権限を付与できる - ステージングか ら本番へのアクセス不可とか - 擬似本番はR e a d だけ 許可とか
  • 130. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 131. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) 柔軟なログ収集!
  • 132. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) 柔軟なログ収集! そしてデータ可視化!
  • 133. Copyright © 2009-2015 eureka, inc. All rights reserved. 導入の経緯 a) アプリケーションの高速化を行いたい - 担当者が応答速 度を集計するのが手間 - 集計結果もチェ ックしなければならない b) ログのロストを防ぎたい - 気軽に Web の作成・追加・削除を実行し たい - 証跡を残す(事件や犯罪のログになり得 る)
  • 134. Copyright © 2009-2015 eureka, inc. All rights reserved. fluentdによるログ収集 ・いい感じにログ収集してくれます - 再送機能 - パフォーマンス - 豊富なプラグイン -> S3への保存も簡単 -> ElasticSearchへの送信も簡単
  • 135. Copyright © 2009-2015 eureka, inc. All rights reserved. ElasticSearch ・全文検索エンジン ・luceneクエリ使える ・REST APIとJSONでいい感じに操作できる
  • 136. Copyright © 2009-2015 eureka, inc. All rights reserved. kibana ・いい感じにグラフ化できるダッシュボード ・ElasticSearchを裏側で利用
  • 137. Copyright © 2009-2015 eureka, inc. All rights reserved. 連携図
  • 138. Copyright © 2009-2015 eureka, inc. All rights reserved. 導入の結果 a) アプリケーションの高速化を行いたい  => 応 答速度の可視化  => 正 社員以外にも集計が可能になった  => ト ータルで1 秒以上の改善を実行できた ʕº̫͡ºʔo00(アプリのテキストログの集計もしたい…)
  • 139. Copyright © 2009-2015 eureka, inc. All rights reserved. ブログ記事 http://eure.jp/blog/fluentd_elasticsearch_kibana/ kibanaとElasticSearchによる可視化
  • 140. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 141. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 142. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) 内部から死活監視!
  • 143. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) 外部からパフォーマンス監視! 内部から死活監視!
  • 144. Copyright © 2009-2015 eureka, inc. All rights reserved. 監視システム Zabbix ・様々なデータを監視できる -  分間アクセス数・ロック数・登録者数 ・しきい値を超えたらアラート -  メール・チャット・電話 etc... ・しきい値を超えたらアクション実行 -  Apache再起動・DBクエリ抽出
  • 145. Copyright © 2009-2015 eureka, inc. All rights reserved. 監視システム NewRelic ・手軽 ・一般的なサーバーの監視 ・アプリケーションの監視 -  様々な言語に対応 -  応答速度の内訳を可視化できる ・DB/キャッシュ/アプリ/レンダリング -  アプリエラー率も補足可能
  • 146. Copyright © 2009-2015 eureka, inc. All rights reserved. 監視システム NewRelic ・手軽 ・一般的なサーバーの監視 ・アプリケーションの監視 -  様々な言語に対応 -  応答速度の内訳を可視化できる ・DB/キャッシュ/アプリ/レンダリング -  アプリエラー率も補足可能
  • 147. Copyright © 2009-2015 eureka, inc. All rights reserved. 監視システム NewRelic ・サーバー監視サービスのインストール => 4行 1.  rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm 2.  yum install newrelic-sysmond 3.  nrsysmond-config --set license_key=<ライセンスキー> 4.  /etc/init.d/newrelic-sysmond start
  • 148. Copyright © 2009-2015 eureka, inc. All rights reserved. 監視システム NewRelic ・アプリ監視サービスのインストール => 4行 ※ PHPの実行を解析するため、性能が劣化します。 1.  yum install newrelic-php5 2.  newrelic-install install 3.  echo “newrelic.license=<ライセンスキー>” >> /etc/php.d/newrelic.ini 4.  /etc/init.d/httpd restart
  • 149. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 150. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 151. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) そして一貫したデプロイ!
  • 152. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版) そして一貫したデプロイ! Forever Git Pull!
  • 153. Copyright © 2009-2015 eureka, inc. All rights reserved. Capistranoによるデプロイ ・デプロイ&ロールバック! ・全て/特定 のサーバーに対して同一作業 ・意外に色々できます -  緊 急 メ ン テ 対 応 -  リ ア ル タ イ ム ロ グ 監 視 -  メ ー ル レ ポ ー テ ィ ン グ
  • 154. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新機能リリース∼ 1) Capistranoでデプロイする
  • 155. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新機能リリース∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(バグ混入)
  • 156. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新機能リリース∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(バグ混入) 3) PHPのNoticeエラー上昇! 
  • 157. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新機能リリース∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(バグ混入) 3) PHPのNoticeエラー上昇!  4) NewRelicからSlackへ通知
  • 158. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新機能リリース∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(バグ混入) 3) PHPのNoticeエラー上昇!  4) NewRelicからSlackへ通知 5) (通知でiPhoneが振動する)
  • 159. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新機能リリース∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(バグ混入) 3) PHPのNoticeエラー上昇!  4) NewRelicからSlackへ通知 5) (通知でiPhoneが振動する) 6) 起きる(むくり ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 160. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新キャンペーン∼ 1) Capistranoでデプロイする
  • 161. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新キャンペーン∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始)
  • 162. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新キャンペーン∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始) 3) DBコネクション・ロック待ち上昇 
  • 163. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新キャンペーン∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始) 3) DBコネクション・ロック待ち上昇  4) NewRelicからSlackへ通知
  • 164. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新キャンペーン∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始) 3) DBコネクション・ロック待ち上昇  4) NewRelicからSlackへ通知 5) (通知でiPhoneが振動する)
  • 165. Copyright © 2009-2015 eureka, inc. All rights reserved. デプロイと監視 ∼新キャンペーン∼ 1) Capistranoでデプロイする 2) ʕº̫͡ºʔo00(負荷のかかるキャンペーン開始) 3) DBコネクション・ロック待ち上昇  4) NewRelicからSlackへ通知 5) (通知でiPhoneが振動する) 6) 起きる(むくり ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 166. Copyright © 2009-2015 eureka, inc. All rights reserved. Slack ・チャットツール ・美しさ × IRCの使いやすさ ・API操作
  • 167. Copyright © 2009-2015 eureka, inc. All rights reserved. Slack 監視用チャンネル
  • 168. Copyright © 2009-2015 eureka, inc. All rights reserved. Slack 監視用チャンネル
  • 169. Copyright © 2009-2015 eureka, inc. All rights reserved. Slack 監視用チャンネル
  • 170. Copyright © 2009-2015 eureka, inc. All rights reserved. 総評 ʕº̫͡ºʔ<「VPC化は早めにやってよかった」 ʕº̫͡ºʔ<「ログシステムは少し持て余し気味」 ʕº̫͡ºʔ<「NewRelic抜きでデプロイはもはや怖い」 ʕº̫͡ºʔ<「Capistranoはたまに失敗してかわいい」 ʕº̫͡ºʔ<「Slack便利」
  • 171. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ リニューアル ∼ 完 第弐話
  • 172. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ RDB使えますか∼ 第参話
  • 173. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 174. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「あとは私がバイオレンスな気分にならぬよう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 175. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「あとは私がバイオレンスな気分にならぬよう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「DBマスターの負荷を下げるだけですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 176. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「UIリニューアルも終わり、一段落したね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「あとは私がバイオレンスな気分にならぬよう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「DBマスターの負荷を下げるだけですね」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「そ、そうですね...」
  • 177. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 178. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 179. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「さもなくば私が"台風の目"となります」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
  • 180. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「さもなくば私が"台風の目"となります」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「そ、そうですか...」
  • 181. Copyright © 2009-2015 eureka, inc. All rights reserved. RDB使えますか 「私の見立てでは”足あと機能”が怪しいです」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「台風が過ぎ去る前に"カタ"をつけてください」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「さもなくば私が"台風の目"となります」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「そ、そうですか...」 ʕº̫͡ºʔo00( …)
  • 182. Copyright © 2009-2015 eureka, inc. All rights reserved. 説明しよう! RDB使えますか
  • 183. Copyright © 2009-2015 eureka, inc. All rights reserved. この時pairsは RDB使えますか
  • 184. Copyright © 2009-2015 eureka, inc. All rights reserved. DBマスターの 負荷が問題で RDB使えますか
  • 185. Copyright © 2009-2015 eureka, inc. All rights reserved. 非常に困っていた RDB使えますか
  • 186. Copyright © 2009-2015 eureka, inc. All rights reserved. ・単一サーバ/テーブルに負荷がかかる設計 - 初期のDB設計のまま - シャーディングできず ・スレーブに検索クエリを移し終えていた ・マスターは限界までスケールアップ済み ・/(^o^)\ RDB使えますか
  • 187. Copyright © 2009-2015 eureka, inc. All rights reserved. よろしい、ならば… 非RDBだ! RDB使えますか
  • 188. Copyright © 2009-2015 eureka, inc. All rights reserved. 新たなデータストアを探して ・ファイルに保存 ・R e d i s ・MongoDB ・C a s s a n d r a (+ xxx万円給料上げて欲しい ) => p e r l製の掲示板の時代に逆戻り! => かわいい。でも今回は様々な要因で除外 => かわいい。でも運用面倒 => こわい。
  • 189. Copyright © 2009-2015 eureka, inc. All rights reserved. そこで… RDB使えますか
  • 190. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 191. Copyright © 2009-2015 eureka, inc. All rights reserved. リニューアル後 (簡略版)
  • 192. Copyright © 2009-2015 eureka, inc. All rights reserved. DynamoDB RDB使えますか
  • 193. Copyright © 2009-2015 eureka, inc. All rights reserved. ・簡単にスケールする書き込み負荷 ・運用の手間なし ・見た目はこわいけど根は優しい (・社内のカップルアプリCouplesでも利用事例あり) DynamoDB
  • 194. Copyright © 2009-2015 eureka, inc. All rights reserved. ・ちょっとわかりづらい ・JOINするようなデータ集計は難しい ・厳密なトランザクションは難しい ・AWSから離れられなくなるリスク… DynamoDBのダークサイド
  • 195. Copyright © 2009-2015 eureka, inc. All rights reserved. DynamoDBにした結果… RDB使えますか
  • 196. Copyright © 2009-2015 eureka, inc. All rights reserved. DynamoDBにした結果… RDB使えますか 負荷85-95% 負荷75%以下に
  • 197. Copyright © 2009-2015 eureka, inc. All rights reserved. ・足あと機能 ・行動ログ ・通知フラグ関連 DynamoDB化の例
  • 198. Copyright © 2009-2015 eureka, inc. All rights reserved. メール・プッシュ管理 / お知らせ / つぶやき / ベストマッチ / 投稿フィルタ / キャンペーン管理 / 写真リクエスト DynamoDB化の予定
  • 199. Copyright © 2009-2015 eureka, inc. All rights reserved. ・単一ユーザーで完結するデータ取得は向いている ・RDBのような集計クエリが使えない - リアルタイム集計はちょっとN Gプレイ - バッチ処理での解析はできる - ただしプログラムを書く必要あり DynamoDBをつかってみて
  • 200. Copyright © 2009-2015 eureka, inc. All rights reserved. 「やはり”足あと機能”でしたね。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ DynamoDBをつかってみて
  • 201. Copyright © 2009-2015 eureka, inc. All rights reserved. 「やはり”足あと機能”でしたね。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「はい。そう思ってました。」 DynamoDBをつかってみて
  • 202. Copyright © 2009-2015 eureka, inc. All rights reserved. 「やはり”足あと機能”でしたね。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「はい。そう思ってました。」 ʕº̫͡ºʔo00(本当にそうだったとは…) DynamoDBをつかってみて
  • 203. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ RDB使えますか∼ 完 第参話
  • 204. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ FIFO or LIFO ∼ 第四話
  • 205. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ FIFO
  • 206. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「キュー化もしときましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ FIFO
  • 207. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「キュー化もしときましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(ついで…?) FIFO
  • 208. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Dynamoのついでに」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「キュー化もしときましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< o00(ついで…?) ʕº̫͡ºʔ< 「わかりました。何使ってもいいですか?」 FIFO
  • 209. Copyright © 2009-2015 eureka, inc. All rights reserved. 「SQS使って下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ FIFO
  • 210. Copyright © 2009-2015 eureka, inc. All rights reserved. 「SQS使って下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ< 「直接SQSで大丈夫ですかね…?」 FIFO
  • 211. Copyright © 2009-2015 eureka, inc. All rights reserved. 「SQSを」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ FIFO
  • 212. Copyright © 2009-2015 eureka, inc. All rights reserved. 「SQSを」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「信じましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ FIFO
  • 213. Copyright © 2009-2015 eureka, inc. All rights reserved. ・AWSのメッセージキューサービス ・MQサーバーの運用をしなくてよい ・要件によっては多少注意が必要 ・厳密なFIFOにはならない ・指定件数取りたい場合は要工夫 SQS
  • 214. Copyright © 2009-2015 eureka, inc. All rights reserved. ・パフォーマンス / 耐障害性  - ローカルでキューイングした方が良いのでは?  - TCP接続のコストって大丈夫?  - SQSが落ちたらどうしよう SQSを考える
  • 215. Copyright © 2009-2015 eureka, inc. All rights reserved. わたしは、 ボスSQSを信じました。 SQS
  • 216. Copyright © 2009-2015 eureka, inc. All rights reserved. その結果… SQS
  • 217. Copyright © 2009-2015 eureka, inc. All rights reserved. 余���で捌きました 6万リクエスト / 1h SQS
  • 218. Copyright © 2009-2015 eureka, inc. All rights reserved. ・半年以上落ちることもなく安定して動いています ・パフォーマンスも安定しており、���ループット課 金ではないので、コストを気にしないでもOK ・最悪ロストしてよいデータだけ入れる SQS後
  • 219. Copyright © 2009-2015 eureka, inc. All rights reserved. ∼ FIFO or LIFO ∼ 完 第四話
  • 220. Copyright © 2009-2015 eureka, inc. All rights reserved. 1. エウレカについて 2. サービスのスケール∼pairs編∼ 3. そして伝説へ… もくじ
  • 221. Copyright © 2009-2015 eureka, inc. All rights reserved. 「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 222. Copyright © 2009-2015 eureka, inc. All rights reserved. 「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「このスキーマは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 223. Copyright © 2009-2015 eureka, inc. All rights reserved. 「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「このスキーマは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「愛が欲しい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 224. Copyright © 2009-2015 eureka, inc. All rights reserved. 「時に、森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 225. Copyright © 2009-2015 eureka, inc. All rights reserved. 「時に、森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「はい、なんでしょうか」 10月頃のある日
  • 226. Copyright © 2009-2015 eureka, inc. All rights reserved. 「時に、森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ ʕº̫͡ºʔ<「はい、なんでしょうか」 ʕº̫͡ºʔ< o00(やべーな、この人...) 10月頃のある日
  • 227. Copyright © 2009-2015 eureka, inc. All rights reserved. 「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 228. Copyright © 2009-2015 eureka, inc. All rights reserved. 「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「次のうち、もっとも愛くるしいのは」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 229. Copyright © 2009-2015 eureka, inc. All rights reserved. 「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「次のうち、もっとも愛くるしいのは」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「どいつ?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 230. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 231. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「scala」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 232. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「scala」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「golang」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 233. Copyright © 2009-2015 eureka, inc. All rights reserved. 「Ruby」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「scala」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「golang」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「erlang」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 234. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「それはもちろん」 10月頃のある日
  • 235. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「それはもちろん」 ʕº̫͡ºʔ<「日本人だったらやっぱり」 10月頃のある日
  • 236. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「それはもちろん」 ʕº̫͡ºʔ<「日本人だったらやっぱり」 ʕº̫͡ºʔ<「JavaScriptですよね。」 10月頃のある日
  • 237. Copyright © 2009-2015 eureka, inc. All rights reserved. 「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 238. Copyright © 2009-2015 eureka, inc. All rights reserved. 「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 239. Copyright © 2009-2015 eureka, inc. All rights reserved. 「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「未来を見ましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 240. Copyright © 2009-2015 eureka, inc. All rights reserved. 「(俺嫌いなんだよな...)」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「森川さん」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「未来を見ましょう」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 「今はその時期じゃないでしょう...!」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢ 10月頃のある日
  • 241. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「確かに...」 10月頃のある日
  • 242. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「確かに...」 ʕº̫͡ºʔ<「分かりました...」 10月頃のある日
  • 243. Copyright © 2009-2015 eureka, inc. All rights reserved. ʕº̫͡ºʔ<「確かに...」 ʕº̫͡ºʔ<「分かりました...」 ʕº̫͡ºʔ<「じゃあ⃝⃝で。」 10月頃のある日