AWS의 EC2 (Elastic Computer Cloud)는 2006년에 출시된 최소의 서비스중 하나이다. EC2 서비스는 AWS의 클라우드 컴퓨팅의 중심 구성 요소로 활용중이다. 또한 계속 새로운 세대의 인스턴스 유형이 출시되며 효율이 개선된 컴퓨터 비용을 절감이 가능하다.
즉, 쉽게 말하면 AWS에서 실행가능한 하나의 가상 컴퓨터라고 인지하면 된다.
먼저 EC2의 각 기능의 종류를 대략적으로 알아보고 하나하나 자세히 알아보겠다.
이름 및 태그는 말 그대로 EC2의 이름과 태그 메타데이터를 의미한다. 이러한 메타데이터는 AWS에서 태그 형태로 리소스에 할당이 가능하다. AWS에서 태그는 Key:Value 형태로서 이러한 태그를 이용하여 AWS의 모든 리소스 액세스 제어와 비용을 추적할 수 있다.
OS의 이미지는 EC2가 생성되고 설치될 OS를 이야기한다. AWS에서 EC2인스턴스에 설치되는 이미지는 기본적으로 Amazon Linux가 존재하고 페도라 리눅스의 기반으로 만들어졌다고 한다. 그 외에도 우분투, 레드햇, 로키 등 다양한 OS 이미지가 존재하고 심지어 Mac OS도 존재한다. 하지만 상용 리눅스인경우 요금이 더 많이 나가는거같아 보였다.

아무튼 이러한 이미지를 베이스로 AMI를 만들수 있는데 Amazon Machine Image 라고 부르는 AMI는 EC2 인스턴스를 시작하는데 필요한 정보를 제공한다. 예를 들어 여러 인스턴스를 만들어야 하는 경우가 있는데 AMI를 사용하여 동일한 구성을 가진 인스턴스를 시작할 수 있다. AMI는 총 3가지 형태로 사용할 수 있다.
AMI 이미지AWS Marketplace에서 제공하는 AMI 이미지AMI 이미지EC2는 AWS에서 실행되는 가상머신인 만큼 인스턴스 스펙을 지정할 수 있다. AWS에서는 수백가지의 인스턴스 유형이 존재한다. 각 인스턴스는 특정 작업에 적합하게 스펙이 설계되어있다. 예를 들면 메모리 집약적인 인스턴스, GPU 성능이 필요한 인스턴스 등 이러한 인스턴스를 고를수 있다.

인스턴스 유형은 여러가지가 있으니 자세한건 밑 AWS 링크 에서 확인할 수 있다.
인스턴스 패밀리 유형

EC2 접속은 키 페어로 통해 ssh로 접속을 할 수 있다. 프라이빗 키와 퍼블릭 키 가 존재하는데 퍼블릭키는 키를 생성할 때 EC2에 저장되고 프라이빗 키는 사용자가 개인으로 저장하게된다. 접속할 때는 프라이빗키를 사용해 안전하게 액세스할 수 있다.
EC2 인스턴스는 EBS와 인스턴스 스토어 볼륨가 존재한다. EBS 볼륨은 기본적으로 분리 가능한 블록 수준 스토리지를 제공한다. 또한 인스턴스 스토어 볼륨은 EC2를 생성하게 된다면 자동으로 생성되는 임시 스토리지이다. 두개의 스토리지 큰 차이는 EBS에 저장되는 데이터는 영구적이지만 인스턴스 스토어 볼륨은 EC2가 중지된다면 인스턴스 스토어의 모든 데이터는 손실된다. 따라서 중요한 데이터는 EBS 볼륨에 저장하고 자주 변경되는 정보 또는 임시 콘텐츠, 버퍼, 캐시등 임시로 저장해야하는 데이터는 인스턴스 스토어 볼륨을 사용하면된다.
EC2 배치 그룹은 3가지 방식이 존재한다.
짧은 네트워크 지연시간과 높은 네트워크 처리량을 제공한다. 클러스터 방식은 EC2 인스턴스를 서로 인접하게 배치한다. 주로 고성능 컴퓨팅(HPC)에서 사용된다.내결함성을 갖춰야 한다. 분산형 방식은 여러 네트워크 세그먼트와 랙에 분산 배치한다. 주로 의료 기록 시스템에 사용된다.하드웨어 장애를 방지한다. 파티션 방식은 논리 그룹으로 분할하게 된다. 주로 대규모 분산 및 복제 워크로드에 사용된다.EC2 인스턴스는 기본적으로 공유 테넌시 방식을 사용한다. 따라서 여러 AWS 계정이 같은 물리적 하드웨어를 공유할 수 있다.
전용 인스턴스는 호스트 하드웨어 수준에서 물리적으로 격리되는 EC2 인스턴스이다. 즉, 전용이 아닌 인스턴스와 다른 AWS 계정에 속하는 인스턴스로부터 격리된다.
전용 호스트에서 시작하는 인스턴스는 고객이 EC2 인스턴스 용량을 완전히 전용으로 사용하는 물리적 서버에서 실행된다. 사용자가 구성을 제어할 수 있는 격리된 서버가 제공된다.AWS가 인스턴스를 배치할 서버를 자동으로 선택하도록 하는 옵션이 존재한다. 또는 인스턴스를 배치할 전용 서버를 사용자가 구동으로 선택할 수도 있다.
사용자 데이터 Userdata는 EC2 인스턴스를 생성할 때 사용자 데이터를 인스턴스에 전달할 수 있는 옵션이 있다. 사용자 데이터는 인스턴스 시작 완료를 자동화 할 수 있다. 사용자 데이터는 루트 또는 관리자 권한으로 실행되는 shell 스크립트나 cloud-init 지시문으로 구현된다.