EC2 개념 원리

문한성·2023년 6월 23일
0

부트캠프

목록 보기
117/123
post-thumbnail

EC2 (Elastic Compute Cloud) 개념

EC2란 Amazon Elastic Compute Cloud의 줄임말로서 AWS에서 제공하는 클라우드 컴퓨팅이다.

독립된 컴퓨터를 임대해주는 서비스로서 AWS의 대표적인 서비스, 대표적인 상품이다.

우리가 PC방에 가서 요금을 내고 컴퓨터를 이용하는 것 처럼 aws에서 컴퓨터를 대여해주는 서비스라고 보면 된다.

물론, 여러분의 가정용 컴퓨터와 EC2는 중요한 차이가 존재한다.

EC2는 컴퓨터를 주문하면 바로 1분 안에 생성되고, 삭제 역시 즉시 제거된다.

초기 구입비, 세팅비가 전혀 없고, 그냥 사용한 만큼 비용을 지불하면 된다.

내가 만일 10GB의 용량만 필요하다면, 120GB 삼성 SSD를 구입해서 장착하는게 아니라 딱 10GB용량 만큼만 지불하고 뽑아 사용 할 수 있으니 융통적으로 비용을 아낄수 있는 원리이다.

또한 EC2는 복잡한 공유기 세팅없이 인터넷을 통해서 자유롭게 접속할 수 있고, 이미지(AMI) 기능도 사용할 수 있다.

컴퓨터를 사용하면 프로그램도 설치하고, 파일도 저장하고, 설정도 변경하게 되는데, 이 OS 상태 그대로 저장하는 기능을 이미지(AMI) 라고 한다. 윈도우 백업 설정 이라고 봐도 무방하다.

이미지를 이용해서 새로운 컴퓨터를 만들면 이미지에 저장된 상태와 똑같은 컴퓨터를 빠르게 생성할 수 있다.

즉, 컴퓨터를 하나 장만할 때마다 반복되는 설치 작업을 하지 않게 되는 것이다.

이를 통해 하드웨어 구매없이 더 빠르게 애플리케이션을 개발하고 배포할 수 있다.

EC2를 통해 원하는 만큼 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능하며, 또한 요구 사항이나 갑작스러운 트래픽 증가 등 변동 사항에 따라 신속하게 규모를 확장하거나 축소할 수 있어 서버 트래픽 예측 필요성이 줄어든다는 장점이 있다.


EC2 특징 요약

EC2의 특징을 요약 정리하자면 다음과 같다.

  • 컴퓨팅 요구사항의 변화에 따라 컴퓨팅 파워를 조정할 수 있다.
  • 실제로 사용한 용량 만큼만 지불한다 (서비스 요금을 미리 약정하거나 선입금, 하드웨어 비용이 필요 없음)
  • Linux / Windows 중 OS 선택이 쉽게 가능하다
  • 몇 분이면 전세계에 컴퓨터 수백여대를 생성할 수 있다. (실제로 미국에 가서 건물 임대하고 컴퓨터 구입하고 네트워크 구축하는 비용과 시간에 서비스 신청만 하면 바로 이용)
  • 머신러닝, 웹서버, 게임서버, 이미지 처리 등 다양한 용도에 최적화된 서버를 쉽게 구성 가능
  • 여러 다른 AWS 서비스와의 유기적인 연동이 가능

EC2의 구성 (Instance / EBS / AMI)

일반적인 서버를 보면 보통 컴퓨팅(CPU/RAM), 하드디스크, 랜카드 로 나누어진다.

이것을 EC2에 대입해보면 다음과 같이 된다.

  • 컴퓨팅에 해당하는 인스턴스
  • 하드디스크에 해당하는 EBS
  • 랜카드에 해당하는 ENI 가 있다.

Tip

랜카드 : 한 네트워크 안에서 컴퓨터간 신호를 주고받는 데 쓰이는 하드웨어

이번 시간에는 이들이 무엇인지 어떤 역할을 하는지 알아보겠다.


