프로그래밍/Infra

[AWS] Amazon Web Services - (3) EC2

Churnobyl 2023. 5. 3. 23:34
728x90
반응형

Chapter 04.  Amazon EC2 (Amazon Elastic Compute Cloud)

Amazon EC2

 Amazon Elastic Compute Cloud, 즉 Amazon EC2는 'Elastic'이라는 단어처럼 컴퓨팅 용량을 유연하게 늘렸다 줄였다 할 수 있는 IaaS방식 클라우드 서비스다. EC2에서 필요한 만큼의 가상 서버를 빌리면 EC2에서 보안 및 네트워킹을 구성해주고 스토리지를 관리할 수 있게 해준다. 쉽게 말해 가변적인 용량을 가진 가상의 깡통 컴퓨터를 빌려준다고 보면 된다. 그 가상 컴퓨터에 OS든 소프트웨어든 웹 애플리케이션이든 입맛에 맞게 설치해서 사용할 수 있는 것이다.

 

 

 


EC2의 기능(features of EC2)

 

  • 인스턴스(instance)
더보기

AWS에서 제공하는 하나의 컴퓨터 단위를 인스턴스라고 한다. 가상 컴퓨팅 환경(Virtual Commuting Environments)을 제공한다. 인스턴스를 생성할 때 인스턴스의 수를 한개가 아니라 여러개 만들어 주면 그만큼 컴퓨터의 수가 늘어나므로 추후에 Load balancer를 통해 한쪽 컴퓨터에 부하가 가지 않도록 트래픽 관리를 할 수 있다.

 

  • AMI(Amazon Machine Image) 제공
더보기

깡통 컴퓨터에 필요한 다양한 버전의 운영체제(OS) 및 추가적인 소프트웨어를 사전 구성해놓은 수많은 템플릿을 제공한다. Windows부터 macOS나 Ubuntu, Red Hat같은 리눅스 기반 OS들도 지원한다. 2023년 5월 3일 기준 7755개의 AMIs가 있다.

여기서 만들어 놓은 템플릿 이외에도 사용자가 직접 AMI를 만들어서 다른 인스턴스에 적용해줄 수 있다. 이렇게 되면 인스턴스를 만들 때마다 같은 작업을 반복하지 않아도 되는 장점이 있다.

 

 

더보기

적용하고자 하는 인스턴스의 성능을 결정한다. 인스턴스의 CPU성능, Memory 크기, Storage 용량, Networking 용량의 다양한 선택지가 있다. 자신이 하고자 하는 작업에 따라 더 빠릿빠릿한 CPU에 힘을 실어줄 수도 있고, Memory에 더 투자해서 Memory성능이 중요한 DB에 더 비중을 줄 수도 있다. 

AWS EC2 instance naming

각 인스턴스 타입은 위 그림과 같이 (대문자) + (숫자) + (소문자[추가적인 정보]) . (사이즈) 와 같은 이름이 붙는다.  위 그림에서 Instance family는 요구하는 기능에 각각 최적화된 인스턴스 타입을 그룹핑한 것으로 범사용형 M타입, 메모리 집약형 R타입, 그래픽 집약형 G타입, 고밀도 저장소형 D타입 등이 있다. Instance generation은 그 family들의 세대다. 당연하게도 세대가 더 높을수록 일반적으로 성능이 좋다. Additional capability는 이 인스턴스 타입이 AMD 프로세서를 사용했다 등 추가적인 정보를 기입한다. 마지막 Instance size는 용량을 의미하고 nano부터 2xlarge나 더 큰 사이즈까지 점점 사이즈가 커질수록 전체적인 CPU 개수나 Memory 용량 등이 늘어난다.

 

  • 키 페어(Key Pair)
더보기

