[AWS] AWS EC2

Junwon SEO·2023년 7월 26일

AWS 스터디

목록 보기
2/2

이전 포스팅에서 언급했듯이 클라우드 컴퓨팅이란 인터넷을 통해 IT 리소스를 제공받는 것을 말한다.
예를 들어 인프라를 실행하기 위해 서버를 설정할 책임이 있다면 AWS를 통해 다양한 컴퓨팅 옵션을 선택할 수 있다. 하지만 어떠한 서비스를 어떤 경우에 사용해야 할 지 인지해야 한다.

기본적인 수준에서 AWS는 가상 머신(VM), 컨테이너 서비스, 서버리스 크게 3가지 유형컴퓨팅 옵션을 제공한다.

AWS에서는 가상 머신(VM)을 Amazon Elastic Compute Cloud, 줄여서 AWS EC2라고 부른다.
Compute Cloud를 줄여 C가 2개 이므로 EC2라고 부르고 있다. (아마존은 Elastic이라는 단어를 참 좋아해서 서비스 곳곳에서 'Elastic'을 볼 수 있다. 서비스명에 E가 포함되어 있다면 눈치껏 elastic이라 생각하자,,,)

0. 서버 가상화

가상 머신에 대해 이해하기 전에 서버의 가상화 개념에 대해서 먼저 이해해야 한다. 일반적으로 1대의 기기에는 1개의 OS만 설치된다. 하지만 가상화 소프트웨어를 사용하면 하나의 하드웨어에서 여러 OS를 작동시킬 수 있다. 이를 서버의 가상화라고 한다.

사진과 같이
물리 서버 = 단독 주택,
가상 서버 = 아파트,
하드웨어 = 건물,
OS = 가족

이라고 생각해보자. 단독 주택에는 한 가족만 살고 있으며 건물의 모든 방이나 공간을 한 가족이 모두 이용한다. 반면에 아파트는 건물 내에 여러 집이 존재하고 각 집에는 각각의 가족들이 살고 있다. 각 가족은 각각의 공간에 대해서만 이용하며 방의 넓이는 가족마다 차이가 있을 수 있다.

이를 다른 말로 하면 물리 서버는 하나의 OS가 모든 리소스를 다 사용하는 형태이며, 가상 서버의 경우에는 여러 OS를 둘 수 있으며 각 OS에 할당 될 리소스인 CPU 크기, 메모리 크기 등을 선택할 수 있다.

1. Amazon EC2 (Elastic Compute Cloud)

EC2는 클라우드를 통해 안전하고 크기 조정이 가능한 컴퓨팅 용량을 제공하는 웹 서비스이다.

아마존은 EC2라는 가상 서버를 인스턴스단위로 관리하며 사용자는 이를 통해 인스턴스라는 가상 서버를 프로비저닝 할 수 있다. AWS는 '웹 서비스'라는 문구를 사용해 EC2를 설명하지만 EC2 인스턴스는 웹 서버만 실행하는데 국한되지는 않는다.

EC2를 프로비저닝 하려면 아래와 같이 3가지 방법을 이용할 수 있다.

  • AWS Management Console
  • AWS Command Line Interface (AWS CLI)
  • AWS Software Development Kit (AWS SDK)

또 EC2 인스턴스를 생성하기 위해서는 아래의 내용을 반드시 선택해야 한다.

  • Amazon Machine Image (AMI) : OS 소프트웨어가 설정된 템플릿
  • 인스턴스 사양 (인스턴스 유형)
  • 배포할 네트워크 (ex: VPC)
  • 데이터를 저장할 스토리지 용량 (ex: EBS)
  • 사용 권한 설정 (보안 그룹)

지금부터 AWS EC2 인스턴스를 프로비저닝 해보자. 아래에는 인스턴스를 생성할 때 선택해야 하는 요소들에 대해서 하나씩 설명했다.

2. AMI (Amazon Machine Image)

AMI는 OS 소프트웨어가 설정된 템플릿이다.

사진과 같이 AWS에서 미리 준비한 AMI가 제공되며 사용자는 어떠한 종류의 OS 템플릿을 설정할 것인지 정해야 한다. 추가로 아키텍처 또한 선택할 수 있는데 나중에 인스턴스를 사용할 때 본인이 선택한 아키텍처에 맞는 프로그램들을 다운로드 해야 하기 때문에 본인이 어떤 아키텍처를 선택했는지 인지하고 있어야 한다.

3. 인스턴스 유형 (인스턴스 사양)

다음으로는 인스턴스의 유형을 선택해야 한다.

인스턴스는 성능과 사양에 따라 다양한 유형이 있다. 인스턴스 유형의 표기를 보고 어느정도의 성능을 내는 인스턴스인지 파악하는 것이 중요하며 내가 사용할 인스턴스의 필요 성능이 어느정도 인지도 파악하는 것이 중요하다.

M5d.xlarge 인스턴스의 경우에 가장 왼쪽의 영어 표기 M은 인스턴스 패밀리를 나타낸다. AWS에서는 인스턴스 사용 목적에 따라 다양한 인스턴스 패밀리를 구성해 제공하고 있다.

