☁️ Amazon EC2
EC2는 Elastic Compute Cloud의 줄임말로, IaaS에 해당한다.
[EC2에서 제공받을 수 있는 서비스]
- 가상머신 대여 (EC2)
- 가상 드라이브나 EBS 볼륨에 데이터 저장 (EBS)
- 기기들에 부하를 분산 (ELB)
- 자동 스케일링 그룹을 사용한 스케일링 (ASG)
⚙️ EC2 사이즈 & 구성 옵션
- 운영체제 : 리눅스, 윈도우, 맥OS
- 컴퓨팅 성능 & 코어 설정
- RAM 설정
- 저장 공간 설정
- 네트워크 카드 : 속도, 공용 IP 주소
- 방화벽 규칙 : 보안 그룹
- 부트스트랩 스크립트 : EC2 사용자 데이터
🙋🏻 EC2 사용자 데이터
EC2 사용자 데이터 스크립트를 통해 인스턴스들을 부트스트랩하는 것이 가능한데,
부트스트랩이란 가상머신이 시작할 때 명령을 내리는 것으로, 이 스크립트는 인스턴스가 시작될 때 한번만 실행된다.
EC2 사용자 데이터는 업데이트 설치, 소프트웨어 설치와 같은 부팅 작업을 자동화하는 데 사용되며,
EC2 사용자 데이터 스크립트는 루트 유저를 위해 실행된다.
💻 EC2 인스턴스
🔖 AWS의 인스턴스 명명 규칙
ex) m5.2xlarge
- m : 인스턴스 클래스
- 5 : 인스턴스 세대
- 2xlarge : 인스턴스 크기
📌 인스턴스 유형의 일반적인 목적
- 웹 서버나 코드 저장소같은 작업의 다양성
- 연산, 메모리, 네트워킹 사이의 밸런스 유지
⚙️ EC2 인스턴스 유형
💻 연산 최적화된 EC2 인스턴스 유형
높은 성능을 요구하는 컴퓨팅 집약적 작업들에 최적화 되어있으며, C로 시작한다.
Use case : 데이터 배치 처리, 미디어 트랜스코딩, 고성능 웹서버, 고성능 컴퓨팅(HPC), 머신러닝, 게임 서버
💾 메모리 최적화된 EC2 인스턴스 유형
메모리에서 큰 데이터 셋을 처리하는 작업들에 좋은 성능을 보이며, R으로 시작한다.
Use case : 고성능의 관계/비관계형 데이터베이스, 웹 크기의 분산 캐시 저장소, BI에 최적화된 인메모리 데이터베이스, 대규모 비정형 데이터의 실시간으로 처리하는 앱
🪣 저장소 최적화된 EC2 인스턴스 유형
로컬 저장소에 있는 대규모 데이터셋에 대한 접근에 유용하며, I로 시작한다.
Use case : OLTP 시스템, 관계형 & NoSQL 데이터베이스, 인메모리 데이터베이스용 캐시, 데이터 웨어하우징 앱, 분산 파일 시스템
🔐 Security Groups
AWS 네트워크 보안에 있어 보안 그룹은 매우 필수적이다.
보안 그룹은 EC2 인스턴스에서 트래픽이 들어가고 나오는 것을 허용하는 방법을 통제하는 방화벽 역할을 한다.
보안 그룹은 허용 규칙만 포함하고 있으며, 보안 그룹의 규칙들은 IP 주소나 다른 보안 그룹을 참조할 수 있다.
⛔️ 보안 그룹의 규제사항
- 포트에 대한 액세스
- 허용된 IP 범위
- 내부 네트워크에 대한 제어
- 외부 네트워크에 대한 제어
💡 보안 그룹에 대해 알아야 할 것들
- 여러개의 인스턴스에 부착 가능하다.
- 리전과 VPC의 조합에 잠겨있다.
- 보안 그룹은 EC2 밖에 존재한다.
- SSH 액세스를 위해 한 개의 별도의 보안 그룹을 유지하는 것이 좋다.
- 앱에 접근이 불가능하다면, 그것은 보안 그룹 이슈이다.
- 하지만 ‘연결이 거부됨’ 에러는 보안 그룹 이슈가 아니라 앱의 에러다.
- 기본적으로 내부 트래픽은 모두 막고, 외부 트래픽은 모두 허용한다.
💡 알아야 하는 포트 번호
- 22 : SSH - 리눅스 인스턴스에 로그인 하는 경우 사용
- 21 : FTP - 파일 업로드 및 공유에 사용
- 22 : SFTP - SSH를 사용한 파일 업로드에 사용
- 80 : HTTP - 보안되지 않은 웹사이트에 접속하기 위해 사용
- 443 : HTTPS - 보안 웹사이트에 접속하기 위해 사용
- 3389 : RDP - 원격 데스크톱에 로그인하기 위해 사용
🧾 EC2 인스턴스 구매 옵션
📌 주문형 인스턴스
시간당 사용료를 지불하는 방식으로, 가장 비싸지만 선불을 하거나 보증금을 지불할 필요가 없다.
단기간 방해받지 않는 작업에 권장된다.
📌 예약형 인스턴스
주문형 인스턴스에 비해 72%정도 할인이 되며, 특정 인스턴스 속성을 예약한다.
1년 혹은 3년 예약이 가능하며, 선불 여부, 인스턴스 범위도 선택이 가능하다.
데이터베이스같이 안정적인 상태를 유지하는 응용 프로그램에 권장되며, 사고 팔 수 있다.
인스턴스 유형 등을 탄력적으로 바꿀 수 있는 Convertible Reversed Instance도 있다.
📌 Savings Plans
장기 사용을 기반으로 할인받을 수 있으며, 1 ~3년간 시간당 10달러 사용과 같이 사용량을 정할 수 있다.
Saving Plans으로 설정한 사용량 이상으로 사용했을 경우, 주문형 인스턴스처럼 지불하게 된다.
특정 인스턴스 그룹이나 리전에 국한되며, 유연하게 사용할 수 있다.
📌 Spot Instance
주문형 인스턴스에 비해 90% 이상 할인받을 수 있어, 비용 부분에서 가장 효율적인 인스턴스이다.
하지만 최대 사용 가격이 현재 spot price보다 낮다면 권한을 잃게 된다.
데이터베이스와 같이 중요한 작업 보다는 실패 가능성이 있는 작업을 할 때 사용하면 좋다.
📌 전용 호스트
사용자 전용으로 EC2 인스턴스 용량을 갖춘 물리적인 서버이며,
규정 준수 요구사항을 충족하고 서버 기반 소프트웨어 라이선스를 사용할 수 있도록 해준다.
주문형, 예약형 모두 가능하며, 가장 비싼 옵션이기도 하다. 복잡한 라이센스 모델을 가진 소프트웨어에 유용하다.
📌 전용 인스턴스
사용자 전용으로 하드웨어에서 작동하는 인스턴스이다.
같은 계정에 있는 다른 인스턴스와 하드웨어를 공유할 수 있지만, 인스턴스 배치를 제어할 수는 없다.
📌 용량 예약
특정 가용 영역에 주문형 인스턴스를 예약하는 방법으로, 원하는 때에 용량에 접근할 수 있다.
시간 제약이 없어 아무때나 만들거나 취소할 수 있으므로 할인을 받을 수 없지만,
Regional Reserved Instance나 Savings Plans와 결합하여 할인 효과를 받을 수 있다.
인스턴스가 작동하든 하지 않든, 요구 비율로 요금이 부과된다.
특정 가용 영역에 속해야 하는 단기간 방해받지 않는 작업에 적합하다.
🔑 EC2 책임 분배 모델
[AWS]
- 모든 인프라의 보안
- 물리적 호스트 격리
- 결함있는 하드웨어 대체
- 규정 준수 검증
[사용자]
- 클라우드 내의 보안
- EC2 인스턴스 내의 모든 가상 컴퓨터에 대한 운영체제 패치 및 업데이트
- EC2 인스턴스에에 설치된 소프트웨어와 유틸리티 관리
- EC2에 할당된 IAM 역할과 IAM 사용자 접근 권한 관리
- 인스턴스 내의 데이터 보안