Public Key와 Private Key로 구성되며 EC2 인스턴스에 연결할 때 자격 증명에 이용된다. Public Key는 인스턴스에 저장하고 Private Key는 발급 시 사용자의 컴퓨터에 저장된다. Private Key는 분실 시 복구할 방법이 전혀 없으며 Private Key를 소유한 사람은 누구나 인스턴스에 접근할 수 있으므로 보관할 때 신중해야 한다. Linux기반 인스턴스의 경우에 Private Key를 이용해 SSH로 인스턴스에 연결할 수 있다. 선택할 수 있는 암호화 키 타입은 RSA 알고리즘과 ED25519가 있는데 RSA는 공개키와 개인키를 나누는 기존의 알고리즘이고, ED25519는 RSA에서 조금 더 발전해 더 짧은 길이의 키로도 RSA알고리즘과 비슷한 보안을 달성할 수 있다. 또한 Private Key 파일의 형식은 pem파일과 ppk파일이 있는데, pem파일은 ssh방식으로 인스턴스를 원격 제어하기 위한 파일이고, ppk파일은 puTTY 프로그램을 통해 원격제어하기 위한 파일이다.

 

  • Amazon Elastic Block Store(Amazon EBS)
더보기

데이터의 영구 스토리지 볼륨 즉 HDD나 SSD등의 저장소를 제공한다. EBS는 어떤 AZ내에 존재할 수 있으며 스냅샷을 생성해 같은 Region 혹은 다른 Region에 복사/복구할 수 있다. 

 

  • 보안 그룹 (Security Group)
더보기

EC2 인스턴스에 대한 수신(Inbound) 및 발신(Outbound) 트래픽을 제어하는 가상 방화벽. 네트워크를 통해 이 인스턴스에 접속할 때 어떤 방식들을 허용해 줄 지 결정하는 단계다. 인스턴스를 시작할 때 하나 이상의 보안 그룹을 지정할 수 있으며 만약 지정하지 않았을 경우 EC2에서 제공하는 기본 보안 그룹이 적용된다. 기본 보안 그룹은 기본적으로 인스턴스로 접속하는 Inbound는 모두 막혀 있으며 인스턴스에서 나가는 Outbound는 모두 열려 있다. 따라서 외부에서 인스턴스에 접근하도록 하기 위해서는 HTTP의 80번 포트나 HTTPS의 443번 포트 등을 이 보안 그룹에서 열어주어야 한다. Security Group은 인스턴스뿐만 아니라 Virtual Private Cloud(VPC)와 같은 다른 서비스에서도 포트를 열어주기 위해 사용된다.

 

  • 탄력적 IP 주소(Elastic IPs)
더보기

동적 클라우드 컴퓨팅을 위한 고정적인 IPv4주소. Elastic IP를 지정하지 않았다면 생성한 인스턴스의 IPv4주소는 가변적이다. 즉 인스턴스를 키고 끌 때마다 다른 IP가 부여된다. 그래서 Elastic IPs는 시간이 지나도 바뀌지 않는 고정적인 IPv4주소를 부여해 외부에서 같은 주소로 접속할 수 있게끔 해준다. 또한 Route53과 같은 도메인 서비스에서 도메인의 DNS 레코드에 이 Elastic IP주소를 입력해 도메인을 통해서 접속할 수 있도록 해준다. IP가 바뀔 때마다 도메인의 IP주소를 바꿔줄 수 없기 때문에,,

 

  • Elastic Load Balancer (ELB)
더보기

탄력적 로드 밸런서(ELB)는 둘 이상의 AZ에서 EC2인스턴스나 컨테이너 등 여러 대상에 수신되는 트래픽을 자동으로 분산시키는 서비스다. 등록된 대상들의 상태를 계속 모니터링하면서 대상 중의 일부가 정지 상태나 정상적인 서비스를 할 수 없는 경우 트래픽을 자동적으로 다른 대상으로 라우팅시킨다. 로드 밸런서는 현재 총 4가지를 지원하는데 그중 세가지는 서로 다른 OSI 계층에서 작동하는 차이가 있다. 첫째로, Application Load Balancer는 OSI 7계층인 Application 수준에서 작동해 트래픽을 분산한다.  두번째로 Network Load Balancer는 OSI 4계층에서 작동하며 Transport 수준에서 작동해 트래픽을 분산한다. 마지막으로 Gateway Load Balancer는 OSI 3계층인 Network 수준에서 작동해 트래픽을 분산하고 방화벽 역할을 한다.  또다른 하나는 Classic Load Balancer인데 구세대 로드 밸런서이며 deprecated될 예정이므로 신규 서비스에는 사용하지 않도록 하자.

 

 

 

반응형