Ph perがawsと出会ってdev opsを目指した話
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 130 views

PHPカンファレンス2014の資料です

PHPカンファレンス2014の資料です

Statistics

Views

Total Views
130
Views on SlideShare
128
Embed Views
2

Actions

Likes
3
Downloads
1
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ph perがawsと出会ってdev opsを目指した話 Presentation Transcript

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