본문 바로가기

Infrastructure/Certificate

[SAA] EC2 Basics

EC2 Basics

이번 장에서는 SAA를 준비하며 EC2 기초에 대해서 알아보도록 한다.

  • EC2는 Elastic Compute Cloud의 약자로 IaaS(Infrastructure as a Service)를 의미하며 AWS에서 가장 인기 있는 제품으로 “인스턴스”라고 부른다.
  • 주로 사용되는 구성으로는 아래와 같은 기능들이 있다.
    • 가상 머신 임대(EC2)
    • 가상 드라이브에 데이터 저장(EBS)
    • 머신 간 부하 분산(ELB)
    • 자동 확장 그룹을 사용하여 서비스 확장(ASG)

EC2 크기 및 구성 옵션

  • EC2는 인스턴스의 사양을 결정하기 위한 여러가지 옵션이 존재한다.
  • 운영체제(OS)로 Linux, Windows 또는 MacOS를 선택할 수 있다.
  • 컴퓨팅 성능 및 코어(CPU)의 양을 선택할 수 있다.
  • RAM(Random-Access Memory)의 양을 선택할수 있다.
  • 저장소를 선택할 때 EBS, EFS와 같은 네트워크 연결을 사용할 수 있고, 하드웨어인 EC2 인스턴스 스토어를 사용할 수 있다.
  • 네트워크 카드를 선택하여 카드의 속도나, 공용 IP 주소를 설정할 수 있다.
  • 방화벽 규칙을 설정하여 보안 그룹을 활성화할 수 있다.
  • 최초 실행 시 부트스트랩 스크립트를 사용한 자동화

EC2 사용자 데이터(User Data)

  • EC2 사용자 데이터 스크립트를 사용하여 인스턴스를 부트스트랩 할 수 있다. 여기서 부트스트래핑은 머신이 시작될 때 명령을 실행하는 것을 의미한다.
  • 이러한 스크립트는 인스턴스가 처음 시작될 때 한 번만 실행되며 아래 목록에 있는 부팅 작업을 자동화하는 데 사용된다.
    • 업데이트 설치
    • 소프트웨어 설치
    • 인터넷에서 공통 파일 다운로드
    • 이외 기타 작업
  • 사용자 데이터 스크립트는 루트 사용자를 통한 루트 권한으로 실행된다.

EC2 인스턴스 유형

  • EC2 인스턴스에는 다양한 유형이 있으며 제공하는 서비스의 성격에 따라 선택할 수 있는 선택지가 많다.
  • 인스턴스 유형은 CPU, 메모리, 스토리지 및 네트워킹 용량의 여러 조합으로 구성된다.
  • m5.2xlarge유형이 있을 때, m은 인스턴스 클래스, 5는 세대(시간이 지남에 따라 상승), 2xlarge는 인스턴스 클래스내 크기를 의미한다.

범용(General Purpose)

  • 웹서버 또는 코드 리포지토리와 같은 다양한 워크로드에 적합하며 CPU, Memory, Networking 모두 균형잡혀있는 유형이다.

컴퓨팅 최적화(Compute Optimized)

  • 고성능이 필요한 컴퓨팅 집약적 작업에 적합하다.
    • 일괄 처리 워크로드
    • 미디어 트랜스 코딩
    • 고성능 웹 서버
    • 고성능 컴퓨팅(HPC)
    • 과학적 모델링 및 머신 러닝
    • 전용 게임 서버

메모리 최적화(Memory Optimized)

  • 메모리에서 대용량 데이터 세트를 처리하는 워크로드에 대한 빠른 성능이 필요할 때 적합하다.
    • 고성능, 관계형/비관계형 데이터베이스
    • 분산 웹 규모 캐시 저장소
    • BI(비즈니스 인텔리전스)에 최적화된 인메모리 데이터베이스
    • 큰 비정형 데이터를 실시간으로 처리하는 애플리케이션

스토리지 최적화(Storage Optimized)

  • 로컬 스토리지의 대용량 데이터 세트에 대한 높은 순차 읽기 및 쓰기 엑세스 권한이 필요한 스토리지 집약적 작업이 필요할 때 적합하다.
    • 온라인 트랜잭션 처리(OLTP) 시스템
    • 관계형 및 NoSQL 데이터베이스
    • Redis와 같은 인메모리 데이터베이스용 캐시
    • 데이터 웨어하우징 애플리케이션
    • 분산 파일 시스템

