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