개발 공부/AWS

[AWS] SAA 공부 (3) EC2 (Elastic Compute Cloud)

sngynhy 2025. 3. 18. 15:13

EC2 (Elastic Compute Cloud)

AWS에서 제공하는 서비스형 Infrastructure로써

안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스

 

EC2의 사용 목적

  • 서버 구축
    • 게임 서버, 웹 서버, 애플리케이션 서버 등
  • 애플리케이션 사용 혹은 호스팅
    • DB, 머신러닝, 비트코인 채굴, 연구용 프로그램 등
  • 그래픽 렌더링, 게임 등의 기타 목적

EC2 특성

  • 초 단위 온디맨드 가격 모델
  • 빠른 구축 속도와 확장성
    • 전 세계에 인스턴스 수 백여 대 구축 가능
  • 다양한 구성 방법 지원
    • 머신러닝, 웹 서버, 게임 서버, 이미지 처리 등 다양한 용도에 최적화된 서버 구성 가능
    • 다양한 과금 모델 사용 가능
  • 여러 AWS 서비스와 연동
    • 오토스케일링, ELB, CloudWatch 등

EC2 구성

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

 

EC2에서 임대받은 가상 머신을 EC2 인스터스라고 함

데이터를 가상 드라이브 또는 EBS 볼륨에 저장할 수 있고

Elastic Load Balancer(ELB)로 로드를 분산시킬 수 있음

Auto-Scaling Group(ASG)을 통해 서비스 확장 가능

 

EC2 Sizing & Configuration options

  • OS: Linux, Windows or MacOS
  • 컴퓨팅 성능 및 코어 (CPU)
  • RAM
  • 저장 공간
    • Network-attached (EBS & EFS) : 네트워크를 통해 연결할 스토리지
    • Hardware (EC2 Instance Store)
  • EC2 인스턴스에 연결할 네트워크 종류
    • speed of the card
    • Public IP address
  • EC2 방화벽 규칙 (보안 그룹)
  • 인스턴스를 구성하기 위한 Bootstrap script (configure at first launch)
    • EC2 User Data
📌EC2 User Data
EC2 사용자 데이터 스크립트를 사용하여 인스턴스를 부트스트래핑할 수 있음

부트스트래핑(Bootstrapping)이란?
서버가 작동될 때 명령을 시작하는 것을 의미
스크립트는 처음 시작 시 한 번만 실행되고 다시 실행되지 않음
따라서 EC2 사용자 데이터는 매우 특정한 목적이 있는데,
부팅 작업을 자동화하기 때문에 Bootstrapping이라는 이름을 갖게 됨
인스턴스 부팅 시 업데이트, 소프트웨어 설치, 파일 다운로드 등의 작업이 자동으로 이루어짐

EC2 사용자 데이터 스크립트는 루트 계정에서 실행되므로 모든 명령문은 sudo로 실행

 

EC2 인스턴스 유형

1. 범용 (General Purpose) — 균형 잡힌 성능

  • 특징: CPU, 메모리, 네트워크의 성능이 고르게 분포되어 있음
  • 사용 사례: 웹 서버, 개발/테스트 환경, 소규모 데이터베이스
  • 대표 타입
    • 🏅 t4g, t3, t2: 저비용, 버스트 성능 지원 (짧은 시간 동안 성능을 끌어올림)
    •  m7g, m6g, m5, m4: 균형 잡힌 성능, 다양한 워크로드에 적합

2. 컴퓨팅 최적화 (Compute Optimized) — CPU 집중 작업

  • 특징: 고성능 CPU를 제공, 컴퓨팅 집약적인 작업에 적합
  • 사용 사례: 일부 데이터의 일괄 처리, 고성능 웹 서버, 데이터 처리 애플리케이션, 게임 서버, 머신러닝
  • 대표 타입
    • 💻 c7g, c6g, c5, c4: 고성능 CPU 제공, 저지연 워크로드에 최적화 (💡 c로 시작!)

 

