狠狠撸

狠狠撸Share a Scribd company logo
PHPerがAWSと 
出会って 
DevOpsを目指した話 
! 
2014/10/11 
php conference2014 
Retty, Inc 
梅田昌太 @ebisusurf 
1
本日のお品書き 
? 前菜 ご挨拶 
? メイン サービスの成長とインフラの成長 
? デザート AWSを使ってDevOpsを目指す 
2
ご挨拶 
サービスの成長とインフラの成長 
AWSを使ってDevOpsを目指す 
3
Rettyという恵比寿に 
ある会社から来ました 
4
Rettyって? 
5
Rettyって? 
? 食を通じて世界中の人々をHappyに 
? グルメサービスです! 
? AppStore Google PlayへGo! 
6
About me 
@ebisusurf 
梅田昌太 
AWS 
& 
プリンタ 
7
About me 
担当 
炒飯 
8
炒飯な理由 
? 皆に愛される平和なメニュー 
? ラーメンに対するマイノリティ感 
? ラーメンの話は殴り合いになるからNG 
9
About me 
? SoftwareDesign 
? 2014年5月号~7月号 
? 短期集中連載 
? Rettyのサービス拡大を支え 
た“たたき上げ”DevOps 
10
Career 
? 渋谷でPerl,六本木でPHP 
? アプリケーションエンジニアです 
? Vim好き 
11
PerlとPHPのキャリアが 
が長い&好きなので 
12
13
本題 
14
ご挨拶 
サービスの成長と 
インフラの成長 
AWSを使ってDevOpsを目指す 
15
まずは今の構成をご紹介 
? retty.me(メインサービス) 
? news.retty.me(ニュース配信) 
? owner.retty.me(店舗様向けサービス) 
16
CloudFront 
EC2 
RDS 
EB 
ELB 
S3 
retty.me 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
Nginx Nginx 
MongoDB 
EMR 
ELC 
memcached 
ELC 
Redis 
Route 53 
17
news.retty.me 
CloudFront Route 53 
EC2 
RDS 
EB 
ELB 
S3 
ELC 
memcached 
18
owner.retty.me 
CloudFront Route 53 
EC2 
RDS 
ELB 
EB 
S3 
EC2 
RDS 
ELB 
ELC 
Redis 
EMR 
EC2 
development 
19
いきなりこうなった訳 
ではありません 
20
サービス総明記 
21
UU 
~10万 
22
retty.me 
信頼と安定の某VPS 
PHP 
Apache 
MySQL 
Linux 
23
サブドメイン 
信頼と安定のレンタルサーバ 
Wordpress 
24
10万~ 
25
AWS移行 
構成は変わらず(EC2) 
PHP 
Apache 
MySQL 
Linux 
26
50万~ 
AWSアーキテクチャに 
乗ってみる 
27
retty.me 
AWSアーキテクチャに少し 
乗ってみる 
28
100万~ 
29
何かよく解らんけど 
様子がおかしいぞ? 
30
スケールアウトしてみた 
retty.me 
31
監視もしてみた 
SotfwareDesign 6月号 
cloud watch 
retty.me オプションでディスクも監視 
Nagios Monit 
32
なんとかなった 
33
200万~400万 
34
  奇跡のカーニバル 
  開  幕  だ 
 n  ___  n 
 こ|| こ/_ら_辺_\で 
 || 
 || |(?) (?)| || 
