AWS DVA 항해기 - EC2 인스턴스

0

AWS-DVA

목록 보기
5/8

❓EC2(Elastic Compute Cloud)란?

AWS가 제공하는 서비스에서 가장 많이 사용됨

하나의 서비스라기보다 여러 기능을 포괄하는 개념 / 서비스 인프라

EC2 + EC2와 함께 주로 쓰이는 서비스들

  • 가상 머신을 임대(rent) => EC2 인스턴스

  • EBS 볼륨

    • 가상 드라이브에 데이터 저장 가능
  • ELB(Elastic Load Balancer)
    • 한 입구로 들어오는 트래픽을 정상 인스턴스(여러 머신)에 고르게 분배
  • 오토 스케일링 그룹(ASG)
    • 트래픽 변화에 따라 인스턴스 수를 자동 조절

EC2에서 사용 가능한 옵션

  • 운영 체제
    1. 리눅스(Linux)
    2. Window
    3. Mac OS
  • CPU
  • RAM
  • 스토리지 용량
    1. 네트워크를 통해 연결되는 스토리지(EBS & EFS)
      • EBS => 네트워크로 붙는 블록 스토리지(영구). 타입(gp3/io1…)·용량·암호화·“종료 시 삭제” 등을 설정
      • EFS=> 네트워크 파일시스템(NFS). EC2 옵션이 아니라 별도 서비스를 만들어 EC2에 마운트해 씀(다수 인스턴스 공유에 좋음)
    2. 하드웨어에 연결되는 스토리지(EC2 Instance Store) => 일시적(Stop/Terminate 시 데이터 사라짐)
  • EC2 인스턴스에 연결할 네트워크 유형

    • 네트워크 카드 속도
    • 사용할 공개 IP
    • ENI(네트워크 인터페이스) 를 몇 개 붙일지, 퍼블릭 IP 할당 여부, IPv6 등을 선택.
    • 대역폭은 인스턴스 타입에 종속(타입별 최대 네트워크 성능 표 참고 필요) 퍼블릭 IP는 필요 시 탄력 IP(EIP) 로 고정
  • EC2 인스턴스 방화벽 규칙 => 보안그룹

    • 인스턴스 단 상태저장(Stateful) 방화벽. Inbound/Outbound 규칙을 최소 권한으로 설계
  • 사용자 데이터(User Data)

    • 첫 부팅 시 자동 실행되는 초기화 스크립트/설정

    • 일반적으로 루트 권한으로 실행

    • 언제/왜 씀?

      1. 패키지 설치(nginx, node, 에이전트 등) / 소프트웨어 및 업데이트 설치
      2. 설정 파일 배포, 서비스 시작
      3. SSM/CloudWatch 에이전트 설치
      4. “기본 이미지(AMI) + User Data” 조합으로 매 배포마다 ‘새로운’ 서버를 만들고(불변), 그 서버가 부팅될 때 필요한 설정을 한 번 초기 실행한다(초기화) => 서버에 SSH로 들어가서 수동 수정하지 않고 바꿀 게 생기면 새 AMI를 빌드하거나 User Data에 버전만 바꿔 새 인스턴스를 띄우고, 옛 인스턴스는 폐기
    • 실행 시점과 횟수

      • 기본값: 최초 부팅 1회만 실행.
      • 리눅스에서는 cloud-init 설정으로 매 부팅(per-boot) 실행도 가능.

EC2 인스턴스 타입 예시

Amazon Linux에서 EC2 인스턴스 실행해보기

Free tier 레벨에서 사용 가능한 AMI 사용!

별도의 AMI를 생성해서 연결하고 싶으면 My AMIs로 연결 가능

인스턴스 타입은 CPU 수, 메모리 용량, 비용에 따라 달라짐

키페어는 인스턴스에 액세스하기 위해 SSH 유틸리티를 사용하는 경우에 필요함

보안그룹은 생성할 수도, 이미 존재하는 그룹에서 선택할 수도 있다..!

허용할 IP를 지정할수도 있다!

마지막으로 Advanced Detail에서 User Data

인스턴스가 실행될 때 최초로 1번만 실행될 스크립트 작성하면 된다

