ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EC2 :: Elastic Compute Cloud
    Back-end Developer/Cloud 2021. 5. 3. 18:13

    어떤 서버를 개발 했을 때, 지속적인 요청/응답을 유지시키기 위해선, 개발한 App을 실행한 채 두어야합니다.

    근데 본인 컴퓨터를 계속 켜두고 유지하는 것은 힘들겠죠..ㅠ

    백그라운드 실행을 하더라도 실행중인 App으로 인한 성능 저하, 전깃세 문제 등등..

     

    이를 위해서 계속 켜둘 수 있는 가상 서버 공간을 제공하는 인프라가 EC2 입니다.


    Elastic Compute Cloud

    AWS의 중앙부를 이루며, 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행 가능

    사용자가 AMI(Amazon Machine Image)로 부팅하여 아마존이 "인스턴스"라 부르는 가상 머신을, 원하는 소프트웨어를 포함하여 구성할 수 있게 하는 웹 서비스를 제공

    사용 시간 비례 지불

     

     

    설명에 써 두었듯 EC2는 하나의 가상 서버이며 인스턴스라 칭합니다.

    우선은 EC2를 통해 어떻게 가상 서버를 구성하는지 알아야 할 것 같습니다.

     

    요즘은 Back-End (API)를 서버라고도 부르지만, 원랜 물리 서버를 서버라 지칭했었죠.

    물리 서버는 CPU, 메모리, 디스크, 네트워크 인터페이스 등으로 구성됩니다.

    하드웨어 영역

     

     

    EC2 Structure

     

    이러한 서버와 하드웨어는 가장 low level에서 연산 등의 작업을 수행하는데, 이러한 물리 서버를 Host 서버라 합니다.

    일반적으론 이러한 서버에 하나의 OS를 구동했습니다. 효율적인 측면이나, 성능에서 하나만 쓰는 것이 적합(?)하기 때문이죠.

    하지만, 개발을 하다보면 다양한 이유가 있겠지만, 다른 OS가 필요하기도 합니다.

    개발은 window에서 해도 배포는 linux에서 한다던지.. 물론 개발이 아니더라도 말이죠.

     

    따라서 n개의 OS를 하나의 호스트 서버에 구성하곤 하는데요. 실제로 활용하기엔 위에서 말씀드린 바와 같이 문제들로 인해 어려웠습니다.

    하지만, 기술이 발전하면서 호스트 서버의 성능이 올라가고 이에 따라, 여러 OS 구성이 가능하게 되었습니다.

    이러한 n개의 OS 구성을 위해 등장하는 것이 *Hypervisor 입니다.

     

    그림 1. Hypervisor

    Hypervisor가 모두 이와 똑같이 생긴 것은 아닙니다만, 대부분 이러한 구조를 갖습니다.

    가장 상단의 OS는 Guest, VM(Virtual Machine) 등 으로 칭합니다.

    하이퍼바이저는 각 Guest의 독립성을 보장하며, 호스트 서버의 자원을 점유하고 공유할 수 있도록 제어합니다.

     

    AWS도 이러한 하이퍼바이저를 통해 인프라를 제공합니다.

    Guest가 EC2 인스턴스이며, 각 EC2가 호스트 서버 디스크인 *Instance store를 점유하고 있습니다.

     

     

    EC2 Instance Types

    EC2는 용도에 맞는 여러가지 인스턴스 타입을 제공합니다.

    무료로 사용할 수 있는 t2.micro 또한 인스턴스 타입 중 한 가지에 속하죠.

     

    인스턴스 타입은 EC2 생성시 스펙을 지정하는 개념입니다. 타입의 구성을 자세히 살펴보면 아래와 같습니다.

    그림 2. Instance type

    • Instance family: Host 서버 사양 결정 - CPU/GPU spec, RAM 종류/크기, Instance store 유무 등
    • Instance size: Host 서버를 분리하는 정도, 자원 할당량 결정

    위 type은 p3 Host 서버를 사용하며, 서버를 4개로 분할 후 하나의 VM을 할당받아 사용합니다.

     

     

    EC2 State

    EC2는 여러가지 상태를 가집니다.

    사용자가 직접 제어할 수 있고, 각 상태 전환에 따라 변경되는 항목도 존재합니다.

      Reboot Start/Stop Terminate
    Host 서버 Host 유지 Host 변경 Host 할당 해제
    Public IP 유지 변경  
    Private IP 유지 유지  
    Elastic IP 유지 유지 연동 해제
    Instance store 보존 초기화 초기화
    Billing Stopping 부터 과금 중지 Pending 부터 과금 Shutting-down 부터 과금 중지

    실제로 EC2 인스턴스를 실행하면 Private/Public IP 두 가지가 존재합니다.

    그 중 실제로 Route53을 이용해 구매한 도메인에 연결할 IP는 Public 입니다.

    그런데 위와 같이 EC2 인스턴스를 멈추고 시작하는데 IP가 변경되면 매번 연동된 IP를 변경해야하니 상당히 피곤하겠죠.

    Elastic IP는 이러한 상황에서 활용될 수 있습니다.

     

     

    EC2 실행

    EC2 실행을 위해 우선 사용할 인스턴스를 선택합니다.

    지금 직접 해볼 수 없는 상황이라 이미지는 생략합니다. 관련한 내용은 검색하시면 많이 나옵니다. ㅎㅎ

    인스턴스 생성 과정에서 저장한 '.pem' 파일은 실제 EC2 인스턴스 서버로 접속하는데 사용합니다.

    Window는 putty를 사용해서 하시면 됩니다.

    Mac은 terminal을 키시고 '.pem' 파일을 저장한 문서로 이동해 아래의 명령어를 입력하시면 됩니다.

    ssh -i “key 이름” ec2-user@public-dns

    큰 따옴표도 동일하게 입력하셔야 합니다. key 이름은 xxx.pem과 같이 파일명 그대로 입력합니다.

    user 부분은 ec2 생성시 설정한 user명을 넣습니다.

    저는 항상 ubuntu로 이름 설정하기 때문에 ubuntu를 넣습니다.

    마지막으로 public-dns는 ec2 인스턴스가 실행되면 상태창에 뜨는 링크를 쓰시면 됩니다. region 명이 포함되어 있습니다.

     

    조금 디테일하게 쓴다면 아래와 같습니다.

    ssh -i "key.pem" ubuntu@ec2-x-xx-x-xx.ap-northeast-2.compute.amazonaws.com

     

     

     

     

    만약 EC2 인스턴스를 사용하시게 된다면, 위의 상태를 잘 확인하고, 사용 완료후엔 필요한 데이터를 로컬로 옮긴 뒤 종료시키시길 바랍니다.

    프리티어가 아닌데 실행 상태로 둔다면 엄청난 과금이....

    물론 지속적으로 서비스를 운영하고 요청/응답 동작이 필요하다면 terminate 시킬 일은 없겠죠.

     

     

     

     

     

     

     

     

     

     

    * Hypervisor: 호스트 서버에서 다수의 OS를 동시에 실행하기 위한 논리적 플랫폼(platform), VM

    * Instance store: 서버에 *DAS 형태로 붙어있는 스토리지 영역, 비용은 발생하지 않음.

    * DAS: Direct-attached storage, DAS 서버나 컴퓨터에 네트워크를 거치지 않고 직접 연결되는 저장장치

     

    참고 자료

    Wikipedia - EC2 (Korean)

    AlhmaraIT (Image)

    반응형

    'Back-end Developer > Cloud' 카테고리의 다른 글

    VPC :: Virtual Private Cloud  (0) 2021.04.09
    Cloud Computing  (0) 2021.04.07

    댓글

Designed by minchoba.