[CS] AWS-2.EC2

limlim·2023년 5월 12일
0

CS

목록 보기
9/15

개요

  • 항해에서 프로젝트를 서버에 배포할 때 AWS에서 가장 많이 사용한게 EC2이다. EC2 생성을 거짓말 안하고 한 10번은 넘게 했던 것 같다. 하지만 쓰는 것에 급급했던 나머지 EC2에 대해서 얕게 알고 있었다. 이번에 공부하며 정리해 제대로 알고 있어야 겠다.
  1. EC2란?
  • Elastic Computer Cloud의 약자로, AWS에서 컴퓨팅 서비스를 제공하는 상품을 의미하며 일반적인 호스팅 서비스에서 서버 호스팅을 의미한다.

  • EC2는 일반적인 클라우드처럼 자유롭게 크기 조정이 가능하고, 일반 온프레미스 호스팅에 비해 낮은 초기 비용과 유지 보수 비용을 장점으로 갖는다.

1) 온디멘드(On-demand)

2) 예약 인스턴스 (RI-Reserved Instance) & Savings Plan

3) 스팟 인스턴스

  • AWS를 사용할 때 Free-Tier 모델만 사용해봤는데 그외에 다른 모델도 많아 인스턴스의 세부사항은 사용자가 필요한 것을 선택하여 구매할 수 있다.
  1. EC2 구성 순서
  • OS -> AMI

: 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를 썼던 것 같은데...

  1. 인스턴스 타입
  • 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

  1. 인스턴스 세부 정보 구성
  • 인스턴스 세부 정보는 EC2의 가용 영역, 서브넷, 네트워크 환경(VPC), 종료 방식 등 다양한 세부 설정을 입력할 수 있음

  • AWS는 일반적인 사용자 선택과 보편성에 맞추어 설정값을 기본 제공하기 때문에 테스트하거나 할 때는 기본 설정 그대로 놔두고 다음 단계로 넘어가는 것이 좋음

  1. 스토리지 추가
  • 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) 마그네틱 - 스탠다드

  1. 태그 추가
  • EC2에 별도 관리를 위한 태그 추가 가능

  • key에 name을 넣어 인스턴스에 이름을 지정하거나, key에 team을 넣어 조직별로 비용 구성을 분리하여 관리/조회할 수 있도록 세팅 가능

  1. 보안그룹 구성
  • 인스턴스에 접근 가능한 포트/프로토콜/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 서버만 적용)

  1. 정리
  • 다른 클라우드 서비스나 소규모 클라우드에 비해 EC2는 설정해야 할 값이 많고 복잡해 보이지만, 각각의 단계에서 해야 할 일이 명확하기 때문에 잘 적용하여 활용하면 클릭 몇 번만으로 내 개발 환경에 딱 맞는 클라우드를 구성할 수 있다.

  • 이전에 AWS에서 EC2를 생성해 서버를 생성할 때 참 편리하다고 많이 느끼며 사용했지만 공부하면서 EC2의 기능을 제대로 써보지 못한게 아쉬웠다. 그래도 공부하면서 알게된 걸 나중에 써먹으면 좋을 것 같다.

참고자료: https://yozm.wishket.com/magazine/detail/1328/

profile
不怕慢,只怕站 개발자

0개의 댓글