
1. What's AMI ?
AMI = Amazon Machine Image

▶ AMI are a customization of an EC2 instance
▶ AMI(Amazon Machine Image)는 AWS에서 EC2 인스턴스를 생성할 때 사용하는 템플릿이다.
▶ AMI는 EC2 인스턴스를 쉽게 생성하고 관리할 수 있도록 도와주는 OS + 설정 패키지로 운영 체제(OS), 애플리케이션, 실행 환경 설정 등을 포함한 EC2 인스턴스의 사본(이미지)이다.
- You have your own software, configuration, operating system, monitoring...
- Faster boot / configuration time because all your software is pre-packaged
- AMI are built for a specific region and can be copied across regions
- You can launch EC2 instances from:
- A public AMI: AWS provided
- Your own AMI: you make and maintain them yourself
- An AWS Marketplace AMI: an AMI someone else made (and potentially sellls)
💡 AMI의 구성 요소
루트 볼륨 (Root Volume) → OS와 애플리케이션이 포함된 디스크 이미지
권한 설정 (Permissions) → 특정 계정이나 공개적으로 사용할 수 있도록 설정 가능
블록 저장소 매핑 (Block Storage Mapping) → EBS 볼륨과의 연결 정보
2. AMI Process (from an EC2 instance)

- Start an EC2 instance and customize it
- Stop the instance for data integrity
- Build an AMI - this will also create EBS snapshots
- Launch instances from other AMIs
3. AMI 실습
3-1. Userdata 넣고 EC2 인스턴스 생성



#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
아파지 웹서버인 httpd를 설치하는 User data를 넣고 Instance를 런칭한다.
인스턴스를 생성한 직후 공용 IPv4로 서버에 접속하려고 하면 작동하지 않고 연결 오류가 발생한다.
이럴 때는 http 프로토콜을 사용하고 있는지 확인한다. 그래도 안 되면 잠깐 기다려야 한다.
Instance는 실행중(Running)이라고 표시되더라도, EC2 사용자 데이터 스크립트가 처음으로 실행될 때 까지는 시간을 주어야 한다. 1분~2분 정도 걸릴 수 있다. 기다리다보면 아파치 웹 서버의 테스트 페이지로 이동한다.



화면에 It works! 라고 뜨면 아파치 웹 서버 기본 페이지가 잘 뜬 것이다.
3-2. AMI 만들기
EC2 인스턴스의 상태를 저장하고 재사용하기 위해서는 AMI를 만들어야 한다.
Instance Name 우클릭 > Image and templates > Create image


생성된 AMI를 확인하려면 AMIs 탭으로 가서 확인할 수 있다.
오른쪽으로 마우스 스크롤해서 Status 를 확인하면 생성이 완료되었는지 확인 가능하다.
AMI가 만들어지는 중에는 Pending 상태이고 생성이 완료되면 Available 상태가 된다.



3-3. Launch Instance with AMIs
이제 Amazon AMI가 생성되었기 때문에 생성된 AMI에서 인스턴스를 시작할 수 있다.
EC2 대쉬보드 > Instsasnces > Launch instances > Application and OS Image (Amazone Machine Image) > My AMIs > Owned by me > 기존에 생성한 AMI 선택 > 키 페어선택(옵션) > 기존 보안 그룹 선택

인스턴스를 생성할 때 Advanced details 로 가서 이번에는 User Data에 아래 코드를 넣어준다.
이렇게 하면 새 파일만 작성하기 때문에 httpd를 다시 설치할 필요가 없다.
왜냐하면 이미 이 AMI에는 httpd 가 포함되어 있기 때문이다.
이렇게 하면 부팅 속도가 빨라지고 바로 사용할 수 있다.
#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html
이제 생성된 Instance 의 공인 IPv4 주소로 서버 접속을 시도하면 아까 전보다 접속 시간이 훨씬 빨라진 것을 확인 해 볼 수 있다.

4. EC2 Instance Store

- EBS Volumes are network drives with good but "limited" performance
- If you need a high-performance hardward disk, use EC2 Instance Store
- Better I/O performance
- EC2 Instance Store lose their storage if they're stopped (ephemeral)
- Good for buffer / cache / scratch data / temporary content
- Risk of data loss if hardware fails
- Backups and Replication are your responsibility
5. Local EC2 Instance Store

Instance Store는 EBS와 다르게 물리적 호스트에 직접 연결된 임시 저장소이기 때문에, 성능이 엄청 빠르지만 인스턴스를 중지하면 데이터가 사라진다. 그래서 버퍼, 캐시나 임시 데이터 등을 보관하는 데에만 쓰는 것이 좋다.
AWS EC2 Instance Store의 성능은 IOPS(Input/Output Operations Per Second)로 측정한다.
5-1. IPOS(IOPS)란?
IOPS는 초당 수행할 수 있는 입출력 작업 수를 의미한다. 즉, 디스크가 초당 처리할 수 있는 입출력(읽기/쓰기) 작업 수를 나타내는 성능 지표이다.
- 높은 IOPS → 빠른 데이터 처리 속도
- 낮은 IOPS → 데이터 처리 속도가 느림
- 디스크의 성능을 측정하는 중요한 지표로 읽기/쓰기 속도에 따라 달라진다.
5-2. EC2 Instance Store VS EBS Volume

✅ Write IOPS (쓰기 IOPS)
- 초당 쓰기(write) 작업을 수행할 수 있는 횟수
- 대량의 데이터를 저장하는 로깅, 데이터베이스 쓰기 작업에서 중요하다.
✅ Random Read IOPS (랜덤 읽기 IOPS)
- 초당 임의(Random) 위치에서 읽기(Read) 작업을 수행할 수 있는 횟수
- 데이터베이스에서 랜덤한 위치의 데이터를 자주 읽는 경우 성능이 중요
- SSD가 HDD보다 Random Read IOPS가 훨씬 높음
✅ AWS Local EC2 Instance Store의 IOPS
- Instance Store는 물리적으로 EC2 인스턴스와 연결된 NVMe SSD이기 때문에 IOPS가 매우 높음
- NVMe SSD 기반 Instance Store → 최대 수십만 IOPS 가능
- 데이터가 휘발성이므로(인스턴스 중지 시 데이터 삭제), 데이터베이스 저장 용도로는 부적합
- 캐싱, 임시 데이터 저장, 고성능 애플리케이션 실행에 유리
✅ EBS Volume
- gp3는 기본 3,000 IOPS(최대 16,000)로 가격 대비 성능이 좋고,
- gp2는 3 IOPS/GB(최소 100, 최대 16,000)로 용량에 따라 성능이 증가하지만 비효율적일 수 있다.
🐦 그래서?
- EBS 볼륨의 IOPS는 볼륨 타입에 따라 다르며, gp3, io1, io2는 높은 IOPS를 제공할 수 있다.
- Instance Store는 NVMe SSD 기반으로 기본적으로 높은 IOPS를 제공하지만, 데이터가 휘발성이다.
- 고성능 + 영구 저장이 필요하면 io1/io2, 고성능 + 임시 저장이면 Instance Store 사용!