3. 메모리 최적화 (Memory Optimized) — 대용량 메모리 작업

  • 특징: 메모리 집약적인 작업에 최적화
    • 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능 제공
  • 사용 사례: 인메모리 데이터베이스(Redis, Memcached), 빅데이터 처리, 머신 러닝, 분산 웹 스케일 캐시 저장소, BI,
    대규모 비정형 데이터의 실시간 처리를 실행하는 애플리케이션
  • 대표 타입
    • 📊 r6g, r5, r4: 고용량 메모리 제공, 데이터베이스에 최적 (💡 RAM의 r로 시작!)
    • 🧠 x2idn, x2iedn: 초고용량 메모리, SAP HANA 같은 인메모리 워크로드에 적합
    •  z1d: 고성능 CPU + 고성능 메모리 제공

4. 스토리지 최적화 (Storage Optimized) — 고속 스토리지 작업

  • 특징: 고속 로컬 스토리지가 필요한 작업에 최적화
    • 로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합
  • 사용 사례: NoSQL 데이터베이스, 빅데이터 분석, 데이터 웨어하우스, 분산 파일 시스템
  • 대표 타입
    • 🔥i3, i4i: 초고속 NVMe SSD 제공, 높은 I/O 성능이 필요할 때
    • 📀 d2, d3: 대용량 HDD 제공, 데이터 아카이빙 및 로그 처리
    • ⚙️ h1: 고성능 스토리지, 데이터 처리 속도 중시

5. 가속 컴퓨팅 (Accelerated Computing) — GPU/FPGA 작업

  • 특징: GPU나 FPGA 등 특수 하드웨어가 필요할 때 사용
  • 사용 사례: 머신 러닝, 고성능 컴퓨팅(HPC), 3D 렌더링, 암호화 작업
  • 대표 타입
    • 🎬 g4dn, g5: NVIDIA GPU 장착, 딥러닝/비디오 처리
    •  p4, p3: 고성능 GPU, AI 모델 훈련 및 HPC 작업
    • 🏗️ f1: FPGA 제공, 고도의 커스터마이징 작업에 적합

6. HPC 최적화 (High Performance Computing) — 슈퍼컴퓨팅급 성능

  • 특징: 대규모 병렬 작업, 과학적 시뮬레이션 같은 고성능 컴퓨팅에 특화
  • 사용 사례: 유체 역학, 날씨 시뮬레이션, 유전체 분석
  • 대표 타입
    • 💥 hpc6id, hpc6a: 고성능 네트워킹 및 CPU 제공

※ 참고) EC2 인스턴스 유형

 

EC2 인스턴스 사이즈

인스턴스의 CPU 개수, 메모리 크기, 성능 등으로 사이즈 결정

크기가 클수록 > 더 많은 메모리, CPU, 네트워크 대역폭, EBS와의 통신 가능한 대역폭

 

인스턴스 타입 읽는 법

 

일반적인 서버의 구성 요소 EC2의 구성 요소
컴퓨팅 (CPU/RAM) 인스턴스
하드디스크 EBS
랜카드 ENI

 

EC2 인스턴스 생성하기

  1. EC2를 구성하기 위한 AMI 선택
  2. EC2의 유형과 사이즈 선택


  3. Key pair 설정 (인스턴스에 접근하기 위해 SSH 유틸리티를 사용할 경우 필요함)
    키 페어 생성 후 자동으로 키 파일이 다운로드 되고 선택 박스에 생성한 키 페어가 선택됨
  4. 네트워크 및 보안 그룹 설정
  5. EBS 볼륨 설정
  6. +) 고급 세부 정보 > 사용자 데이터 설정
    사용자가 입력한 명령어가 EC2 인스턴스 처음 생성 시 실행
  7. EC2 생성
  8. EC2 접속 후 웹 서버 설치 및 웹 서버 실행
    생성한 인스턴스를 선택하고 우측 상단 [연결] 버튼 클릭하여 인스턴스에 연결
    EC2 Instance Connect
    # 아래 명령어 실행
    
    # 관리자 권한
    sudo -s
    
    # web server 설치
    yum install httpd -y
    
    # web server 실행
    service httpd start
     
  9. 웹 브라우저 접속 테스트
    할당 받은 퍼블릭 IP로 접속 시 뜨는 Test Page 화면
    # 서버에 index.html 파일 생성
    nano /var/www/html/index.html
    생성한 index 파일이 화면에 짠! (index.html 파일에 Hello World! 입력 후 ctrl+x > y key > enter key)
  10. 인스턴스 종료!