Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

小規模チームでも実現!スケーラブルな広告システム開発

137 views

Published on

2017年12月4日のBullet Live! #2で登壇しました。
AWSを活用したスケーラブルな広告システム開発について

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

小規模チームでも実現!スケーラブルな広告システム開発

  1. 1. 1 小規模チームでも実現! スケーラブルな広告システム開発 2017-12-04
  2. 2. 2 菊山 知宏 (@syl_k) ▷ 開発グループ グループリーダー 業務: ▷ AWS, PHP, Ruby, Python ▷ コードレビューやタスク調整など 経歴: ▷ iOS, Androidのアプリ、広告SDK
  3. 3. 3 サービス説明
  4. 4. 4 ASP(アフィリエイト・サービス・プロバイダー)として SLVRbullet(シルバーバレット)を開発しています
  5. 5. 5 0 200000 400000 600000 800000 1000000 1200000 8月 9月 10月 11月 アクセス数 アクセス数 今年7月にサービスをローンチ 登録サイト数は約300サイト 約200倍!
  6. 6. 6 構成について
  7. 7. 7 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2
  8. 8. 8 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 広告設定 画像配置 データ保存
  9. 9. 9 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 画像広告配信
  10. 10. 10 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 広告計測
  11. 11. 11 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない 安定稼働を目指しつ つ全体のコストを抑 えたい 案件を増やして売り 上げ向上 障害時の適切な対応 やサポート 要望
  12. 12. 12 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 画像サーバーが止まった場合
  13. 13. 13 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 画像サーバーが止まった場合
  14. 14. 14 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 高負荷で計測サーバーが止まった場合
  15. 15. 15 管理画面 一般ユーザー 死活チェック EC2 EC2 ELB CloudWatch RDS 画像サーバー (EC2) EC2 高負荷で計測サーバーが止まった場合
  16. 16. 16 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない 改善案
  17. 17. 17 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない ・S3 ・CloudFront 改善案
  18. 18. 18 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない ・S3 ・CloudFront 改善案 ・ELB ・AutoScaling
  19. 19. 19 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない ・S3 ・CloudFront 改善案 ・ELB ・AutoScaling ・Snapshot ・Multi-AZ ・S3 ・AMI
  20. 20. 20 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling
  21. 21. 21 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB 広告設定 データ保存 EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling
  22. 22. 22 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB 画像設定 キャッシュ 画像広告配信 EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling
  23. 23. 23 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB 広告計測 EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling
  24. 24. 24 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB データ保存 データ送信 EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling
  25. 25. 25 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ・S3 ・CloudFront 改善案
  26. 26. 26 問題・障害 サーバーダウン時 計測に必要なデータを分散させ ることで継続的な計測が可能 解決法 画像配信が止まった時 代替システムによる再連結で 配信可能 データベースダウン時 データベースに依存するシステ ムを減らし、継続的な計測が可 能
  27. 27. 27 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling サーバーが止まった場合
  28. 28. 28 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling S3とCloudFront で配信 サーバーが止まった場合
  29. 29. 29 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling S3が止まった場合
  30. 30. 30 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling S3が止まった場合 Originを 変更
  31. 31. 31 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling CloudFrontが止まった場合
  32. 32. 32 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling CloudFrontが止まった場合 代替CDNか 直接配信
  33. 33. 33 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling DBが止まった場合
  34. 34. 34 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling DBが止まった場合 redisで計測を 継続 計測結果を ログで送信
  35. 35. 35 現状の問題点 ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない 改善案 ・ELB ・AutoScaling
  36. 36. 36 問題・障害 負荷が一つのサーバーにの み集中する Elastic Load Balancingによる 負荷の分散 解決法 急激な負荷上昇時 (*特に夜間帯!) AutoScalingによる自動拡張・ 処理の分散
  37. 37. 37
  38. 38. 38 AutoScalingの設定 CPU使用率上昇! 高負荷時 EC2 EC2 AutoScaling AMI 高トラフィックを捌く場合 AMIから インスタンス作成
  39. 39. 39 AutoScalingの設定 CPU使用率上昇! 高負荷時 安定稼働時 CPU使用率低下 インスタンスを 削除 EC2 EC2 AutoScaling AMI AMIから インスタンス作成 AutoScaling EC2 EC2 高トラフィックを捌く場合
  40. 40. 40 AutoScalingの設定 CPU使用率上昇! 高負荷時 安定稼働時 CPU使用率低下 インスタンスを 削除 消失する前にログを退避しなければいけない EC2 EC2 AutoScaling AMI AutoScaling EC2 EC2 高トラフィックを捌く場合 データも一緒に 消えてしまう AMIから インスタンス作成
  41. 41. 41 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling 高トラフィックを捌く場合 常時ログを退避
  42. 42. 42 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい 改善案 ・Snapshot ・Multi-AZ ・S3 ・AMI
  43. 43. 43 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling データのバックアップ AMI
  44. 44. 44 管理画面 一般ユーザー 死活チェック ELB CloudWatch CloudFront EC2(m4.large) RDS Aurora Writer (db.r3.large) RDS Aurora Reader (db.r3.large) Multi-AZ S3 ELB EC2(c4.large) EC2(c4.large) Multi-AZ AutoScaling データのバックアップ Snapshot
  45. 45. 45 まとめ
  46. 46. 46 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない 安定稼働を目指しつ つ全体のコストを抑 えたい 案件を増やして売り 上げ向上 障害時の適切な対応 やサポート 要望
  47. 47. 47 ■サーバーの依存関係 • 配信サーバーが落ちれ ばユーザーに何も表示 されない • DBが落ちれば何も広 告計測ができない 現状の問題点 ■データバックアップ • 障害時にデータからの 復旧が難しい ■負荷に耐えられない • 急な高トラッフィク案 件が来ても十分にさば くことができない ・S3 ・CloudFront 改善案 ・ELB ・AutoScaling ・Snapshot ・Multi-AZ ・S3 ・AMI
  48. 48. 48 システムを構築するにあたり他サービスとの比較や 他社の事例もいろいろ参考にさせていただきました
  49. 49. 49 今後やっていきたいこと ・Lambdaでバッチなど実行 ・API GatewayによるAPI作成 ・Elasticsearch Serviceによるログ解析
  50. 50. 50 最後に
  51. 51. 51 ぜひ一度お問い合わせください! https://bltinc.co.jp/form/ 2020年度までに 国内有数のASP事業を目指して! 波風を立てる成果を デジタルマーケティング領域における、パフォーマンスマーケティングに特化した ブティック型エージェンシーです。 常に新しい「最適」を求めて、クライアント、ステイクフォルダーと走りながら 「解」を導き出すカウンターパートナーになることを標榜します。 慣例や慣習にとらわれず、時には一緒に悩み抜きながらビジネスの最大価値を 追求していきます
  52. 52. 52 エンジニア募集中!!
  53. 53. 53 ご静聴ありがとうございました

×