【AWS】プレイスメントグループの種類・覚え方についてまとめてみました

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民こと、
新藏（にいくら）と申します♪
(/・ω・)/

更新期限が近いので、最近SAAの勉強をしています。

その中でプレイスメントグループが出てきたので、
**プレイスメントグループの種類（クラスタ・パーティション・スプレッド）
と私なりの覚え方について**まとめてみました。

資格勉強中の方、AWSに興味がある方の参考になれば幸いです。
(*^^)v

# 2.プレイスメントグループとは
では早速、プレイスメントグループは一言で言うと
**「複数のEC2をグループ化して、低遅延で通信させたり、ラックレベルの耐障害性を高めたりすることができる機能」**
となります。

:::note info
「プレイス　→　place →　場所」なので、
**複数のEC2を置く場所を決めているグループ**と覚えています。
:::

料金は無料なため、私がプレイスメントグループを知った当初は、
「無料で低遅延の通信ができるから、どんどん使おう！」
と考えていました。

**しかし、プレイスメントグループは基本的に同一AZでしか作成できないため、
AZレベルの障害に弱くなるというのがデメリットとなります。**

その他にも、以下の注意点があります。
* 1つのEC2を複数のプレイスメントグループに所属させることはできない。
* Dedicated Hostsをプレイスメントグループで起動することはできない。

参考：https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/limitations-placement-groups.html

AWS公式の記載は以下となります。

>ワークロードのニーズを対応するために、
>相互に依存する EC2 インスタンスのグループをプレイスメントグループ内に作成して、
そのプレイスメントに影響を与えることができます。

引用：https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-groups.html

## 2.1.クラスタープレイスメントグループとは
続きまして、クラスタープレイスメントグループです。

クラスタープレイスメントグループとは、
**「複数のEC2を同一、もしくは近接ラックに配置することで
低いレイテンシー・高いスループットを実現する機能」**
のことです。

:::note info
「クラスター爆弾」や「コロナのクラスター感染」を考えて、
**狭い場所に沢山いる　=　距離が近いから早く通信できる**
というイメージで覚えています。
:::

また、配置イメージとAWS公式の記載は以下となります。

![placement-group-cluster.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/b7c6a5e7-c8e0-e62e-2f6e-68f430c288fa.png)


>クラスタープレイスメントグループは、
>単一のアベイラビリティーゾーン内のインスタンスを
>論理的にグループ化したものです。

>クラスタープレイスメントグループは、
>同じリージョン内の複数のピア接続 VPC にまたがることができます。

>同じクラスタープレイスメントグループ内のインスタンスは、
>TCP/IP トラフィックのフローあたりのスループット上限が高くなり、
>ネットワークの二分帯域幅の広い同じセグメントに配置されます。

出典：https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-strategies.html

## 2.2.パーティションプレイスメントグループとは
続きまして、パーティションプレイスメントグループです。

パーティションプレイスメントグループとは、
**「パーティション1つがラック1つに対応し、同じラックでEC2を起動することで、
プレイスメントグループの利点を活かしつつ、HW障害にも耐えられる機能」**
のことです。

パーティションは7つまで作成可能です。

:::note info
飲食店等で机の間に「パーティション」が設置されているのを考えて、
**料理をこぼしても他のテーブルに影響がない
= HW障害が起きても別のパーティションには影響がない**
というイメージで覚えています。
:::

また、配置イメージとAWS公式の記載は以下となります。
![placement-group-partition.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/ee45d051-5d0d-ba0a-c6cc-d0f99f7bb3a6.png)

>パーティションプレイスメントグループは、
>アプリケーションに関連するハードウェア障害の頻度を軽減するために役立ちます。

>パーティションプレイスメントグループを使用する場合、
>Amazon EC2 は各グループをパーティションと呼ばれる論理的なセグメントに分割します。

>Amazon EC2 では、プレイスメントグループ内の各パーティションにそれぞれ一連のラックがあります。
>各ラックには独自のネットワークおよび電源があります。
>プレイスメントグループ内のパーティションどうしが同じラックを共有することはありません。
>これにより、アプリケーション内でのハードウェア障害による影響を隔離できます。

出典：https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-strategies.html

## 2.3.スプレッドプレイスメントグループとは
続きまして、スプレッドプレイスメントグループです。

スプレッドプレイスメントグループとは、
**「1つのラックに1つのEC2を配置し、プレイスメントグループの利点は活かしつつ、
パーティションプレイスメントグループよりもさらにHW障害に耐えられる機能」**
のことです。

AZごとに7つまでEC2を起動することができ、
複数AZにまたがり作成することもできます。

:::note info
スプレッドシートを考えて、
**かなり細かく分けられているので、
パーティションプレイスメントグループよりもHW障害に耐えられる**
というイメージで覚えています。
:::

:::note warn
自分自身も詳しくないのですが、

EC2の台数が多い時はパーティションプレイスメントグループ、
少ない時はスプレッドプレイスメントグループ

という使い分けなんですかね・・・？
:::

また、配置イメージとAWS公式の記載は以下となります。

![placement-group-spread.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/37aefa58-01a4-e93d-2389-37cc55eebe54.png)

>スプレッドプレイスメントグループは、それぞれ異なるハードウェアに配置されるインスタンスのグループです。

>スプレッドプレイスメントグループは、
>少数の重要なインスタンスが互いに分離して保持される必要があるアプリケーションに推奨されます。

>スプレッドレベルのプレイスメントグループでインスタンスを起動すると、
>インスタンスが同じ機器を共有するときに発生し得る同時障害のリスクが軽減されます。

>スプレッドレベルのプレイスメントグループは、異なるハードウェアへのアクセスを提供するため、
>長時間のインスタンスタイプの混合やインスタンスの起動に適しています。

出典：https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-strategies.html

# 3.おわりに
ここまで読んで下さり、ありがとうございます！！！
(^^)

今回は色々なプレイスメントグループについてまとめてみました。
次回も何かしら記事にします♪
(:3_ヽ)_