개요
- EC2란?
Elastic Computer Cloud의 약자로, AWS에서 컴퓨팅 서비스를 제공하는 상품을 의미하며 일반적인 호스팅 서비스에서 서버 호스팅을 의미한다.
EC2는 일반적인 클라우드처럼 자유롭게 크기 조정이 가능하고, 일반 온프레미스 호스팅에 비해 낮은 초기 비용과 유지 보수 비용을 장점으로 갖는다.
1) 온디멘드(On-demand)
2) 예약 인스턴스 (RI-Reserved Instance) & Savings Plan
3) 스팟 인스턴스
- EC2 구성 순서
: AWS는 인스턴스 구성 시에 다양한 OS(리눅스, 우분투 등)를 선택하여 구성할 수 있도록 다양한 이미지 옵션을 제공함
: 물리적인 자원의 일부를 가상으로 그룹화하여 여기에 OS를 포함한 클라우드 리소스를 설치하고 이 서버를 고객에게 제공하는 서비스임
: 이 과정에서 OS와 클라우드 리소스를 설치하기 위해 패키징된 이미지(Docker Image와 같은 개념)를 Amazon Machine Image - AMI라고 부름
: AWS가 추천하는 AMI 타입은 Amazon Linux 2
형식으로 EC2에 최적화된 Linux kernel 5.10을 사용하는 등 클라우드 컴퓨팅에 적합하게 구성되어 있음
cf) 프로젝트 당시에는 잘 모른 상태로 Ubuntu Server 18.04 LTS를 썼던 것 같은데...
- 인스턴스 타입
EC2는 형태-세대-특성의 순으로 인스턴스 타입을 네이밍함
T2 타입과 T3 타입은 같은 인스턴스 구조에 2세대, 3세대 인스턴스 타입을 의미함
3-1. 인스턴스 타입 - 형태
1) T: Turbo - 부스트 가능한 서비스
2) M: Most Scenarios - 범용
3) C: Compute - 컴퓨팅 연산 위주 (컴퓨팅 최적화)
4) R: Ram - 메모리 사용량 위주
5) X: eXtra large memory - 엄청난 크기의 메모리 사용량
6) H: HDD - 하드 공간 위주
7) I: I/O - IO 작업이 많은 NVMe 위주
구축하려는 서비스의 특성에 맞추어 인스턴스 타입을 적절하게 고르는 것이 중요함
일반적인 웹 서비스/앱 서버를 EC2에서 처음 구축하는 경우 M 타입의 인스턴스를 사용하되, 사용되는 CPU, Memory 양을 바탕으로 인스턴스를 교체하는 것이 좋음
3-2. 인스턴스 타입 - 세대
T,C,M 등의 형태 다음에 오는 숫자는 세대로 이해하면 좋음
일반적으로 이전 세대 인스턴스 타입에 비해 최근 세대 인스턴스 타입의 비용이 5~9% 정도 더 저렴함
AWS는 데이터센터의 관리 로드를 줄이기 위해, 최신 인스턴스 타입을 사용하도록 유도함
3-3. 인스턴스 타입 - 특성
1) a: AMD CPU
2) b: Block Storage Optimized
3) g: Graviton2 Processors (AWS 프로세서)
4) n: Networking Optimized
- 인스턴스 세부 정보 구성
인스턴스 세부 정보는 EC2의 가용 영역, 서브넷, 네트워크 환경(VPC), 종료 방식 등 다양한 세부 설정을 입력할 수 있음
AWS는 일반적인 사용자 선택과 보편성에 맞추어 설정값을 기본 제공하기 때문에 테스트하거나 할 때는 기본 설정 그대로 놔두고 다음 단계로 넘어가는 것이 좋음
- 스토리지 추가
EC2에 연결할 Elastic Block Storage(EBS)를 설정하느 ㄴ화면
기본적으로 SSD/HDD 등을 선택해 추가할 수 있으며, 계정당 최대 30GB의 EBS는 1년간 무료로 제공됨
스토리지는 대부분 SSD를 기본 구성하도록 권장됨
1) 범용 SSD - gp2 - 일반 SSD
2) 범용 SSD - gp3 - 일반 SSD gp2의 다음 세대
3) 프로비저닝 된 IOPS SSD - io1 - I/O 최적화가 이루어진 SSD
4) 프로비저닝 된 IOPS SSD - io2 - io1의 다음 세대
5) 마그네틱 - 스탠다드
- 태그 추가
EC2에 별도 관리를 위한 태그 추가 가능
key에 name을 넣어 인스턴스에 이름을 지정하거나, key에 team을 넣어 조직별로 비용 구성을 분리하여 관리/조회할 수 있도록 세팅 가능
- 보안그룹 구성
인스턴스에 접근 가능한 포트/프로토콜/IP를 지정하여 제한된 접속만 가능하게 할 수 있음
보안 그룹은 이전에 다룬 네트워크(VPC, 서브넷)과 함께 인스턴스에 연결되는 네트워크를 통제하는 요소로써, 인스턴스 단위에서의 보안 설정을 구성하는 방식
1) SSH-TCP-22-0.0.0.0/0: 모든 IP에서의 SSH 접속을 허가함(public key로 접근 제한)
2) HTTP-TCP-80-0.0.0.0/0: 모든 IP에서의 HTTP 요청 허가
3) HTTPS-TCP-443-0.0.0.0/0: 모든 IP에서의 HTTPS 요청 허가
4) MYSQL/Aurora-TCP-3306-제한된 IP: 정해진 IP에서 들어오는 Database 접근 허가(DB 서버만 적용)
- 정리
다른 클라우드 서비스나 소규모 클라우드에 비해 EC2는 설정해야 할 값이 많고 복잡해 보이지만, 각각의 단계에서 해야 할 일이 명확하기 때문에 잘 적용하여 활용하면 클릭 몇 번만으로 내 개발 환경에 딱 맞는 클라우드를 구성할 수 있다.
이전에 AWS에서 EC2를 생성해 서버를 생성할 때 참 편리하다고 많이 느끼며 사용했지만 공부하면서 EC2의 기능을 제대로 써보지 못한게 아쉬웠다. 그래도 공부하면서 알게된 걸 나중에 써먹으면 좋을 것 같다.