AWSでデプロイするために知っておきたいサービス

## はじめに
AWSは日本でも人気のクラウドコンピューティングです。AWSには200以上のサービスが存在しておりどのサービスを使うべきか迷ってしまう人もいるかと思います。その中でも本番環境にデプロイする際、知っておきたいサービスをまとめてみました

## 1. VPC (Virtual Private Cloud)
**自分専用のネットワーク空間**
VPCとはAWS上に自分だけの仮想ネットワークを作るためのサービスです。オンプレミス環境でいうところの「社内ネットワーク」のようなものです

**主な機能**
- サブネットの作成(パブリック・プライベート)
- ルートテーブルやNATゲートウェイの設定
- セキュリティグループやネットワークACLで通信制御

**本番環境での役割**
- Webサーバー(EC2)は**パブリックサブネット**に配置し、インターネットからアクセス可能
- データベース(RDS)は**プライベートサブネット**に置き、外部から直接アクセスできないようにする
- セキュリティ設定を通じて、外部からの攻撃を遮断し、安全な通信を実現する

## 2. EC2 (Elastic Compute Cloud)
**アプリを動かす仮想サーバー**
EC2は、アプリケーションを動かすための仮想サーバーを簡単に立てられるサービスです
LinuxやWindowsなど、OSも自由に選択可能で、必要に応じてスペックを変更できます

**主な機能**
- サーバーの起動/停止/スナップショットの保存
- 自動スケーリング、ELBとの連携
- EBS (Elastic Block Store)によるストレージ追加

**本番環境での役割**
- Webアプリ (例：Next.js + Rails API)の実行環境として使用
- 複数台のEC2に分散してデプロイし、**負荷分散と冗長化**を実現する
- SSH接続でアプリのデプロイやメンテナンスを実施

## 3. Route 53
**独自ドメインを使ったDNS管理**
Route 53は、AWSの**DNSサービス**です
「example.com　→ EC2のIPアドレス」など、ドメイン名とIPアドレスを結びつける役割を担う

**主な機能**
- ドメインの購入・管理
- レコード設定(A,CNAMEなど)
- ヘルスチェック機能で障害検出

**本番環境での役割**
- サービスを**独自ドメインで公開**する(例：myapp.jp)
- ELBやCloudFrontのエンドポイントにドメインを紐付け
- サーバー障害時には自動的に別のリソースにルーティング

## 4. RDS (Relational Database Service)
**管理不要の高性能DB**
RDSは、MySQLやPostgreSQLなどの**リレーショナルデータベースを簡単に運用できるサービス**です

**主な機能**
- 自動バックアップ、スナップショット取得
- マルチAZ配置による冗長構成
- スケーラビリティ(CPUやメモリの拡張)

**本番環境での役割**
- ユーザー情報や商品情報などのアプリのデータを安全に保存
- **VPCのプライベートサブネットに配置**し、EC2からのみ接続可能
- 万が一の障害時には、**自動フェイルオーバーで継続稼働**

## 5. S3 (Simple Storage Service)
**画像やファイルを保存するストレージ**
S3は、静的ファイル(画像、動画、PDFなど)を保存・配置できる**オブジェクトストレージ**です
高耐久・高可用性があり、実質無制限でデータを保存できます

**主な機能**
- バケット単位でデータ管理
- アクセス制御ポリシー、バージョニング
- 静的Webホスティング機能

**本番環境での役割**
- 商品画像やプロフィール画像の保存先
- CloudFrontと組み合わせて**高速な画像配信**を実現
- 静的ページ(LPなど)をS3単体でホスティングすることも可能

## 6. CloudFront
**グローバルに高速配信するCDN**
CloudFrontは、AWSの**CDN(コンテンツ配信ネットワーク)**サービスです
世界中にあるエッジロケーションからコンテンツ配信し、表示速度を大幅に向上させます

**主な機能**
- コンテンツのキャッシュと圧縮
- 地域ごとのアクセス制御
- HTTPS通信、署名付きURL対応

**本番環境での役割**
- S3やEC2のコンテンツを**グローバルに高速配信**
- SEOやユーザー体験の向上に貢献
- DDoS攻撃などに対するセキュリティ強化にも役立ちます

## 7. ELB (Elastic Load Balancer)
**トラフィックの負荷分散**
ELBは、複数のEC2インスタンスにトラフィックを自動で振り分けるサービスです
アクセスが集中した際に、1台のサーバーに負荷が偏るのを防ぎます

**主な機能**
- アプリケーションロードバランサー (ALB)
- ヘルスチェックと障害検出
- SSL証明書(HTTPS通信対応)

**本番環境での役割**
- 複数のEC2にデプロイされたWebアプリへ**均等にリクエストを振り分ける**
- 障害が発生したEC2を自動的に除外
- Route 53と連携、**冗長構成の中心的存在**

## 8. CloudWatch
**AWSリソースの監視とログ管理**
CloudWatchは、AWSリソースのモニタリング・アラート・ログ管理を行うサービスです
リソースの可動状況を可視化することで、障害の予兆や原因を特定しやすくなります

**主な機能**
- メトリクス監視(CPU使用率、メモリなど)
- ログ収集とダッシュボード表示
- アラーム設定による通知

**本番環境での役割**
- EC2やRDSの状態を常時監視し、異常がなければアラート
- アプリケーションのエラーログを収集し、トラブル対応を迅速化
- CloudWatch LogsとLambdaと使って**自動対応の仕組み**も構築を可能

## 9. IAM (Identity and Access Management)
**アクセス制限の司令塔**
IAMはAWS内のアクセス制限を管理するためのサービスです
人ではなく、アプリやサービスに対しても、細かいアクセスコントロールが可能です

**主な機能**
- ユーザーやロールごとにポリシー設定
- MFA(多要素認証)によるセキュリティ強化
- サービス間の信頼関係(EC2 → S3など)

**本番環境での役割**
- 開発者・管理者後のに**最小の権限のみを付与**
- CI/CDパイプラインやLambda関数にロールを付与し、S3やRDSへのアクセス制御
- セキュリティインシデントのリスクを軽減

##  まとめ
AWSを活用して本番環境を構築するには、これらのサービスを**適切に組み合わせて構成すること**が非常に重要です
VPCでネットワークを定義し、EC2でアプリを動かし、RDSでデータを管理する
Route 53、ELB、CloudFrontでんアクセスの最適化を図り、S3で静的ファイルを扱い、CloudWatchとIAMで運用とセキュリティを担保します
それぞれのサービスが役割を明確に持ち、連携し合うことで堅牢なインフラを構築することができることを学びました