AWS EC2の基本と活用方法 クラウドでのサーバー運用

<br>

# ■ はじめに

今回は **AWS (Amazon Web Services)** についての記事になりますが、
その中でも**EC2 (Elastic Compute Cloud)** について深掘りした内容となっています。
まずAWSとはなにかといったところから、EC2の基本から具体的な使い方までの参考になればと思います。

# ■ 目次

1. [AWSとは](#1-awsとは)
2. [AWS EC2の概要](#2-aws-ec2の概要)
3. [AWS EC2を使うと何ができるのか](#3-aws-ec2を使うと何ができるのか)
4. [まとめ](#4-まとめ)

# 1. AWSとは
<br>

**AWS** とは、「Amazon Web Services」の略でAmazonが提供するクラウドコンピューティングサービスです。
インターネット経由でサーバーやストレージ、データベースなどを利用することができ、オンデマンド[^1]でインフラを管理することができます。

### AWSの特徴

#### その1. **オンデマンドなリソース提供**
AWSは必要なときに必要なだけのコンピューティングリソースを使えるオンデマンド型のサービスです。
そのためサーバーの購入や運用にかかる初期コストが不要で、使用した分だけの料金を支払う従量課金制の料金形態となっています。
導入コスト面が比較的軽いため、スタートアップから大企業まで様々な規模のビジネスでAWSの活用が進んでいます。

#### その2. **スケーラビリティ**

リソースのスケール（増減）が簡単にできることも特徴の一つです。
Webサービスでトラフィックが急増した場合でも、AWSであれば簡単にサーバーを増強することができ、ユーザーの増加にも対応可能です。
逆に利用が減少したときのサーバーの縮小にも対応しており、必要に応じてコストを抑えることができます。

#### その3. **高い信頼性**
世界中に分散したデータセンター（リージョン）を持っており、各リージョンはさらに複数の**アベイラビリティゾーン**（Availability Zone）で構成されています。
仮に障害が発生しても別のリージョンやアベイラビリティゾーン[^2]でサービスが継続される仕組みを持っているため、障害発生時においても安心した運用が可能です。

#### その4. **高いセキュリティ**
世界中の様々なセキュリティ標準や規制に対応したセキュリティ機能を提供しており、IAM（Identity and Access Management）を利用することでユーザーごとにアクセス権を細かく設定することも可能であるため、セキュリティレベルも高いといえます。

<br>

以下はAWSサービスの一例です。
- **EC2 (Elastic Compute Cloud)**
    - 仮想サーバーをオンデマンドで使用できるサービス

- **S3 (Simple Storage Service)**
    - 大容量のデータを保存できるオブジェクトストレージ

- **RDS (Relational Database Service)**
    - リレーショナルデータベースを簡単にデプロイできるサービス

今回の記事ではこの中でも代表的なサービスである **EC2** についてをフォーカスします。

# 2. AWS EC2の概要
<br>

**EC2 (Elastic Compute Cloud)** はAWSが提供する仮想サーバーをオンデマンドで利用できるサービスです。EC2を用いることで、必要なときに必要なだけのサーバーリソースを割り当てることができ、運用コストを最小限に抑えシステムの構築が可能です。

上記でも記載した通り必要なリソースを必要なタイミングで増減させることができ、
詳細な設定としてはトラフィックの多い時間帯にはサーバーを増やし、負荷の少ない時間には減らすといった設定まで可能です。

また、LinuxやWindowsのOSを以外にも以下のようにインスタンスタイプ（サーバーのスペック）も選択することができます。

**t2.micro**
    小規模なウェブサイトやテスト環境に適した低コストのタイプ
    
**m5.large**
一般的なアプリケーションに適したバランスの良いタイプ

**p4d**
ディープラーニングや科学計算など、GPUを必要とする高度な計算処理に最適なタイプ


# 3. AWS EC2を使うと何ができるのか
<br>

#### 1. ウェブサイトやアプリケーションのホスティング

EC2の利用方法の一つとして、ウェブサイトやウェブアプリケーションを簡単にホスティング[^3]できる**仮想サーバー**として用いられます。
例えばEC2を用いることでウェブサーバーを立ち上げ、インターネット上に自分のウェブサイトを公開することができます。

#### 2. データの分析
EC2はデータ処理や分析のためのサーバーとしても使用できます。
Pythonなどの言語で大規模なデータの処理を行う、機械学習のトレーニングを行うといった作業に適した環境を構築することが可能です。
必要に応じて高性能なインスタンスタイプを選択することで、効率よく処理を進めることができます。

このように用途に応じて大規模なデータ処理やデータ分析を行う**サーバー**としても利用できます。

#### 3. 開発環境の構築

開発やテスト環境を迅速に構築するためにも活用されるため、テストサーバーを立ち上げて実際の動作確認を行うことも可能です。
またクラウド上に開発環境を立ち上げることで、開発チーム全体が時間や場所を問わず作業できる環境を整えることができます。

#### 4. バックアップとリカバリ
EC2にはスナップショットという機能があり、インスタンスの状態をバックアップとして保存することができます。
スナップショットにより何らかの障害が発生した場合には迅速にリカバリを行うことが可能です。
定期的にスナップショットを作成することでデータの消失リスクを最小限に抑えられます。


# 4. まとめ

- AWS EC2は、仮想サーバーをオンデマンドで利用できるクラウドサービス
    - **ウェブホスティング**や**データ分析**など、さまざまな用途で活用可能
    - スケールの柔軟性により、負荷に応じたサーバーリソースの増減が容易
    - 高性能なインスタンスを選べば、機械学習など高度な計算処理にも対応できる
    <br>
    
- EC2の利用例
    - **ウェブサイトやアプリのホスティング**
    NginxやApacheなどを使って簡単にウェブサイトを公開
    <br>
    
    - **データ処理・分析**
    大規模データセットの処理や機械学習のトレーニングが可能
    <br>
    
    - **開発環境・テスト環境の構築**
    クラウド上でどこでも作業できる開発環境を整えられる
    <br>
    
    - **バックアップとリカバリ**
    スナップショット機能で定期的にバックアップし、障害発生時の迅速な復旧が可能


[^1]:ユーザの要求があった際に、その要求に応じてサービスを提供する事
[^2]:1つのリージョン内で切り離されており、冗長的な電力源/ネットワーク/接続機能を備えているデータセンター
[^3]:サーバーを借りること