会員数180万人のマッチングサービスpairsの 急成長を支える技術基盤 ディレクターズカット版
- 1. Copyright © 2009-2015 eureka, inc. All rights reserved.
会員数180万人のマッチングサービスpairsの
急成長を支える技術基盤
Takuma Morikawa / Eureka, Inc.
- 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. そして伝説へ…
もくじ
- 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編
- 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.
はじめてのリリース: 入社日
「...というわけでこんな感じで修正お願いします」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< 「かしこまりました。」
- 34. Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: 入社日
ʕº̫͡ºʔ< o00(...)
ʕº̫͡ºʔ< o00(またPHPか...)
- 36. Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< (カタカタカタ..)
ʕº̫͡ºʔ< (git push [enter] ターン!! ) ←打 音
- 37. Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: 一週間くらいして
ʕº̫͡ºʔ< (カタカタカタ..)
ʕº̫͡ºʔ< (git push [enter] ターン!! )
ʕº̫͡ºʔ< (しばしドヤ顔。)
←打 音
- 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(あ...)
- 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.
はじめてのリリース: コードデプロイ
「なんですか?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「ロールバックはどうするんですか...?」
- 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^ でもいいですよ」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
- 88. Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: コードデプロイ
「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「設定ファイルの書き換えは忘れないで下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
- 89. Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: コードデプロイ
「ただし」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「設定ファイルの書き換えは忘れないで下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
( ิ ω ิ )<「お、おう...」
- 93. Copyright © 2009-2015 eureka, inc. All rights reserved.
はじめてのリリース: pairs@2014-02
■ pairsの登録者数
・80万人
■ pairsの売上
・1週間の売上=年収のx倍くらい
- 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
やっぱしんどい…
- 100. Copyright © 2009-2015 eureka, inc. All rights reserved.
ʕº̫͡ºʔ<「…」
ʕº̫͡ºʔ<「また…」
ʕº̫͡ºʔ<「PHPか…」
はじめてのリリースを終えて…
- 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(クレイジー...)
- 111. Copyright © 2009-2015 eureka, inc. All rights reserved.
■ Web(App)
・EC2 2台
■ データベース
・RDS(MySQL)2台
■ キャッシュ
・ElastiCache(Memcache)2台
当時のpairsメインシステム(簡易版)
- 114. Copyright © 2009-2015 eureka, inc. All rights reserved.
なんだこれ...
全開放...?
MPやん
どこにログ保存してるんだ
ユーザー管理したいんだけど
スケーラビリティが...
- 115. Copyright © 2009-2015 eureka, inc. All rights reserved.
なんだこれ...
全開放...?
MPやん
どこにログ保存してるんだ
ユーザー管理したいんだけど
スケーラビリティが...
しんどい
- 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 だけ 許可とか
- 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を裏側で利用
- 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による可視化
- 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
- 152. Copyright © 2009-2015 eureka, inc. All rights reserved.
リニューアル後
(簡略版)
そして一貫したデプロイ!
Forever Git Pull!
- 153. Copyright © 2009-2015 eureka, inc. All rights reserved.
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) 起きる(むくり ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
- 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) 起きる(むくり ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
- 170. Copyright © 2009-2015 eureka, inc. All rights reserved.
総評
ʕº̫͡ºʔ<「VPC化は早めにやってよかった」
ʕº̫͡ºʔ<「ログシステムは少し持て余し気味」
ʕº̫͡ºʔ<「NewRelic抜きでデプロイはもはや怖い」
ʕº̫͡ºʔ<「Capistranoはたまに失敗してかわいい」
ʕº̫͡ºʔ<「Slack便利」
- 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( …)
- 186. Copyright © 2009-2015 eureka, inc. All rights reserved.
・単一サーバ/テーブルに負荷がかかる設計
- 初期のDB設計のまま
- シャーディングできず
・スレーブに検索クエリを移し終えていた
・マスターは限界までスケールアップ済み
・/(^o^)\
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製の掲示板の時代に逆戻り!
=> かわいい。でも今回は様々な要因で除外
=> かわいい。でも運用面倒
=> こわい。
- 193. Copyright © 2009-2015 eureka, inc. All rights reserved.
・簡単にスケールする書き込み負荷
・運用の手間なし
・見た目はこわいけど根は優しい
(・社内のカップルアプリCouplesでも利用事例あり)
DynamoDB
- 194. Copyright © 2009-2015 eureka, inc. All rights reserved.
・ちょっとわかりづらい
・JOINするようなデータ集計は難しい
・厳密なトランザクションは難しい
・AWSから離れられなくなるリスク…
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をつかってみて
- 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
- 210. Copyright © 2009-2015 eureka, inc. All rights reserved.
「SQS使って下さい」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
ʕº̫͡ºʔ< 「直接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を考える
- 218. Copyright © 2009-2015 eureka, inc. All rights reserved.
・半年以上落ちることもなく安定して動いています
・パフォーマンスも安定しており、���ループット課
金ではないので、コストを気にしないでもOK
・最悪ロストしてよいデータだけ入れる
SQS後
- 220. Copyright © 2009-2015 eureka, inc. All rights reserved.
1. エウレカについて
2. サービスのスケール∼pairs編∼
3. そして伝説へ…
もくじ
- 222. Copyright © 2009-2015 eureka, inc. All rights reserved.
「このコードは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「このスキーマは愛せない」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
- 223. 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月頃のある日
- 228. Copyright © 2009-2015 eureka, inc. All rights reserved.
「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「次のうち、もっとも愛くるしいのは」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
10月頃のある日
- 229. Copyright © 2009-2015 eureka, inc. All rights reserved.
「問題です。」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「次のうち、もっとも愛くるしいのは」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
「どいつ?」> ʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢
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月頃のある日
- 235. Copyright © 2009-2015 eureka, inc. All rights reserved.
ʕº̫͡ºʔ<「それはもちろん」
ʕº̫͡ºʔ<「日本人だったらやっぱり」
10月頃のある日
- 236. Copyright © 2009-2015 eureka, inc. All rights reserved.
ʕº̫͡ºʔ<「それはもちろん」
ʕº̫͡ºʔ<「日本人だったらやっぱり」
ʕº̫͡ºʔ<「JavaScriptですよね。」
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月頃のある日
- 243. Copyright © 2009-2015 eureka, inc. All rights reserved.
ʕº̫͡ºʔ<「確かに...」
ʕº̫͡ºʔ<「分かりました...」
ʕº̫͡ºʔ<「じゃあ⃝⃝で。」
10月頃のある日