Fargateタスクの起動インスタンスの性能とネットワーク

## 概要
ECS Fargateで起動しているコンテナがどのように起動しているのか気になったので確かめてみた&メモ

## 参考
Farfgateでコンテナを起動する際に割り当てられるインスタンスの性能等はこちらが非常に参考になった

- https://qiita.com/nabeken/items/69b47e2d346a61d34176

## やってみたこと
- 同一サービスで複数タスクを起動
- タスク定義で複数コンテナを設定

## 確認したこと
SSMエージェントにより接続可能な状態にして、下記コマンドで起動マシンと環境変数のHostNameを確認してみた

- lscpu
- printenv

FagateでのSSMエージェントによる接続は以下の記事を参考にさせていただきました

- https://qiita.com/pocari/items/3f3d77c80893f9f1e132
- https://enokawa.hatenablog.jp/entry/2019/09/05/104545

## 同一サービスで複数タスクを起動 
- マシンの性能がタスクごとには異なるインスタンス上で起動している
- HOSTNAME=◯◯.ec2.internal とあるので、Fargateの裏側ではEC2インスタンスが起動しており、タスクが起動の際に適当なインスタンスに割り当てられている？
- 勝手な予想だが、起動に時間がかかることを考えるとFargateを起動する際には、裏側でFargate用のインスタンスが立ち上がり、その後コンテナが起動している？

### タスクその１
```
$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               79
Model name:          Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
Stepping:            1
CPU MHz:             2300.114
BogoMIPS:            4600.07
Hypervisor vendor:   Xen
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            46080K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
```

```
$ printenv
HOSTNAME=ip-192-168-0-197.ec2.internal
SHLVL=1
HOME=/home/ssm-user
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/745145ac-8b5d-41cd-ad96-3b6c88c1469c
AWS_EXECUTION_ENV=AWS_ECS_FARGATE
AWS_DEFAULT_REGION=us-east-1
_=lscpu
TERM=xterm-256color
ECS_CONTAINER_METADATA_URI=http://169.254.170.2/v3/7722837d-9090-4126-9821-4c483f9666ab
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
AWS_REGION=us-east-1
PWD=/
```

### タスクその2
```
$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               63
Model name:          Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
Stepping:            2
CPU MHz:             2400.052
BogoMIPS:            4800.12
Hypervisor vendor:   Xen
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            30720K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
```

```
$ printenv
HOSTNAME=ip-192-168-1-11.ec2.internal
SHLVL=1
HOME=/home/ssm-user
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/3de311c9-d545-4940-a661-710e9e827444
AWS_EXECUTION_ENV=AWS_ECS_FARGATE
AWS_DEFAULT_REGION=us-east-1
_=lscpu
TERM=xterm-256color
ECS_CONTAINER_METADATA_URI=http://169.254.170.2/v3/b1e257f2-8f1b-4a47-90b7-5a4eedb71b38
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
AWS_REGION=us-east-1
PWD=/
```

## 同一タスクに複数コンテナを起動
- コンテナを2つ起動したが、どちらもコマンドの結果同じ
- HOSTNAME=ip-192-168-1-41.ec2.internalなので同一タスクでは同一のインスタンス内で起動している
- 同一タスクであればlocalhostでコンテナ間通信が可能

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-networking.html

```
$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  2
Core(s) per socket:  1
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               63
Model name:          Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
Stepping:            2
CPU MHz:             2900.031
BogoMIPS:            5800.14
Hypervisor vendor:   Xen
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            25600K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
```

```
$ printenv
HOSTNAME=ip-192-168-1-41.ec2.internal
SHLVL=1
HOME=/home/ssm-user
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/bd484b23-2fe8-4d45-905d-f5f39c3a45c6
AWS_EXECUTION_ENV=AWS_ECS_FARGATE
AWS_DEFAULT_REGION=us-east-1
_=lscpu
TERM=xterm-256color
ECS_CONTAINER_METADATA_URI=http://169.254.170.2/v3/580f63d3-18c2-454c-a8bc-4d4ffa9ada78
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=C.UTF-8
AWS_REGION=us-east-1
PWD=/
```