보안 그룹(Security Group)

  • 보안 그룹은 AWS에서 사용하는 네트워크 보안의 기본 요소로, EC2 인스턴스 안팎으로 트래픽이 허용되는 방식을 제어한다.

  • 보안 그룹은 오직 허용을 의미하는 allow 규칙만을 포함한다.
  • 보안 그룹 규칙은 IP 또는 보안 그룹별로 참조할 수 있다.
  • 보안 그룹은 EC2 인스턴스에서 “방화벽” 역할을 하며 아래의 사항을 규제한다.
    • 포트에 대한 접근
    • 인증된 IP 범위(IPv4와 IPv6)
    • 인바운드 네트워크 제어
    • 아웃바운드 네트워크 제어

  • 보안 그룹을 다룰 때 아래의 항목을 고려해야 한다.
    • 여러 인스턴스에 연결이 가능하다. 즉, 재사용성이 높다.
    • 리전/VPC 조합으로 잠겨있다.
    • EC2 “외부”에 존재하기 때문에 트래픽이 차단되면 EC2를 볼 수 없다.
    • SSH 액세스를 위해 하나의 별도 보안 그룹을 유지하는 것이 좋다.
    • 애플리케이션에 “시간 초과”를 이유로 접근할 수 없는 경우는 보안 그룹 문제이다.
    • 애플리케이션에서 “연결 거부” 오류가 발생하면 애플리케이션 오류이거나 실행되지 않은 것이다.
    • 모든 인바운드 트래픽은 기본적으로 차단되어 있다.(whitelist 기반의 운영)
    • 모든 아웃바운드 트래픽은 기본적으로 승인되어 있다.(blacklist 기반의 운영)

  • 전통적으로 사용되며 인프라 운영을 위해 기억하고 있어야 하는 포트들이 존재한다.
    • 22: SSH(Secure Shell), Linux 인스턴스에 로그인
    • 21: FTP(File Trasfer Protocol), 파일 공유에 파일 업로드
    • 22: SFTP(Secure File Transfer Protocol), SSH를 사용하여 파일 업로드
    • 80: HTTP(Hipertext Transfer Protocol), 보안되지 않은 웹사이트에 엑세스
    • 443: HTTTPS(Secure Hipertext Transfer Protocol), 보안 웹사이트에 엑세스
    • 3389: RDP(Remote Desktop Protocol), Windows 인스턴스에 로그인

SSH (Secure Shell)

  • 우리는 SSH를 통해 EC2 인스턴스에 접속할 수 있으며 가장 중요한 기능이라고 할 수 있다.
  • 원격지에서 커맨드 라인으로 원격 머신을 조작할 수 있기 때문이다.
  • EC2 인스턴스에 대한 SSH를 용이하게 하기 위해 OpenSSH ~/.ssh/config를 구성할 수 있다.
  • Windows에서 SSH를 사용하기 위해서 일반적으로 무료 도구인 “Putty”가 많이 사용된다.

EC2 Instance Connect

  • 브라우저를 통해서 EC2 인스턴스에 연결하는 방식이다.
  • 다운로드한 키 파일을 사용할 필요가 없으며, AWS에서 임시 키를 EC2에 업로드한다.
  • 이 기능을 사용하기 위해서는 인스턴스의 OS가 Amazon Linux2여야 하며, 22번 포트가 열려있어야 한다.

EC2 인스턴스 구매옵션

  • EC2 인스턴스를 구매할 때 선택할 수 있는 여러가지 구매 옵션이 있기 때문에 인스턴스에서 실행되는 서비스의 성격에 따라서 적절한 유형을 선택해야 한다.

온디맨드 인스턴스(On-Demand Instance)

  • 사용한 만큼 비용을 지불하는 인스턴스로 단기간 동안 예측할 수 없는 워크로드 및 중단되어서는 안되는 애플리케이션에 적합하다.
  • Linux와 Windows의 경우 초당 비용이 청구되며 이외의 OS는 시간당 비용이 청구된다.
  • 비용이 가장 비싼 유형이지만 선결제 및 장기 약정이 없다.

예약 인스턴스(Reserved Instance)

  • 1년 또는 3년을 약정으로 구매하는 인스턴스로 데이터베이스와 같이 안정적으로 사용되어야 하는 애플리케이션에 권장된다.
  • 온디맨드에 비해 최대 75% 저렴하며 수요가 꾸준하고 예측가능한 경우에 유용하게 사용된다.
  • 결정할 수 있는 결제 옵션은 “전체 선결제”, “부분 선결제”, “선결제 없음” 3 가지가 있으며 적용되는 할인율이 전부 다르다.
  • 선택 가능한 예약 인스턴스의 유형도 여러가지가 있다.
    • 표준 예약 인스턴스(Standard Reserved Instances): 인스턴스 타입을 지정하면 예약기간동안 변경이 불가능하다.
    • 전환형 예약 인스턴스(Convertible Reserved Instances): 예약 기간 동안 인스턴스의 타입을 변경할 수 있다.
    • 정기 예약 인스턴스(Scheduled Reserved Instance): 지정된 시간 날짜 동안에 인스턴스가 시작되어 사용된다. 반복적이며 매달 일부 기간만 필요한 경우에 적합하다.

