[AWS] EC2

컴공생의 코딩 일기·2023년 7월 8일
0

AWS

목록 보기
1/4
post-thumbnail

EC2란?

EC2는 Elastic Compute Cloud의 약자로 아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스이다.

EC2는 다양한 기능을 제공한다.

  • 가상 머신을 빌릴 수 있다. (EC2 인스턴스라고 한다.)
  • EBS 볼륨이라는 가상 드라이브에 데이터를 저장할 수 있다.(EBS)
  • 여러 머신에 로드를 분산하는 Elastic Load Balancer를 이용한다. (ELB)
  • 오토 스케일링 그룹, ASG를 이용해 서비스를 확장한다. (ASG)

EC2 크기 및 구성 옵션

  • 운영체제(OS): Linux, Window, Mac OS
  • 가상 머신에 사용할 컴퓨팅 성능과 코어 수 즉 CPU를 선택 가능
  • 랜덤 액세스 메모리, RAM 용량 선택 가능
  • 스토리지 용량 선택 가능
    • Network-attached (EBS & EFS)
    • hardward (EC2 Instance Store)
  • EC2 인스턴스에 연결할 네트워크 유형 선택 가능
  • EC2 인스턴스의 방화벽 규칙 정의 가능 (보안 그룹)
  • 부트스트랩 스크립트를 이용해 처음 시작할 때의 인스턴스를 구성 가능(EC2 User data)

EC2 User data

  • EC2 User data를 이용해 인스턴스를 부트스트래핑 할 수 있다.

부트스트래핑이란? 부트스트래핑은 머신이 시작할 때 명령을 실행하는 것이다. 이 스크립트는 처음 시작할 때 한 번 실행되고 다시 실행되지 않는다.

  • EC2 User data는 부팅 작업을 자동화한다 이를 부트스트래핑이라고 부른다.
    • 업데이트 설치
    • 소프트웨어 설치
    • 인터넷에서 일반 파일 다운로드
  • EC2 User data는 루트 사용자로 실행된다. (pseudo 권한으로 명령을 실행하게 된다.)

EC2에 사용 가능한 인스턴스

EC2의 구성

  • 인스턴스: 클라우드에서 사용하는 가상 서버로 CPU, 메모리, 그래픽 카드등 연산을 위한 하드웨어를 담당
  • EBS: Elastic Block Storage의 줄임말로 클라우드에서 사용되는 가상 하드디스크
  • AMI: EC2 인스턴스를 실행하기 위한 정보를 담고 있는 이미지
  • 보안 그룹: 가상 방화벽

AWS 명명 규칙

  • m5.2xlarge
    • m: 인스턴스 클래스
    • 5 인스턴스의 세대
    • 2xlarge: 인스턴스 클래스 내에서의 크기 (small, large, 2xlarge, 4xlarge등), 인스턴스가 클수록 더 많은 메모리와 CPU를 가지게 된다.

EC2 인스턴스 타입 - General Purpose

  • 범용 인스턴스는 웹 서버나 코드 저장소와 같은 다양한 작업에 적합하다.
  • 컴퓨팅, 메모리, 네트워킹 간의 균형도 잘 맞는다.

EC2 인스턴스 타입 - Compute Optimized

  • 컴퓨터 집약적인 작업에 최적화된 인스턴스이다.
  • 고성능 프로세스를 사용하는 예:
    • 일부 데이터의 일괄 처리 시
    • 미디어 트랜스코딩 작업 시
    • 고성능 웹 서버가 필요할 시
    • 고성능 컴퓨팅이라는 HPC 작업을 할 때
    • 머신러닝
    • 전용 게임 서버가 있을 때
  • 컴퓨터 최적화의 모든 인스턴스는 C로 시작하는 이름을 가진다.

EC2 인스턴스 타입 - Memory Optimized

  • 메모리 최적화 유형의 인스턴스는 메모리에서 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능을 제공한다.
  • 메모리는 RAM을 뜻한다.
  • 사용 예:
    • 대부분 인 메모리 데이터베이스가 되는 고성능의 관계형 또는 비 관계형의 데이터베이스에 사용한다.
    • 일래스틱 캐시를 예로 들 수 있는 분산 웹스케일 캐시 저장소에도 사용한다.
    • 비즈니스 인텔리전스 즉, BI에 최적화된 인 메모리 데이터베이스와 대규모 비정형 데이터의 실시간 처리를 실행하는 애플리케이션에도 사용한다.
  • 메모리 최적화의 모든 인스턴스는 R로 시작하는 이름을 가진다. (X1이나 High Memory, Z1도 있다.)