EC2 인스턴스 이해하기

인스턴스란, 어렵게 접근할 필요없고 단순하게 aws 클라우드에서 사용하는 가상 컴퓨터 라고 이해하면 된다.

가상의 컴퓨터에의 CPU, 메모리, 그래픽카드 등 연산을 위한 하드웨어 부분을 담당한다.

그리고 Amazon EC2는 각 사용 사례에 맞게 최적화된 다양한 인스턴스 유형을 제공한다.

컴퓨터라고 해서 모두 같은 컴퓨터다 아니다. 컴퓨터도 컴퓨터 마다 쓰임새가 다양하다.

고사양 게임용, 서버용, 대량의 데이터 저장소, 영상용, 로봇 등 컴퓨터 하드웨어 구성에 따라 여러 사용 목적을 정할 수 있다.

이것이 바로 인스턴스 유형이다.

즉, 애플리케이션 종류와 목적에 따라 적합한 리소스 조합을 선택할 수 있는 유연성을 제공하는 서비스이다.

EC2 인스턴스 유형

aws는 각 인스턴스의 사용 목적(서버용, 머신러닝용, 게임용)에 따라 타입별로 인스턴스에 이름을 부여해 구분하고 있다.

  • ex) t타입, m타입, inf타입 ..등

표를 보면 범용 및 컴퓨팅, 메모리, 저장 최적화 성능 목적에 따라 타입이 여러가지 존재한다는 것을 볼 수 있다.

특히 t와 m은 범용타입이기 때문에 aws 초보자들이 가장 많이 사용하는 프리티어에서 쓰는 타입이므로 자주 접해 볼수 있는 타입이다.

EC2 인스턴스 사이즈

인스터스의 크기라 함은, 인스턴스 cpu 갯수, 메모리 크기, 성능 등으로 사이즈가 결정됨을 말한다.

즉, 인스턴스 사이즈가 클수록 더 많은 메모리, 더많은 cpu, 더많은 네트워크 대역폭을 가질 수 있다는 것을 의미한다.

다음 표를 보면, 같은 t2. 이라는 인스턴스 타입에 영단어로 nano, micro, small, ...large 로 크기가 나뉘어져 있음을 볼 수 있다.  CPU나 메모리를 보니 사이즈가 클 수록 늘어나고 성능도 빨라진다.

즉 아래로 갈수록 점점 커지는 것이고 성능이 좋아지는 지표이다.

EC2 인스턴스 타입 읽는 법

위에 소개한 타입이 어떤 종류가 있고 사이즈는 뭐가 있고 등을 모두 외워야 하는거 아니다.

다만 위 사진처럼 인스턴스 단어가 나오면 이게 무슨무슨 의미인지만 알면 된다.

위의 단어를 해석하자면,

  1. m은 인스턴스 타입(패밀리) (범용 애플리케이션 서버용)을 의미하며
  2. 5는 5세대를 의미한다. 지금 이글을 쓰는 순간도 6세대, 7세대가 개발되어지고 있으며 앞으로도 세대가 업그레이드 될 것이다.
  3. a는 amd기반의 CPU 프로세서를 사용한다는 의미이며, (t4g = t4인스턴스 중 AWS Graviton 프로세서를 사용)
  4. xlarge는 큰 사이즈를 의미한다고 보면 된다.

EBS(Elastic Block Storage) 이해하기

위에서 배운 인스턴스가 연산에 관한 (CPU,메모리 등) 처리를 한다고 하면, 데이터를 저장하는 역할은 바로 EBS가 한다고 보면 된다.

즉, 클라우드에서 사용하는 가상 하드디스크(HDD) 인 셈이다.

여러분 집 컴퓨터 본체에 꽂혀져 있는 하드를 네트워크로 만든 버젼이라고 보면 된다.

EBS는 AWS 클라우드의 Amazone EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다.

그리고 단 몇분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝(빌리는 행위)한 부분에 대해서만 저렴한 비용을 지불 할 수 있다.

EBS 볼륨 유형 타입

