Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

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

  • Soyez le premier à commenter

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

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

×