制御盤BASIC Vol - オムロン制御機器インターネットサービス ......制御盤BASIC Vol.1 3 制御盤設計の留意点 IEC60204-1に準拠した盤設計のポイント
会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤...
-
Upload
takuma-morikawa -
Category
Technology
-
view
8.161 -
download
1
Transcript of 会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤...
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
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.
あのころのわたし
(半年間の F P S 出来事は長いので省略)
Copyright © 2009-2015 eureka, inc. All rights reserved.
あのころのわたし年表
8月(PHPがイヤで)前の会社を退職 9月 無職を謳歌する 10月 無職を謳歌する 11月 現金資産が目減りを始める 12月 現金資産がそこをついてくる . . . 1月 g ive me chocolate
Copyright © 2009-2015 eureka, inc. All rights reserved.
あのころのわたし年表
8月(PHPがイヤで)前の会社を退職 9月 無職を謳歌する 10月 無職を謳歌する 11月 現金資産が目減りを始める 12月 現金資産がそこをついてくる . . . 1月 g ive me chocolate 2月 わけあって、エウレカへJOIN! ←N e w !
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.
はじめてのリリース: pa i rs@2014-02
この時のpairsは…
Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: pa i rs@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月頃のpa i rs
Copyright © 2009-2015 eureka, inc. All rights reserved.
・AWSを使用したPHP x MySQL - 非VPCの全てフラットな構成
・デプロイ - $ git pull
・ロールバック - $ git checkout
2014年2月頃のpa i rs
やっぱしんどい…
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台 ■ キャッシュ ・Elast iCache(Memcache)2台
当時のpa i rsメインシステム(簡易版)
Copyright © 2009-2015 eureka, inc. All rights reserved.
じゃん!
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.
あれ…
リニューアル
Copyright © 2009-2015 eureka, inc. All rights reserved.
なんだこれ...
全開放...?
ただのLAMPやん
どこにログ保存してるんだ
ユーザー管理したいんだけど
スケーラビリティが...
Copyright © 2009-2015 eureka, inc. All rights reserved.
なんだこれ...
全開放...?
ただのLAMPやん
どこにログ保存してるんだ
ユーザー管理したいんだけど
スケーラビリティが...
しんどい
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化@pai rs
・EC2-C lass icな構成で稼働していた ・VPCに既存のサーバーは追加できない
=> VPCの中にECを新規で作成 ※ 最近は移行ツールができている模様…
Copyright © 2009-2015 eureka, inc. All rights reserved.
VPC化@あたし
・はじめてのVPC(VPC歴 1日) ・AWS歴 20日くらい ・もちろん、かなりはまる
- Ne tworkACLのレスポンスとか…
Copyright © 2009-2015 eureka, inc. All rights reserved.
IAM(権限管理)
・アプリケーションに詳細なAWS権限を付与できる - V P Cじゃなくても元々できるやつ
・サーバーに詳細な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 ) ログのロストを防ぎたい -気軽にW e bの作成・追加・削除を実行したい -証跡を残す(事件や犯罪のログになり得る)
Copyright © 2009-2015 eureka, inc. All rights reserved.
f l uen tdによるログ収集
・いい感じにログ収集してくれます
- 再送機能
- パフォーマンス
- 豊富なプラグイン -> S3への保存も簡単
-> E las t i cSearchへの送信も簡単
Copyright © 2009-2015 eureka, inc. All rights reserved.
Elas t i cSearch
・全文検索エンジン ・ luceneクエリ使える ・REST APIとJSONでいい感じに操作できる
Copyright © 2009-2015 eureka, inc. All rights reserved.
k ibana
・いい感じにグラフ化できるダッシュボード ・Elast icSearchを裏側で利用
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/
k ibanaとElas t i cSearchによる可視化
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.
監視システム Zabb ix
・様々なデータを監視できる - 分間アクセス数・ロック数・登録者数
・しきい値を超えたらアラート
- メール・チャット・電話 e tc . . . ・しきい値を超えたらアクション実行
- Apache再起動・DBクエリ抽出
Copyright © 2009-2015 eureka, inc. All rights reserved.
監視システム NewRel i c
・手軽 ・一般的なサーバーの監視 ・アプリケーションの監視
- 様々な言語に対応 - 応答速度の内訳を可視化できる
・DB/キャッシュ /アプリ /レンダリング - アプリエラー率も補足可能
Copyright © 2009-2015 eureka, inc. All rights reserved.
監視システム NewRel i c
・手軽 ・一般的なサーバーの監視 ・アプリケーションの監視
- 様々な言語に対応 - 応答速度の内訳を可視化できる
・DB/キャッシュ /アプリ /レンダリング - アプリエラー率も補足可能
Copyright © 2009-2015 eureka, inc. All rights reserved.
監視システム NewRel i c
・サーバー監視サービスのインストール => 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.
監視システム NewRel i c
・アプリ監視サービスのインストール => 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.
Cap is t ranoによるデプロイ
・デプロイ&ロールバック! ・全て /特定 のサーバーに対して同一作業 ・意外に色々できます
- 緊急メンテ対応 - リアルタイムログ監視 - メールレポーティング
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新機能リリース~
1) Capist ranoでデプロイする
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新機能リリース~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(バグ混入)
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新機能リリース~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(バグ混入)
3) PHPのNot iceエラー上昇!
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新機能リリース~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(バグ混入)
3) PHPのNot iceエラー上昇!
4) NewRel icからSlackへ通知
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新機能リリース~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(バグ混入)
3) PHPのNot iceエラー上昇!
4) NewRel icからSlackへ通知
5) (通知で iPhoneが振動する)
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新機能リリース~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(バグ混入)
3) PHPのNot iceエラー上昇!
4) NewRel icからSlackへ通知
5) (通知で iPhoneが振動する)
6) 起きる(むくり ʕʘʘʔ
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新キャンペーン~
1) Capist ranoでデプロイする
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新キャンペーン~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(負荷のかかるキャンペーン開始)
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新キャンペーン~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新キャンペーン~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇
4) NewRel icからSlackへ通知
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新キャンペーン~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇
4) NewRel icからSlackへ通知
5) (通知で iPhoneが振動する)
Copyright © 2009-2015 eureka, inc. All rights reserved.
デプロイと監視 ~新キャンペーン~
1) Capist ranoでデプロイする
2) ʕº ºʔo00(負荷のかかるキャンペーン開始)
3) DBコネクション・ロック待ち上昇
4) NewRel icから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化は早めにやってよかった」 ʕº ºʔ<「ログシステムは少し持て余し気味」 ʕº ºʔ<「NewRel ic抜きでデプロイはもはや怖い」 ʕº ºʔ<「Capis t ranoはたまに失敗してかわいい」 ʕº ºʔ<「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 ・M o n g o D B ・C a s s a n d r a ( + x x x万円給料上げて欲しい )
= > 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.
・簡単にスケールする書き込み負荷 ・運用の手間なし ・見た目はこわいけど根は優しい (・社内のカップルアプリCoup lesでも利用事例あり)
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のついでに」> ʕʘʘʔ
F IFO
Copyright © 2009-2015 eureka, inc. All rights reserved.
「Dynamoのついでに」> ʕʘʘʔ
「キュー化もしときましょう」> ʕʘʘʔ
F IFO
Copyright © 2009-2015 eureka, inc. All rights reserved.
「Dynamoのついでに」> ʕʘʘʔ
「キュー化もしときましょう」> ʕʘʘʔ ʕº ºʔ< o00(ついで…?)
F IFO
Copyright © 2009-2015 eureka, inc. All rights reserved.
「Dynamoのついでに」> ʕʘʘʔ
「キュー化もしときましょう」> ʕʘʘʔ ʕº ºʔ< o00(ついで…?) ʕº ºʔ< 「わかりました。何使ってもいいですか?」
F IFO
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」> ʕʘʘʔ
「er lang」> ʕʘʘʔ
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月頃のある日
え?俺?
鋭意、開発中!!
To be continued…