EBS 타입이란 시중에서도 같은 하드 저장 디스크라도 SSD와 HDD, 느브메로 나뉘고 용량에 따라 성능과 가격이 차이나는 것처럼, EBS도 각각 타입으로 나눠놓은 것이다.

EBS는 총 5가지 타입을 제공하는데, 다음과 같다.

  • 범용(General Purpose of GP3) : SSD
  • 프로비저닝 된 IOPS(Provisioned IOPS or io2) : SSD
  • 쓰루풋 최적화(Throughput Optimized HDD or st1)
  • 콜드 HDD(SC1)
  • 마그네틱(Standard)

일반적으로 범용타입인 GP3을 선택하면 되지만, 자신은 요금을 극도로 아끼겠다 하면 마그네틱을 사용하면 된다.


AMI(Amazon Machine Image) 이해하기

AMI는 EC2 인스턴스를 실행하기 위한 정보를 모은 단위 이다.

EC2(가상 컴퓨터)를 실행하기 위해서는 CPU 프로세서 타입이라던지 저장공간 용량은 몇인지, 32비트인지 64비트인지, OS는 윈도우인지 리눅스인지, 소프트웨어는 어떤게 설치되었는지 ..등 정보가 필요한데 이러한 세팅 정보(템플릿)를 저장한 단위라고 생각하면 된다.

Tip

AMI : 서버에 필요한 운영체제와 다양한 소프트웨어로 구성된 탬플릿

예를들어 나는 리눅스가 깔린 EC2사용 할 것이다! 라면,

인스턴스를 생성하고 OS를 일일히 설치해서 구성해야 하는게 아니라, 리눅스 환경 세팅이 된 리눅스 템플릿 AMI를 EC2에 적용시켜 아주 간편하게 리눅스 컴퓨터를 장만 하는 원리이다.

앞서 배운 스냅샷을 기반으로 AMI 구성이 가능하기 떄문에, AMI를 사용하여 현재 상태의 EC2 세팅(템플릿)을 복제해서 다른 계정이나 다른 리전에게 전달도 가능하다.

또한 exe처럼 프로그램 형태로 AMI 배포가 가능해 다른사람이 받아 내 EC2 상태 그대로를 사용할 수 있다.


EC2 구축 세팅 & 사용하기

EC2 인스턴스 구축하기

0.  EC2 인스턴스 시작

먼저 리전을 선택하고 ec2를 검색하여 들어간다.


1.  EC2 인스턴스 구성하기 위한 AMI 선택

1단계 화면에서는 생성하고자 하는 인스턴스(서버)의 OS(Windows, Ubuntu, Centos.. etc)를 선택하는 화면이다.

위에서 배운 AMI 개념이 바로 여기서 나오는 것이다.

AMI는 일종의 컴퓨터 세팅 템플릿이라고 했다. 즉, 우분투가 깔려진 컴퓨터 세팅을 고른다거나 윈도우 템플릿을 고른다거나 등, 바로 이 단계에서 하는 것이다.

사용하고자 하는 목적에 따라 OS와 CPU 프로세서(x86 / ARM)를 선택한 후 클릭을 하면 된다.


2.  EC2 인스턴스 유형과 사이즈 선택

위에서 배운 EC2 인스턴스 유형 & 사이즈 개념이 바로 여기에 등장한다.

가장 범용적으로 쓰이는 t2 그룹에 micro 유형 크기가 프리티어로 사용이 가능하다라고 명시되어 있다.

다시 한번 설명하자면, 인스턴스 유형에는 대체로 C, D, H, I, M, R, T, Z, G, P 그룹의 인스턴스가 많이 사용된다.

각 시리즈별로 컴퓨팅 최적화, 메모리 최적화, 스토리지 최적화등 특화된 인스턴스들이다.

우리는 가장 기본적인 t2를 사용할 예정이다.

[프리 티어 사용 가능] 이 붙지 않은 Instance는 컴퓨터를 시작하는 순간부터 과금이 발생할 수 있다.