EC2 인스턴스 타입 - Storage Optimized

  • 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스이다.
  • 사용 예:
    • 고주파 온라인 트랜잭션 처리인 OLTP 시스템에 사용
    • 관계형과 비 관계형인 NoSQL 데이터베이스에 사용
    • 레디스(Redis) 같은 메모리 데이터베이스 캐시에 사용
    • 데이터 웨어하우징(warehousing) 애플리케이션에 사용
    • 분산 파일 시스템에 사용
  • AWS의 스토리 최적화 인스턴스는 I,G 또는 H1으로 시작한다.

보안 그룹 및 클래식 포트 개요

  • 보안 그룹은 AWS 클라우드에서 네트워크 보안을 실현하는데 기본적인 기능이다.
  • 보안 그룹을 이용해 EC2 인스턴스의 인바운드 및 아웃바운드 트래픽을 제어한다.
  • 보안 그룹의 규칙은 컴퓨터가 위치한 IP 주소를 참조하거나 다른 보안 그룹을 참조할 수 있다. 즉 보안 그룹이 서로 참조하는 것도 가능하다.

보안 그룹

  • 보안 그룹은 EC2 인스턴스에 대한 방화벽 역할을 한다.
    • 포트에 대한 액센스를 관리
    • 인증된 IP 범위인지 확인 - IPv4, IPv6
    • 외부에서 인스턴스로 연결하는 인바운드 네트워크를 제어
    • 인스턴스에서 외부로 연결하는 네트워크도 제어

보안 그룹 규칙:

  • 보안 그룹은 여러 인스턴스에 연결할 수 있다.
  • 보안 그룹은 리전이나 특정 VPC 조합에 고정된다. 따라서 다른 리전으로 옯기면 새 보안 그룹을 만들어야 하고 다른 VPC를 만드는 경우에도 보안 그룹을 다시 만들어야 한다.
  • 보안 그룹은 EC2 외부에도 있다. (트래픽이 차단되면 EC2 인스턴스는 이를 확인 할 수 없다.)
  • SSH 전용으로 별도의 보안 그룹을 관리하는 것이 좋다.

기본 포트

  • 22 = SSH: 리눅스에서 EC2 인스턴스에 로그인할 때 사용
  • 21 = FTP: 파일 전송 프로토콜용 이고 파일 공유에 파일을 업로드할 때 사용
  • 22 = SFTP: SFTP도 파일을 업로드하며 SSH를 사용하는 보안 파일 전송 프로토콜이다
  • 80 = HTTP: 보안이 적용되지 않은 웹사이트에 액세스할 때 사용
  • 443 = HTTPS: 보안이 적용된 웹사이트
  • 3389 = RDP: 원격 데스크탑 프로토콜용 (윈도우 인스턴스 로그인에 사용)