「??| \ ̄ ̄ ̄/ ???| 
「 ̄|   ̄冂 ̄  ? ̄| 
`ヽ |/ ̄| ̄| ̄\| ノ 
一気に火を吹きだした 
35
起こった事 
36
起こった事 
? サブドメインサービス開発に火がつく 
? 既存サブドメインサービスが落ちる 
? メインサービスのアラートが止まらない 
37
起こった事 
? RDSに書き込んでたロギングが限界 
? スケールアウト対応が追いつかない&コスパの良 
いインスタンスが使えない(EC2が32bitPV、 
PHP5.3) 
? RDSのSlave上限にひっかかる(MySQL5.5) 
38
やった事 
39
やった事 
? サブドメインはレガシーアーキテクチャを捨てた 
環境で開発, 初期(学習)コストは気合い 
? PHP5.5, ZendFramework2 
? ElasticBeanstalk <- 後で話します 
40
やった事 
? サブドメインをAWS + VPCに移行 
? VPC移行は視野に入ってたのでちょうど良 
かった 
41
やった事 
? 32bit PV amazon linux -> 64bit HVM 
amazon linux 
? SoftwareDesign5月号(Vagrantを使っ 
て…) 
? ある物から構成を掘り起こす作業は泣ける 
42
やった事 
? retty.meのPHP5.3->PHP5.5 
? EBで色々選べる(そもそもサポート切れる) 
? MySQL5.5->MySQL5.6 
? 多段レプリケーション 
? ログをfluentd + S3 + MongoDB運用 
43
CloudFront Route 53 
EC2 
RDS 
ELB 
S3 
結果こうなった 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
最初の図に少し 
近づいてますね 
MongoDB 
EMR 
ELC 
memcached 
EB 
44
ミドルウェアバージョン 
アップの秘訣は? 
45
多分そんなもの無い 
? SlaveのMaster昇格を使ってdev,stg環境で 
ひたすら試す 
? E_DEPRECATEDとひたすら戦う 
? 64bit移行はPHP_INT_MAXにハマって泣き 
たかった 
46
~500万 
47
より良い物へ 
48
CloudFront Route 53 
EC2 
RDS 
ELB 
EB 
S3 
retty.me 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
Nginx Nginx 
MongoDB 
EMR 
ELC 
memcached 
ELC 
Redis 
49
Nginx upstream 
で安心deploy upstream retty { 
server enviroment-1 weight=nnn; 
server enviroment-1 weight=nnn; 
server enviroment-1 weight=nnn; 
} 
EC2 
RDS 
ELB 
EB 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
Nginx Nginx 
50
CloudFront Route 53 
EC2 
RDS 
ELB 
EB 
S3 
ログを 
TRESUREDATAへ 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
中継 
MongoDB 
51
CloudFront Route 53 
EC2 
RDS 
ELB 
EB 
S3 
CIはCircleで 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
52
CloudFront Route 53 
EC2 
RDS 
ELB 
EB 
S3 
Jenkins? 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
53
CloudFront Route 53 
EC2 
RDS 
ELB 
EB 
嫌です 
S3 
Jenkins? 
EC2 
RDS 
ELB 
EC2 
RDS 
ELB 
54
ご挨拶 
サービスの成長とインフラの成長 
AWSを使って 
DevOpsを目指す 
55
捗るサービスを選んで 
Opsの仕事を減らす 
56
俺的Best3 
57
Best3 
? Elastic Beanstalk(オートスケール&自動デ 
プロイ) 
? RDS(自前でレプリケーション, フェイルオーバ 
とか泣ける) 
? S3(EBSを拡張するの避ける) 
58
ElasticBeanstalk 
59
AWS上のHeroku 
(そもそもHerokuはry) 
60
ElasticBeanstalk 
? 一般的な Web アプリケーションに必要 な設定 
を組んで、Public DNS 名を割り振って URL 
でアクセスできるようにしてくれます。 
61
ElasticBeanstalk 
? 作るアプリは Web アプリか? Worker か? 
? RDS は必要か? Multi-AZ にする? 
? ELBを 使 う か? 1インスタンスで動かすか? 
62
ElasticBeanstalk 
のスタックApplication 
production staging development 
Enviroment Enviroment Enviroment 
63
デプロイは? 
64
git aws.push 
Application 
production staging development 
Enviroment Enviroment Enviroment 
git 
65
git aws.push 
? gitのリポジトリをそのままデプロイ 
? Enviromentとコミットを指定出来る 
? 同一Application内であればブラウザで 
Environment間でデプロイ出来る 
66
EBが無いと私の仕事は 
回らないくらい便利です 
67
大事な事 
? オートスケールを自在に使いこなす 
? レガシーアプリケーションの問題は環境変数に 
押し込む 
? インスタンスを使い捨てにする 
? .ebextensionでインスタンスを自在に操る 
68
使い捨てにするため 
ログ系はリアルタイムで送る 
69
fluentd 
Elastic 
Beanstalk Mongo&中継 
S3 
70
.ebextensionsで自由自在 
? デプロイ時のタスクをyml 
で記述(chefみたいに抽 
象化はされてない) 
? fluentdのインストール, 
apacheの設定, local 
memcached, 
postfix(やめた 
い)...etc 
commands: 
01-install-memcached: 
command: yum install -y memcached 
71
RDS 
72
ぶっちゃけ高い 
73
それを上回るメリット 
? 一度でもMySQLの運用をやった事があれば 
Multi-AZの素晴らしさはすぐわかる 
? ほぼメンテフリー 
? 気軽にスケールアップ 
74
S3 
75
EBSででかいインスタンスを 
用意するのは面倒 
? Mongoのdiskが溢れてメンテナンス不可能に 
なった 
? 因にs3fsはあまりおすすめしないってamazon 
の人も言ってた 
? S3の運用にちゃんと乗った方が楽 
76
まとめ 
77
Q.AWSを使ってDevOps 
を目指す上で 
最も重要な事は? 
78
immutable 
infrastructure? 
79
infrastructure 
as 
code? 
80
A.金 
81
金で解決する事 
? 特にRDSとかRDSとかRDSとか 
? 自前でフェイルオーバとか時間食い過ぎ 
? 負荷がきつかったらパラメータ一生懸命いじっ 
ても余りパフォーマンス上がらない、思い切っ 
てスケールアップ 
82
金で解決する事 
? アプリケーションサーバのような物はEBとかで 
ほったらかすようにする 
? データをストアするためにでかいEBSをアタッ 
チするのはやめた方が良いと思う(Mongoとか 
はどうしてもね。。。 
? AWSはインテグレーションする事が大事 
83
とにかくAWSが推奨す 
るアーキテクチャに乗る 
84
オペレーションコストの 
削減にコストをかける 
85
インフラはAWSに任せて 
PHP書きましょう! 
86
時間があればおまけ 
87
Rettyでは 
仲間を募集してます 
88
Rettyでは 
仲間を募集してます 
89
Rettyでは 
仲間を募集してます 
90
懇親会の二次会は 
Rettyで! 
91
92
ステッカー持ってます 
93
94
ありがとうございました 
95

More Related Content

Ph perか?awsと出会ってdev opsを目指した話