그룹에 따라 가격이 천차만별이니 만들기 전에 가격을 알아보시고 사용하길 바란다.


3.  EC2 인스턴스 세부 정보 구성

+ 추가 옵션 설명

  • 인스턴스 개수 : Instance의 개수 설정 (몇 개까지 가 확장될 수 있는지 등)
  • 구매 옵션 : 스팟 인스턴스란 AWS에서 유휴(놀고 있는, 사용하지 않는, 여유) 컴퓨터가 많은경우 할인 받을 수 있는 요금제라고 볼 수 있다. 정확한건 다음 사이트 참고 (https://aws.amazon.com/ko/ec2/spot/Visit Website)
  • 종료 방식 : 중지 같은 경우 잠시 프리징 시킨다고 보면된다. 종료 같은경우는 아예 해당 Instance를 삭제한다고 보면 된다.

4.  EBS(가상 스토리지) 설정

EBS는 네트워크에 있는 하드라고 생각하면 된다고 배웠다.

옵션에 크기와 볼륨 유형이 눈에 띄는데 다음과 같다.

  • 크기(GiB) : 메모리 GB단위 (적당히 8GB로)
  • 볼륨 유형 : 위에서 EBS의 5가지 타입이라고 배운바가 있다.항목에는 5가지 종류의 SSD가 있는데, 성능 차이에 따라 구분을 둔 것이다.(성능을 높게 잡으면 비용이 많이 발생할 수 있으니, 범용 SSD나 가장 저렴한 마크네틱을 선택한다.)
  • 종료 시 삭제 : 나중에 인스턴스가 삭제 될떄 EBS도 삭제할지 말지 설정하는 옵션이다.해당 옵션이 체크되면, 인스턴스를 종료하면 컴퓨터와 저장장치가 모두 폐기된다고 보면된다.체크가 안되있는 경우 컴퓨터는 폐기, 저장장치는 폐기되지 않는다고 보면 된다.(저장장치도 비용 발생할 수 있으니 체크를 한다.)
  • 암호화 : EBS 자체를 암호화 시키는 것이다.만일 누가 해킹해서 EBS를 뺴온다 해도 암호화 되어있기 때문에 안의 데이터가 안전하다는 뜻이다.즉, 금고 같은 개념이다. (내용물 데이터가 암호화가 되는게 아닌 하드가 암호화)


5.  태그 추가

태그는 어떤 인스턴스를 만들고, 어떤 용도, 누가 관리 하는지 등의 메모기능 이라고 볼 수 있다.

인스턴스를 여러 개 사용할 경우 해당 인스턴스를 알아보기 쉽게 별명으로 구분하는 위한 기능이다.

간단히 해당 EC2의 역할이 먼지만 기록하고 넘어간다. (설정을 하지 않고 넘어가도 상관없다.)


6.  보안 그룹 구성

보안 그룹 구성은 쉽게 방화벽을 설정하는 단계라고 생각하면 된다.

네트워크를 통해 해당 인스턴스에 어떤 접속방식을 어디까지 허용할지 설정해준다.

기본값은 SSH접속을 22번 포트를 사용하여 IP 0.0.0.0/0 즉 모든 IP의 사용자가 접속할 수 있도록 설정되어 있다.

만일 웹에서 접속하게 하고 싶다면, 규칙을 추가해서 HTTP(80) 포트를 추가해 열면 된다.

새 보안 그룹 생성을 하면 그룹 세팅이 저장되어 추후 새로 만들 서버들에게도 동시에 적용이 가능하다

이외에도 보안그룹에 https나 추가적으로 세팅해줘야 할게 있는데,

단순히 연습용이라면 그냥 기존 보안 그룹 선택 버튼을 누르고 디폴트 VPC 보안그룹을 선택해 적용해주면 간단히 설정 할 수 있다.


7.  인스턴스 키페어 생성

키 페어는 인스턴트에 접속하기 위한 물리 키라고 보면 된다.

평소 로그인 할때 처럼 비밀번호 입력하듯이 ** 를 입력하고 들어가는 게 아니라, .pem 파일이 꼭 있어야만 EC2 인스턴스에 접근이 가능한 원리이다.

나중에 외부에서 EC2에 접속을 할때 키페어가 반드시 필요하게 된다.

잃어버리거나 삭제해버려도 재발급이 불가한 것으로 알고 있으니 그런 일이 생기지 않도록 잘 관리해주어야 한다.

자칫 EC2를 다시 만들어야 할지도 모른다.

만일 이전에 이미 한번 발급받은 적이 있다면, 기존 키 페어 리스트가 뜰 것이며, 기존키를 사용하여 범용적으로 사용이 가능하기도 하다.


9.  인스턴스 시작

인스턴스가 초기화되면서 상태가 실행 중 이라면 문제없이 인스턴스 생성을 완료한 것이다.


10.  인스턴스 삭제

만일 인스턴스를 삭제를 원한다면, 우클릭을하고 인스턴스 종료를 하면 된다.

인스턴스를 종료하게 되면 인스턴스 상태가 노란버튼으로 shuting-do상태에서 조금만 기다리면 빨간버튼으로 terminated로 변경되고 2~4시간 이상 지나면 목록에서 제거된다.


EC2 인스턴스에 탄력적 IP 할당하기

서버(인스턴스)가 생성되었고, 이를 실행하는데 그전에 추가로 해야할 것이 있다.

탄력적 IP 라는 것을 설정 해주어야 하는데, 이 인스턴스에서 설정된 퍼블릭 IP는 서버를 키고 끌때마다 새로운 것으로 갱신되기에, 이를 하나의 IP로 통일(고정)하기 위함이다.

안 그러면 인스턴스 끄고 킬때마다 아이피가 바뀌는 불상사가 일어난다.


외부에서 EC2 접속(SSH) 여러가지 방법

PuTTy / FileZilla / GIT BASH / CMDER / mobaxterm 이용해서 접속하는 방법

[AWS] 📚 EC2 외부 접속(SSH) 5가지 방법 - PuTTy / FileZilla / MobaXterm / CMDER / GIT BASH


EC2 인스턴스 AMI 다루기

지금까지 인스턴스를 생성하고 웹서버 프로그램을 깔고 띄우는 것 까지 성공했다.

그런데 만일 다른 곳 가서 또 인스턴스를 생성해 웹서버 띄우라고 하면 콘솔에 다시 웹서버를 설치하는 등 반복해야 할지도 모른다.

하지만 우리는 AMI(이미지) 라는 개념을 배웠다. 이를 적극적으로 활용하면된다.

이제 AMI 만드는 법을 알아보자.

1. EC2 AMI 만들기

EC2 인스턴스에서 우클릭 -> 이미지 및 템플릿 -> 이미지 생성 을 누른다.

이미지 생성 버튼을 누르면 AMI가 생성되기 시작한다.

다만 시간이 좀 걸리는 작업이니 여유있게 기다려주자.


2. EC2에 AMI 적용하기

AMI가 완성되면 이제 인스턴스를 만들때 내가 만든 커스텀 AMI가 잘 적용되는지 확인해보자.

[ EC2 인스턴스 시작 ]을 누르고 나의 AMI를 누르면 지금 생성했던 EC2가 보일 것이다.

생성한 EC2를 선택하고 앞서에 만들었던 EC2 세팅 단계를 다시 반복해서 만들면, 복제한 원본 인스턴스 내용이 그대로 반영이 되어있을 것이다.

이처럼, 잘 빌드된 백앤드 어플리케이션을 AMI로 만들뒤 오토스케일링이나 로드 밸런싱에서 인스턴스를 사용할때, 미리 만들어든 AMI을 사용한다면 시간을 많이 절약 할 수 있게 된다.  이미 준비된 상태로 인스턴스를 실전 배치를 할 수 있기 때문이다.

또한 AMI를 다른사람에게 전달도 가능하니 매우 유용하게 쓰일수 있다.

profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글