Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プロダクトの成長に伴うAWSの利用サービスとアーキテクチャの変遷

 プロダクトの成長に伴うAWSの利用サービスとアーキテクチャの変遷

Tomoki Kawajiri

August 26, 2022
Tweet

More Decks by Tomoki Kawajiri

Other Decks in Technology

Transcript

  1. プロダクトローンチ EC2 x 2 と RDS の構成 • ALB と

    EC2 x 2 のターゲットグ ループ • ALB には AWS Certificate Manager が発行した証明書を バインド
  2. • EC2 インスタンスは 2 台 ◦ 負荷分散とリスクヘッジのため • データベースは RDS

    を利用 ◦ データは一番の資産なので(当たり前ですが)バックアップも可能な RDS でデータ管理 • CloudFront でコンテンツ配信 ◦ CDN による高速配信に加え、アクセスの分散にもつながる
  3. EC2 オートスケーリング • EC2 インスタンスを自動的に追加または削除 することができる ◦ 指定の時間にスケジューリングすることで 予期されるアクセス数増加への体制の構 築

    ◦ 条件を指定することで一時的な増加にも 対応できる 出典:Amazon EC2 Auto Scaling(需要に合わせてコンピューティング 性能を拡張)| AWS
  4. Application Load Balancer 出典:Application Load Balancer とは? - Elastic Load

    Balancing トラフィックを複数のターゲットに分散させる • Listener ごとにルールを指定して アクセスを分散 • ヘルスチェックで有効なインスタン スへアクセスする • モニタリングでトラフィックやインス タンスの状態を監視
  5. 背景 • DB のパフォーマンス悪化 ◦ クエリの数が増えることで CPU 使用率が高まり、アクセススピード が悪化 •

    他のプロダクトも影響を受ける ◦ DB の負荷が高まることで他のプロダクトのパフォーマンスも同時に 悪化
  6. 取り組み 1 - リードレプリカ プライマリと読み取り専用のレプリカ インスタンスに分ける 出典:Amazon RDS リードレプリカ |

    クラウドリレーショナルデータベー ス | アマゾン ウェブ サービス • 読み取りのクエリ(SELECT 文)はレプリ カに投げることでプライマリのパフォー マンスと耐久性向上 • レプリカを増やすことで他プロダクトが 影響を受けなくなる
  7. 取り組み 2 - ElastiCache でデータキャッシュ フルマネージドのインメモリキャッシングサービス Redis にデータをキャッシュして DB の負荷軽減とパフォーマンスの向上

    • マスターデータなど変更性が低いレコードや取得回数が多いレ コードを一定時間キャッシュ ◦ DB へのアクセスがなくなり負荷軽減 ◦ データを早く取得できるので、アプリケーションのパフォー マンスも向上
  8. 取り組み 3 - ALB ターゲットグループを複数管理 出典:Elastic Load Balancing(複数のターゲットにわたる着信トラフィックの分 配)| AWS

    アプリケーションへのトラフィックを複数のターゲットに分けることでアクセスの負荷分散 • グループを増やすことでアクセス を分散 • パスベースのルーティングで特定 のアクセスのみ分けることが可能
  9. EC2 リザーブドインスタンス インスタンスタイプ(t3.medium など)とインスタンス数、期間を指定して購入すると、期 間内は料金がオンデマンドインスタンスに比べて最大 72 % も安く利用できる • 踏み台サーバーや

    Cron Job 実行のサーバーなど、インスタンスタイプが固定で必 要なインスタンス用に購入すると良い ◦ アクセスの大幅な増減があまり発生しないプロダクトのインスタンスに使用す ることもおすすめ
  10. EC2 スポットインスタンス AWS クラウド内で使用されていない EC2 キャパシティーを利用して、インスタンスを起 動する。オンデマンド料金に比べ最大 90 %割引 需要と供給の変動で利用できるキャパシティーも変わるので、キャパシティーがなくなる

    と突然インスタンスは終了する 終了した場合の対応を構築することで運用は可能 出典:Amazon EC2 だけじゃない⼊ 最⼊のコス ト効率を⼊に⼊れるための スポットインスタンス 使いこなし術
  11. RDS リードレプリカの分散 読み込み要求を複数の Amazon RDS リードレプリカに分散させる方 法を教えてください。 Route53 に CNAME

    で加重レコードを登録して、指定のレプリカへ転送することで複数 のレプリカへ分散させる
  12. まとめ EC2 • EC2 オートスケーリングでインスタンスの自動調整 ◦ 条件を登録して自動化 ◦ スケジューリングで予期されるトラフィック増加へ対応する •

    ALB でトラフィックの分散 ◦ ターゲットグループの切り替えでインスタンスサイズの調整 ◦ モニタリングで状況把握
  13. まとめ RDS • RDS リードレプリカで負荷分散 • Route 53 に CNAME

    で加重レコードを登録することで複数のレプリカを利用 ElastiCache • キャッシュすることで DB への負荷軽減 • アプリケーションのパフォーマンスの加速 • レプリカによる負荷分散
  14. コンテナ化 Elastic Container Registry(ECR) と Elastic Container Service(ECS) でコン テナを使用したアプリケーション起動

    • ECR にイメージ(ソースコード)を プッシュ • ECS が ECR からプルしてアプリ ケーションを起動