💡AWSを学び始めたきっかけ
仕事の内容に release が関わっており、その流れの中でAWSに頻繁に触れる機会がありました。
この機会を活かして、AWSの知識をいくつか学びました。
❓AWSとは
AWS(Amazon Web Services)は、Amazonが提供するクラウドサービスプラットフォームです。サーバー、ストレージ、データベース、監視、デプロイツールなどのインフラが必要な場合でも、必要に応じていつでも該当するサービスを利用開始できます。
📝現在主に触れて学んだAWSサービス
⭐ EC2:クラウドサーバー
EC2は、クラウド上で動作するLinux / Windowsサーバーだと考えると分かりやすいです。
✅特徴:
- Web画面で数回クリックするだけでサーバーを立ち上げられる
- 使った分だけ料金が発生する(時間 / 秒単位の課金)
- ハードウェア故障などを気にする必要がない
- 足りなければ台数を増やしたり、より大きいスペックに変更できる
- 不要になれば停止 / 削除すれば料金も止まる
🧠 基本概念:
- Instance(インスタンス)
スペック選択(CPUコア数、メモリ容量、ディスク容量など) - AMI(システムイメージテンプレート)
例:Ubuntu + Java + Nginx がインストール済みのイメージ。
同じ構成のマシンを追加で作りたい場合、このAMIを使えばすぐに作成できます。 - EBS(ディスク)
EC2を停止(Stop)しても、EBS内のデータは残ります。
削除(Terminate)した際にEBSを保持しない設定にすると、データは消えます。 - Region / AZ(リージョン / アベイラビリティゾーン)
例:
ap-northeast-1 = 東京リージョン
その中に複数のAZ(データセンター)があり、例えば ap-northeast-1a、1c などがあります。
高可用性を実現する場合は、複数AZにサービスを配置し、どこか1つのデータセンターが落ちてもサービスが動き続けるようにします。
⭐ S3:オブジェクトストレージ
S3はAWSが提供するストレージサービスで、画像・ファイル・バックアップなどの静的リソースを保存するのに適しています。
現代のアーキテクチャでは、EC2が計算処理を担当し、S3が保存を担当するケースが一般的です。
✅特徴:
- 容量はほぼ無制限で信頼性が非常に高く、EC2のディスクよりもかなり安い。
- グローバルアクセス:画像をS3に置いてURLを渡せば、世界中からアクセスできる。
- プログラムから直接読み書きできる。例えば:
Spring Boot からS3へファイルアップロード
フロントエンドから直接S3へ画像アップロード
バックエンドがS3からファイルを読み取ってユーザーに返す
🧠 基本概念:
- Bucket(フォルダ)
- Object(ファイル)
- Key(Bucket内でのObjectの保存パス)
⭐ RDS:クラウド上のデータベース
RDSはAWSのデータベースサービスで、MySQLやPostgreSQLなどのDBインスタンスを素早く作成できます。
✅特徴:
- 自動バックアップが可能
- Multi-AZ
- 自動スケール(拡張)
- パフォーマンス監視
⭐ CodeDeploy:自動デプロイツール
CodeDeployを使わずにEC2のコードを更新する場合、通常は以下のような流れになります:
- SSHでEC2にログイン
- 古いプログラムを停止
- 新しいコードをpull / 新しいJARをアップロード
- 依存関係をインストール
- サービスを再起動
- 正常に動作しているか確認
🧠 基本概念:
- Application(デプロイ対象のプロジェクト)
- Deployment Group(デプロイ対象のサーバーグループ)
- AppSpecファイル(デプロイ手順書、YAMLファイル)
- Agent(EC2にインストールする小さなプログラム、デプロイ実行担当)
役割:
1.新しいバージョンをダウンロード
2.スクリプトを実行
3.ステータスを報告
⭐ CloudWatch:監視とログ
CloudWatchはAWSが提供する監視サービスで、サーバーのリソース使用状況・ログ・アラートなどを確認できます。
バグがインフラ関連の問題かどうか判断する際に、過去のユーザー操作記録などを確認できます。
👩💻個人プロジェクト実践:Lightsailで小規模サイトをデプロイ
その後、自分で小規模なWebサイトを作成し、デプロイして公開する必要がありました。
プロジェクト規模が小さく、さらにコストを抑えたかったため、AWSの Lightsail を選びました。
Lightsailは扱いやすく、個人プロジェクトにとってコストパフォーマンスの高い選択肢だと感じました。
💬AWSを学んだ感想とまとめ
AWSのサービスは非常に多いですが、仕事やプロジェクトで実際に使う部分から学んでいけば、徐々に全体像を理解できるようになると感じました。