keyboard_double_arrow_up

Blog X-Tech5エンジニアがお送りするテックブログ
SREやDevOpsをはじめ、インフラエンジニアリングの実践情報を届けします。

事例:高可用性・高負荷システムの設計・構築・コスト最適化

2022年3月11日 

可用性やMTTR(Mean Time To Repair)はどの程度必要か、コスト制約の中であらかじめ計画し実現することはもちろんのこと、開発が進み・ユーザが増え・事業フェーズが進み要件が変化していく中を、クラウドを活用し軽快に適応していきます。DevOpsやリリースエンジニアリングの範疇である、CI/CDパイプラインやGitOpsリリースの設計・構築・実装もサポートします。

X-Tech5のシステム設計・構築は要求を実現することだけでなく、ユーザ体験やサービスの事業フェーズを踏まえ、投資・実現の取捨選択を後押しする点が特徴です。

 

事例:教育系Webサービスの設計・構築・コスト最適化

  • 所要期間 :6週間
  • 実施範囲 :ヒアリング&設計&ディスカッション×2、構築
  • ドキュメント :概要レベル設計書、概要レベル手順書

パフォーマンス、セキュリティ、可用性、コスト最適化などの要求事項を満たし、かついまいるステークホルダーが無理なく、多少の背伸びで運用可能な範囲の技術を選定しWebサービスインフラおよび運用基盤(モニタリング・CI/CDなど)を設計・構築しました。

要求事項と対応例

今回は、アクセス負荷パターン・コスト最適化・必要な可用性確保(特にMTTR)の観点から、複数ノードを利用した水平スケーリングが適切と考え提案しました。実装方法は数多ありますが、今回は主要開発者陣がコンテナやGitに不慣れであったことから、リリーススケジュールを加味しEKSやECSではなくAWS Elastic Beanstalkを採用しました。

すでに開発者のPC上で開発作業が進んでおり、開発者はそのやり方が性に合っていたこと・リリースまでの期間が差し迫っていたことから開発環境はそのままとしました。

ステージング環境と本番環境を構築し、GitOpsでデプロイできるようにしました。かつてよくあったWebサーバ群+NFSサーバというアーキテクチャでNFSサーバにファイルを配置しデプロイする感覚で、Gitリポジトリにpushするとデプロイされるようにしました。

概要レベル設計書の目次例

  • 構成概要
  • 設計意図、要点
  • 可用性(配置、キャパシティ、スケーリング)
  • セキュリティ(AWSアカウント、アプリケーション、ネットワーク、バックアップ)
  • ログ
  • モニタリング(メトリクス)

 

概要レベル手順書の目次例

  • インスタンス障害発生時の切り替え方法
  • AZ障害発生時の切り替え方法
  • バックアップ・リストア方法
  • スケールアウト・スケールイン方法
  • スケールアップ方法・スケールダウン方法
  • ソフトウェアアップデート方法
  • デプロイ方法
  • 環境の停止・再開方法

ご興味・ご関心がありましたらお問い合せください。