EC2 basic

Amazon EC2

EC2 인스턴스

image

EC2에서 컴퓨팅을 담당하며 다양한 유형과 크기로 구성 되어있고 저장을 담당하는 EBS와 네트워크로 연결 되어있다.

저장 방법에 따라 두 가지로 분류 할 수 있는데 “EBS 연동”, “인스턴스 스토어”로 분류가 가능하다.

인스턴스는 갯 수와 상관 없이 하나의 가용영역(AZ)에 존재 한다.

인스턴스를 사용 할 때 여러가지 유형을 미리 정의 해놓고 해당 유형에 최적화 된 컴퓨팅 자원을 빌릴 수 있도록 AWS에서 지원 하는데 만약, 10$로 EC2를 사용해본다고 가정 해보자.

이런식으로 서비스에 따라 필요한 리소스가 최적화 된 유형을 선택 할 수 있다.

EC2 인스턴스의 유형(패밀리)

인스턴스 유형을 읽는 방법

인스턴스의 크기

EC2 요금 모델

💡

“미리 내지 않고, 사용한 만큼 내고, 많이 쓸수록 적게 내개고, 예약할수록 더 적게 낸다.” - AWS 비용 백서

요금 구성

요금 모델

EC2 생명 주기

EC2는 사용자에 의해 실행, 중지, 종료 등 다양한 액션을 제공하며 이에 따른 상태를 가진다.

image

생명 주기 별 요금 표

인스턴스 상태설명인스턴스 사용 요금
pending인스턴스가 running 상태로 될 준비미청구
running인스턴스 사용 중청구
stopping인스턴스가 중지 또는 최대 절전모드로 전환 중미청구, 최대 절전모드 시 청구
stopped인스턴스 중지 상태: 재시작 가능미청구
shutting-down인스턴스 종료 중미청구
terminated인스턴스 영구 삭제미청구

생명 주기에서 알아 볼 키워드

“Stopped”

“Stopped” 상태에서는 요금이 청구 되지 않는다.

“rebooting”

재부팅은 운영체제 레벨에서만 재시작 하는 단계이다.

EC2 Userdata, Metadata

EC2 User Data

image

EC2 Instance Meatadata

💡

“인스턴스 메타데이터는 실행 중인 인스턴스를 구성 또는 관리하는 데 사용될 수 있는 인스턴스 관련 데이터입니다. 인스턴스 메타데이터는 호스트 이름, 이벤트 및 보안 그룹과 같은 범주로 분류됩니다.” - AWS

IMDS v1

버전 1은 별도의 인증이 필요 없는 HTTP Response/Request 방식으로 메타데이터를 주고 받으며, Link Local IP(169.254.169.254)는 고정적이지만 호출 하는 인스턴스의 주소에 따라 값이 변동 됨

하지만, 별도의 인증이 없기 때문에 보안적으로 취약할 수 있기 때문에 이 점을 보완 하기 위해 버전 2가 릴리즈 되었음

IMDS v1 사용 예시: 인스턴스 이름 가져오기

bash

curl http://169.254.169.254/latest/meta-data/tags/instance/Name

IMDS v2

보안 토큰을 발급 받아 토큰 정보를 기반으로 인증하는 세션 방식이며 토큰의 유효기간은 1초에서 최대 6시간 까지 설정이 가능하다.

IMDS v1보다 더 높은 보안 수준을 제공 하고 IAM 정책 등을 활용 하여 EC2 인스턴스가 오직 IMDS v2만 사용 하도록 강제 설정이 가능함

IMDS v2 사용 예시: 인스턴스 이름 가져오기

bash

TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/tags/instance/Name

EC2 권한 설정

IAM 자격 증명을 AWS Credential로 등록 하는 경우

IAM 역할을 프로파일링 하여 EC2에 제공하는 경우

image

EC2를 잘 활용하기

💡

“Everything fails, all the time” - Werner Vogels, AWS CTO

클라우드 환경에서 컴퓨팅 자원을 활용 하는 Best Practice는 아래와 같다.

  1. 클라우드 환경에서 각 인스턴스는 소모품이라고 생각하고 설계한다.

    • 예고 없이 장애가 발생하거나 통제된 방법으로 종료되는 것이 극히 정상정인 환경임
    • 즉, 언제나 인스턴스는 예고없이 종료된다
    • 결론은 필요하면 언제나 더 가져다 쓸 수 있으면서 필요 없을 땐 버릴 수 있어야함

    잠깐! “EC2의 수평 확장, 수직 확장 알아보기”

    • 수평 확장(“Horizontal Scale” or “Scale Out”): 인스턴스1(CPUx1, Memory 1gb) -> 인스턴스1 * n

      • 즉, 저사양 인스턴스를 여러개 두어 트래픽을 여러대로 나눌 시 아키텍처에 대한 복잡성은 증가 할 수 있으나 비용이 상대적으로 절감 된다.
      • AWS에서는 Scale Out 방식을 기본적으로 권장함
    • 수직 확장(“Vertical Scale” or “Scale Up”): 인스턴스1(CPUx1, Memory 1gb) -> 인스턴스1(CPUx16, Mmeory16gb)

      • 즉, 인스턴스의 사양을 업그레이드 하여 모든 트래픽을 하나의 인스턴스에서 처리 하는 방식
      • 이 때 AWS에서 구성한 하드웨어의 크기가 서로 동일 하지만 사양이 증가된 진보한 과학 시스템이 적용 되어있어 비용이 상상 이상으로 발생 할 수 있다.
  2. 인스턴스의 상태를 저장하지 않는 Stateless하며 고가용성을 확보하여 설계한다.

고가용성과 Stateless란?

그래서 EC2를 잘 활용하려면?”

언제나 비정상 종료가 될 수 있다는걸 인지하고 아래와 같은 체크리스트를 확인 해 볼것!