스팟 인스턴스(Spot Instance)

  • 언제든지 종료될 수 있는 인스턴스를 구매하여 사용하는 방식이다. 최대 90%의 할인을 받을 수 있지만 애플리케이션이 종료될 수 있음을 유의해야 한다.
  • 장애에 탄력적인 워크로드에 유용하게 사용된다.
    • 일괄 작업
    • 데이터 분석
    • 이미지 처리
    • 모든 분산 워크로드
    • 유연한 시작 및 종료 시간이 있는 워크로드
  • 데이터베이스와 같이 고가용성이 요구되는 애플리케이션에는 적합하지 않은 구매옵션이다.
  • 여러 개의 스팟 인스턴스를 하나의 그룹으로 묶은 스팟 집합(Spot Fleets)으로 구매해서 사용하는 것이 좋다.
  • 기본적으로 예약 인스턴스를 사용하고 트래픽이 몰리는 경우에는 스팟 인스턴스를 사용하여 처리하는 조합으로 많이 사용된다.
  • 스팟 인스턴스를 종료하는 방법은 아래와 같다.

  • 열려 있거나 활성화되어 있거나 비활성화된 스팟 인스턴스 요청만 취소할 수 있다. 스팟 요청을 취소해도 인스턴스가 종료되지 않으며, 먼저 스팟 요청을 취소한 다음 연결된 스팟 인스턴스를 종료해야 한다.

스팟 플릿(Spot Fleets)

  • 스팟 플릿은 스팟 인스턴스 세트 + 온디맨드 인스턴스의 조합이다.
  • 스팟 플릿은 가격 제약 조건으로 목표 용량을 충족하게 하려고 시도한다.
    • 가능한 시작 풀 정의: 인스턴스 유형, OS, 가용지역
    • 플릿을 선택할 수 있도록 여러 시작 풀이 있어야 한다.
    • 스팟 플릿은 용량 또는 최대 비용에 도달하면 인스턴스 시작을 중지한다.
  • 스팟 인스턴스 할당 전략
    • lowestPrice: 최저 가격의 풀에서 할당한다.
    • diversified: 모든 풀에 분산해서 할당한다.
    • capcacityOptimized: 인스턴스 수에 대한 최적의 용량을 가진 풀에서 할당한다.

전용 호스트(Dedicated Hosts)

  • 전용 호스트는 EC2 인스턴스 용량이 고객 전용으로 제공되는 물리적 서버다.
  • 전용 호스트를 사용하면 기존의 서버 바인딩 소프트웨어 라이선스를 사용하기 위한 규정과 요구 사항을 준수를 해결하고 비용을 절감할 수 있다.
  • 3년 동안 예약되어 계정에 할당되는 방식이다.
  • 복잡한 라이선스 모델이나, 사내 규제 또는 규정 준수 요구 사항이 높은 경우에 사용하는 것이 좋다.

전용 인스턴스(Dedicated Instance)

  • 물리적인 전용 서버를 할당받아서 사용하는 방식이다.
  • 동일한 계정의 다른 인스턴스와 하드웨어를 공유할 수 있다.
  • 인스턴스 배치를 제어할 수 없으며, 하드웨어가 중지/시작 한 이후 이동할 수 있다.
  • 전용 호스트에서 사용가능한 CPU 코어, 인스턴스 배치, 사용자 라이선스 사용이 불가능하다.

적절한 구매옵션 선정

  • On-Demand Instance: 원하는 시간에 리조트에 방문 및 숙박, 전액 지불
  • Reserved Instance: 미리 계획하고 장기 체류할 경우 좋은 할인을 받을 수 있다.
  • Spot Instance: 호텔은 사람들이 빈 객실에 입찰할 수 있도록 최고 입찰자가 객실을 유지하며, 언제든지 쫓겨날 수 있다.
  • Dedicated Hosts: 리조트 건물 전체를 예약해야 한다.

참고 자료

'Infrastructure > Certificate' 카테고리의 다른 글

[SAA] EC2 Instance Storage  (0) 2022.11.01
[SAA] EC2 Associate  (0) 2022.11.01
[SAA] IAM & AWS CLI  (0) 2022.11.01
[SAA] About AWS  (0) 2022.11.01
[Certificate] AWS 관련 자격증  (0) 2022.02.19