EC2 기초
EC2 는 AWS 에서 제공하는 것들 중 가장 대중적인 것들 중 하나이다.
Elastic Compute Cloud 의 약자로 AWS 에서 Infrastructure as a Service 를 수행하는 방법이다.
EC2 는 하나의 서비스가 아닌 높은 수준의 여러가지 구성요소들로 구성되어 있다.
EC2 에선 버츄얼 머신도 빌릴 수 있는데 이것을 EC2 인스턴스라고 부른다.
버츄얼 드라이브나 EBS 볼륨에 데이터를 저장할 수도 있고 시스템 부하를 분산할 수도 있다.(Elastic Loar Balancer)
오토 스케일링 혹은 ASG 를 사용하여 서비스를 확장할 수도 있다.
클라우드는 컴퓨터들을 빌리는 것을 가능하게 한다.
EC2 인스턴스를 위한 OS 를 선택할 수 있고 대표적으로는 윈도우, 맥 OS, 리눅스 등이 있다.
이 가상 머신에 CPU 코어 갯수를 설정하고, RAM, 저장 공간(네트워크를 통해 연결된 저장공간인 EBS 나 EFS / 하드웨어에 연결 EC2 인스턴스 스토어), 네트워크 유형, EC2 인스턴스 방화벽(보안 그룹) 마지막으로 EC2 User Data 라고 불리는 인스턴스를 구성하기 위해 사용하는 Bootstrap 스크립트가 있다.
즉, 버츄얼 머신을 원하는 대로 선택할 수 있고 AWS 에서 빌릴 수 있다는 것이다.
부트 스트랩은 가상 머신이 시작할 때 적어놓은 명령어들을 실행하는 것이다.
이 스크립트는 처음 시작할 때 딱 한 번만 작동하고 다시는 작동하지 않는다.
즉, EC2 User Data 는 특수한 목적으로 작동하는 것이다. 부팅 작업을 자동화하기 위한 것이라 부트스트랩이라는 이름이 붙었다.
그럼 어떤 작업을 자동화하는 것일까? 일반적으로 인스턴스를 부팅할 때 패키지 매니저를 업데이트 하거나 소프트웨어를 설치하거나 인터넷에서 일반 파일을 다운로드 받거나 아니면 생각할 수 있는 어떤 것이든 할 수 있다.
User Data Script 를 많이 작성하면 작성할수록 인스턴스 부팅 시간이 오래 걸릴 것이다.
EC2 User Data scripts 는 루트 사용자와 함께 작동한다.
EC2 에는 어떤 인스턴스 유형을 사용해야 할까?
수천 수백 가지의 EC2 인스턴스 유형을 갖고 있는데 몇 가지를 알아보자.
t2 micro. 이건 정말 단순한 구조이다. 하나의 vCPU 가 있고 메모리는 1GB 이다. 저장은 EBS 에만 가능하고 네트워크 성능이 낮거나 보통이다. 하지만 인스턴스 유형을 늘리는 즉시 t2.xlarge 로 이동한다.
t2.xlarge 는 4개의 xCPU 를 사용할 수 있고 16GB 의 RAM, 중간 정도의 네트워크 성능을 가진다.
c5d.4xlarge 이름이 엄청 복잡하다 16 개의 vCPU 있고 메모리는 32GB 또는 그 이상 EC2 인스턴스로 첨부하려면 더 큰 저장 용량이 있어야 하고 400 NVMe SSD 를 사용한다. 네트워크는 최대 10GB 속도를 가진다.
이런식으로 r5.16xlarge 나 m5.8xlarge 로 가게 되면 다른 특성을 갖게 된다.
즉, 내가 개발하고 있는 애플리케이션에 가장 잘 맞는 인스턴스의 유형을 선택해야 하고 변화하는 요구에 따라 클라우드에서 변경해서 사용할 수 있다는 점이다.
t2 micro 는 AWS 프리 티어의 한 부분이다. t2 micro 를 한달에 최대 750 시간 사용할 수 있다.