EC2 인스턴스 가격 정책

  • 온디맨드(On-Demand)
    • 요청에 따라 가격 책정 가능
    • 가격을 예측할 수 있고 초당 비용을 지불
    • 리눅스나 윈도우는 첫 1분이 지난 이후부터 초당 비용 청구
    • 그외 다른 운영체제에서는 시간당 비용 청구
    • 가격은 제일 높지만 선결제가 없고 장기 약정이 필요 없다.
    • 온디맨드 옵션에 적합한 예:
      • 연속적인 단기 워크로드 (애플리케이션 동작을 예측할 수 없는 워크로드)
  • 예약 인스턴스(Reserved Instance-RI)
    • 예약 인스턴스는 온디맨드에 비해 비용을 약 72% 절약할 수 있다.
    • 특정 인스턴스 속성을 예약한다. (예: 리전, 테넌시 및 OS)
    • 예약 기간으로 1년 혹은 3년을 지정할 수 있다. (3년을 선택하면 할인율이 더 크다)
    • 전체 선결제나 부분 선결제도 가능하고 선결제 없이도 가능하다. (전체 선결제 할인율 가장 높음)
    • 특정 AZ의 용량을 예약하도록 영역을 지정할 수 있다.
    • 예약 인스턴스 옵션에 적합한 예:
      • 애플리케이션이 안정된 상태로 사용되는 데이터베이스
    • 마켓플레이스에서 예약 인스턴스를 구매하거나 판매할 수도 있다.
    • 예약 인스턴스에서의 특별한 종류:
      • 전환형 예약 인스턴스: 인스턴스 유형을 변경할 수 있고 인스턴스 제품군과 운영체제 및 범위, 테넌시가 변경 가능하다. (유연성이 높기 때문에 할인율이 줄어든다.)
  • 절감형 플랜(Savings Plans)
    • 예약 인스턴스와 마찬가지로 70% 가까지 할인 받을 수 있다.
    • 대신 시간당 10달러의 비용을 1년에서 3년 동안 약정해야 한다.
    • 초과하는 사용량은 온디맨드 가격으로 청구 된다.
    • Savings Plans는 특정 인스턴스 제품군과 리전에 한해 사용할 수 있다. (예: us-east-1 M5 유형 인스턴스 제품군)
    • 인스턴스 크기에 구애받지 않으므로 m5.xlarge, m5.2xlarge 등 모두 사용 가능하다. OS의 경우 Linux와 Window간 전환이 가능하고 테넌시의 경우 호스트, 전용 및 기본값을 전환할 수 있다.
  • 스팟 인스턴스(Spot Instances)
    • 스팟 인스턴스는 가장 파격적인 할인을 제공한다. (온디맨드와 비교하여 최대 90% 까지 할인된다.)
    • 그러나 인스턴스가 언제든 중단될 수 있다. (스팟 인스턴스에 지불한 가격 보다 스팟 가격이 더 높아지면 인스턴스가 중단된다.)
    • AWS에서 가장 비용 효율적인 인스턴스이고 서비스가 중단되어도 복구하기 쉬운 워크로드에 매우 효율적이다.
    • 스팟 인스턴스 옵션에 적합한 예:
      • 배치 작업
      • 데이터 분석
      • 이미지 처리
      • 분산된 워크로드 또는 시작 및 종료 시점이 유동적인 워크로드
    • 그러나 중요한 작업이나 데이터베이스에는 적합하지 않다.
  • 전용 호스트(Dedicated Hosts)
    • 실제 물리적 서버를 임대하는 방식
    • 전용 호스트 옵션에 적합한 예:
      • 규정 준수 요구 사항이 있거나 기존의 서버 결합 소프트웨어 라이선스를 사용해야 할 경우
      • 이때의 비용은 소켓, 코어, VM 소프트웨어 라이선스로 청구
    • 전용 호스트 구매 옵션은 온디맨드로 초당 청구되거나 1년 또는 3년 기간을 예약할 수 있다.
    • AWS에서 가장 비싼 옵션 (실제로 물리적인 서버를 예약하기 때문)
  • 전용 인스턴스(Dedicated Instance)
    • 실행되는 인스턴스이며 물리적 서버와는 다르다.
    • 같은 계정의 다른 인스턴스와 하드웨어를 공유하긴 하지만 인스턴스 배치는 제어할 수 없다.

전용 호스트와 전용 인스턴스의 차이점

전용 인스턴스는 사용자 하드웨어에 고유한 인스턴스를 갖는 것이고 전용 호스트는 물리적 서버 자체에 액세스 하여 저수준(low level) 하드웨어에 대한 가시성을 제공한다.

EC2의 용량 예약

  • 원하는 기간 동안 특정한 AZ에 온디맨드 인스턴스를 예약할 수 있고 이후 필요할 때마다 그 용량에 액세스 할 수 있다.
    • 시간 약정이 없기 때문에 언제든지 용량을 예약하거나 취소할 수 있다. (요금 할인 X)
  • 요금을 할인 받기 위해서는 리전 예약 인스턴스 혹은 절감형 플랜과 결합해야 한다.
  • 인스턴스 실행 여부와 관계없이 온디맨드 요금이 청구된다.
  • 특정한 AZ에 위치하는 단기의 연속적인 워크로드에 잘 맞는다.
profile
더 좋은 개발자가 되기위한 과정

0개의 댓글