Launch instances 버튼을 클릭하고 대시보드를 보면

주어진 Public IPv4 주소로 접속해보면

접속이 잘 되는 것 확인 가능!!

❗️유의점
인스턴스를 중지했다가 다시 시작하면 공개 IPv4 주소가 바뀔수도 있다!
프라이빗 IP는 유지됨!!


EC2 인스턴스 타입

Amazon EC2 인스턴스 타입

AWS에는 네이밍 컨벤션이 존재

ex) m5.2xlarge

m => 인스턴스 클래스
5 => 인스턴스의 버전?세대?(AWS는 새로운 세대의 하드웨어를 계속 출시함)
2xlarge => 인스턴스 클래스 안에서의 사이즈(크기)

1) 범용(General purpose)

  • 패밀리 예시: t(t3/t4g), m(m6i/m7i), a(Graviton a1, 과거)
  • 특징: CPU·메모리 균형형이고 대부분의 웹/앱 서버 기본값 / 컴퓨팅, 메모리, 네트워킹 간의 균형이 잘 맞음
  • 사용 예시: Next.js/Nest API, 소규모 DB/캐시, CI 러너 등
  • 클래스 선택시 고려사항: t는 버스트형 크레딧(가벼운 평시 + 가끔 피크) / 지속 부하면 m클래스로

2) 컴퓨트 최적화(Compute optimized)

  • 패밀리 예시: c(c6i/c7i/c7g)
  • 특징: vCPU 비율↑, 고클럭. 배치/마이크로서비스에 적합
  • 사용 예시:
    • 고연산 API
    • 미디어 처리(ex: 미디어 트랜스코딩 etc)
    • 게임 서버
    • 배치 작업
    • 머신러닝(작은/중간 모델의 CPU 추론 서버)
    • 과학/금융 모델링(Monte Carlo, 선형대수 반복 계산, 일부 최적화 문제)
    • HPC(일부): 대량의 스레드/코어를 잘 쓰는 CPU 중심 코드

3) 메모리 최적화(Memory optimized)

  • 패밀리 예시: r(r6i/r7i), x(x2idn/x2iedn), High Memory u-*
  • 특징: RAM 비율↑ / 대용량 인메모리 워크로드용(디스크(SSD/HDD) 말고 메모리에서 바로 읽고 쓰는 게 핵심)
  • 사용 예시:
    • 캐시 서버 => Redis/Memcached에 수십~수백 GB 데이터를 넣어 DB를 안 두드리게 함
    • 대규모 / 실시간 분석 => 밀리초 단위로 상태(state)를 자주 읽고 써야 하는 처리
    • 인메모리 DB/분석 => 데이터를 미리 메모리에 올려 집계/검색을 매우 빠르게 함
    • 검색/임베딩 서비스 => 큰 인덱스나 임베딩 벡터를 메모리에 유지해 즉시 조회

4) 스토리지 최적화(Storage optimized)

  • 패밀리 예시: i(i3/i4i), d(d3), h(HDD 위주), im4gn/is4gen(NVMe + Graviton)
  • 특징: 로컬 NVMe 고IOPS/저지연 또는 대용량 HDD
  • 사용 예시:
    • 트랜잭션 로그
    • OLTP 시스템
    • 인메모리 데이터베이스(ex: 레디스)
    • 검색엔진(ES/Opensearch)
    • 관계형 SQL& NoSQL
    • 데이터 레이크의 캐시 계층
  • 주의: 인스턴스 스토어는 휘발성(Stop/Terminate 시 데이터 소실). 영속은 EBS에 해당됨

5) 가속 컴퓨팅(Accelerated computing)

  • GPU/전용 칩/FPGA
    • GPU: g4/g5(시각화/추론), p4/p5(대규모 딥러닝 학습)
    • 전용 AI 칩: Inf1/Inf2(추론), Trn1/Trn2(학습)
    • FPGA: f1 (특수 가속)
  • 사용 예시:
    • 딥러닝 학습/추론
    • 3D/비디오 인코딩
    • 과학 계산
profile
숲(구조)을 보는 개발자

0개의 댓글