인스턴스 패밀리의 종류와 목적은 사진과 같다. 일반적으로는 범용 패밀리인 M을 선택하며 평소에는 복잡하지 않은 프로세스를 진행하고 간혹 복잡한 연산을 해야 할 때는 T 시리즈를 이용하기도 한다.

다시 M5d.xlarge로 돌아오면 인스턴스 패밀리 M 옆의 숫자 5는 인스턴스의 세대를 의미하며 일반적으로 숫자가 높을 수록 최신이고 비용 대비 성능이 우수하다.

숫자 5 옆의 영문자 d는 추가 기능을 나타낸다. 자주 등장하는 문자가 'g' 인데 이는 graviton의 약자이다. AWS 에서는 독자적으로 설계한 ARM 기반의 Graviton2 프로세서를 적극적으로 홍보하고 있다. 범용 인스턴스인 M5 대비 20%의 비용 절감 효과와 유사 인스턴스와 비교해 약 40%의 성능 향상을 이루어냈다고 한다. 여튼 Graviton2 프로세서는 ARM 기반이기 때문에 이를 선택하고 싶다면 AMI를 선택할 때 아키텍처를 x86_64가 아니라 Arm으로 선택해야 한다.

마지막으로 M5d.xlarge 에서 . 이후의 단어는 인스턴스 크기를 나타낸다. 크기가 클 수록 고성능이며 가격도 크기에 따라 높아진다.

4. 네트워크 설정

인스턴스 유형을 선택했으면 생성할 EC2가 어떠한 네트워크에 배치될 것인지 네트워크 설정을 해야한다. 이 때 설정하는 것이 바로 VPC(Virtual Private Cloud)이다. 이는 추후에 네크워크와 관련된 포스팅을 하며 따로 다루도록 하겠다.

일반적으로 별다른 수정을 하지 않는다면 EC2 인스턴스는 default VPC에 연결된다. default VPC는 라우팅 테이블을 통해 Internet Gateway에 연결되어 있으므로 별다른 설정 없이도 EC2에서 인터넷을 이용할 수 있다고만 알고 있자. 반대로 인터넷 이용이 가능하다는 것은 해당 EC2 인스턴스의 모든 리소스가 외부에 공개되고 액세스 가능하다는 것이므로 중요한 데이터를 보관하면 안된다는 것에 주의하자.

5. 스토리지 설정

마지막으로 인스턴스를 생성하려면 응용 프로그램의 데이터, 로그, 설정과 같은 정보들을 저장할 스토리지를 선택해야 한다.

SSD, HDD 중에 하나를 선택할 수 있으며 모든 인스턴스는 하나 이상의 스토리지와 연결되어 있어야 한다. 이러한 스토리지를 Elastic Block Store, 줄여서 EBS라고 하는데 이 또한 추후에 스토리지와 관련된 포스팅에서 자세하게 다루도록 하겠다.

이러한 설정들을 거치면 최종적으로 EC2 인스턴스를 생성할 수 있다.

6. EC2 인스턴스의 생명 주기

일련의 과정을 거쳐 시작된 인스턴스는 다양한 상태를 가질 수 있으며 아래와 같은 생명 주기를 가지고 있다.

6-1. 보류 중
인스턴스를 시작하면 보류 중 상태로 들어간다. 이 때는 인스턴스 요금이 청구되지 않는다. 보류 중에는 AWS가 인스턴스를 설정하는데 필요한 일련의 작업을 수행한다.

6-2. 실행 중
인스턴스가 실행 중이면 사용할 준비가 된 것이다. 요금 청구가 시작되는 단계이기도 하다. 인스턴스가 실행 중 상태가 되자마자 재부팅, 종료, 중지, 최대 절전 모드와 같이 다른 작업을 수행할 수 있다.

6-3. 재부팅 중
재부팅인스턴스를 중지하고 다시 시작하는 작업과 다르다. 인스턴스 재부팅은 운영체제의 재부팅과 같으며 인스턴스가 동일한 호스트 컴퓨터에 남아 있고 퍼블릭 및 프라이빗 IP 주소, 인스턴스 스토어의 모든 데이터가 유지된다.

6-4. 중지 중
인스턴스를 중지했다가 시작하면 인스턴스가 새로운 기본 물리적 서버에 배치될 수 있다. 따라서 이전 호스트 컴퓨터에 있던 인스턴스 스토어의 데이터가 손실된다. 인스턴스를 중지하면 인스턴스는 동일한 프라이빗 IP 주소를 유지하지만 새로운 퍼블릭 IP가 할당된다는 것에 주의해야 한다. 또 인스턴스를 중지하면 비용이 청구되지 않는다고 착각하기 쉽다. 하지만 인스턴스 자체의 비용은 청구되지 않지만 EBS는 계속 돌아가고 있으므로 EBS 비용이 청구된다는 사실에 주의하자. (사실 난 몰라서 계속 비용을 내고 있었다,,,)

6-5. 종료
인스턴스를 종료하면 인스턴스 스토어가 삭제되고 머신의 퍼블릭 IP 주소와 프라이빗 IP 주소가 모두 손실된다. 이는 곧 더 이상 머신에 액세스할 수 없음을 의미하므로 인스턴스에 중요한 데이터가 남아있다면 반드시 백업을 해두고 종료해야 한다.

1개의 댓글

comment-user-thumbnail
2023년 7월 26일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기