[TIL] AWS 클라우드 (3): Elastic Compute Cloud(EC2)

hanbyul.choi·2023년 8월 2일
0

[TIL]

목록 보기
32/39

1. Billing(청구)

AWS Billing은 AWS 계정 사용량과 비용을 모니터링하고, 요금 청구 정보를 제공하는 서비스다. AWS 사용량과 비용을 모니터링하고 분석함으로써, 비즈니스에서 AWS 비용을 최적화할 수 있다.

AWS Billing은 다음과 같은 기능을 제공한다.

  1. 사용량 모니터링: AWS에서 제공하는 모든 서비스에 대한 사용량을 모니터링할 수 있다. 사용량 정보는 서비스별로 제공되며, 월간, 일간 또는 실시간 데이터를 확인할 수 있다.

  2. 비용 분석: AWS에서 제공하는 서비스에 대한 비용을 분석하고, 서비스별, 리전별, 태그별 또는 사용자별로 비용을 확인할 수 있다. 또한 예상 비용을 분석하여, 비용을 줄이는 방안을 찾을 수 있다.

  3. 청구 정보 확인: AWS 계정에 대한 요금 청구 정보를 확인할 수 있다. 청구 정보에는 사용량, 비용, 청구 일자 등이 포함된다.

  4. 예산 설정: AWS에서 제공하는 예산 설정 기능을 사용하여, 비용을 제어하고 예산 초과를 방지할 수 있다.

AWS Billing은 AWS Management Console, API 또는 CLI를 통해 사용할 수 있으며, 사용자가 원하는 방식으로 사용할 수 있다. 또한 AWS 계정 설정을 통해 알림 설정을 할 수 있어, 예산 초과나 다른 문제 발생 시 즉시 알림을 받을 수 있다.


2. EC2 기초

클라우드 서비스의 종류

  • IaaS (Infrastructure as a Service) : 하드웨어 인프라를 인터넷을 통해 제공하는 서비스

    • IaaS는 가상화된 하드웨어, 스토리지, 네트워크, 운영체제 등을 제공하며, 사용자는 이를 이용해 자신의 애플리케이션을 실행할 수 있습니다. AWS EC2, Microsoft Azure, Google Compute Engine 등이 IaaS 서비스를 제공합니다.
  • PaaS (Platform as a Service) : 애플리케이션을 개발, 실행, 관리하기 위한 플랫폼을 인터넷을 통해 제공하는 서비스

    • PaaS는 IaaS에서 제공하는 하드웨어 인프라와 미들웨어를 이용하여, 애플리케이션 개발, 배포, 운영 등에 필요한 환경을 제공합니다. 예를 들어, AWS Elastic Beanstalk, Heroku, Google App Engine 등이 PaaS 서비스를 제공합니다.
  • SaaS (Software as a Service): SaaS는 사용자에게 완전한 애플리케이션을 제공하며, 이 애플리케이션은 클라우드 제공업체의 서버에서 실행된다.

    • 사용자는 애플리케이션에 대한 제한된 제어권을 가지며, 클라우드 제공업체가 모든 인프라, 운영 체제, 백엔드 애플리케이션 및 데이터 관리를 담당합니다. SaaS는 대부분의 사용자에게 필요한 소프트웨어 서비스를 제공합니다. 예를 들어, 구글 드라이브, 마이크로소프트 오피스 365, Salesforce 등이 SaaS 서비스의 예입니다.

EC2 (Elastic Compute Cloud)

EC2는 클라우드 컴퓨팅 서비스 중 하나로, 가상 서버 인스턴스를 제공한다. EC2를 사용하면 필요한 시간만큼 가상 서버를 생성하고 사용할 수 있으며, 필요에 따라 스케일 업 또는 스케일 다운할 수 있다.

  • 이 환경은 실제로는 하드웨어 리소스를 가상화하여 사용하고 있기 때문에, 하드웨어 상에서 실행 중인 물리적인 서버와는 다르다. 따라서, 이러한 가상화된 컴퓨터 환경을 "인스턴스(instance)" 라고 부른다.

  • 각 인스턴스는 독립적으로 실행되고 관리된다. 이러한 인스턴스들은 필요에 따라 생성, 시작, 중지, 종료 등이 가능하다.

  • EC2 인스턴스는 다양한 운영 체제 (예: Linux, Windows)와 인스턴스 유형 (예: 범용, 컴퓨팅 최적화, 메모리 최적화)을 지원한다.

  • EC2는 다양한 용도로 사용될 수 있으며, 주요 사용 사례는 다음과 같다.

    • 웹 애플리케이션 호스팅
    • 데이터베이스 호스팅
    • 컴퓨팅 작업 (예: 데이터 분석, 머신 러닝)
    • 애플리케이션 테스트 및 개발
  • EC2는 유연하게 스케일링할 수 있으며, 필요에 따라 인스턴스를 추가하거나 제거하여 자원 사용량을 조절할 수 있다. 또한 AWS의 다른 서비스와 통합하여 다양한 용도로 사용할 수 있다.

EC2의 다양한 옵션들

  1. 인스턴스 유형 (Instance Types) : 인스턴스 유형은 서버에 할당되는 CPU, 메모리, 스토리지 및 네트워크 리소스와 같은 기본 성능 특성을 결정
    예를 들어, 일부 인스턴스 유형은 컴퓨팅 작업에 적합하고, 다른 유형은 메모리 집약적인 작업에 적합

  2. 운영 체제 (Operating System) : EC2 인스턴스는 다양한 운영 체제를 지원
    예를 들어, Amazon Linux, Ubuntu, Windows 등이 있다.

  3. 스토리지 옵션 (Storage Options) : EC2 인스턴스에는 인스턴스 스토어, Amazon EBS 및 Amazon S3와 같은 다양한 스토리지 옵션이 있다.

  4. 보안 그룹 (Security Groups) : 보안 그룹은 인바운드 및 아웃바운드 트래픽을 제어하는 방화벽 규칙
    각 보안 그룹은 포트 범위, 프로토콜 및 허용되는 IP 주소 범위를 정의할 수 있다.

  5. 키 페어 (Key Pair) : 키 페어는 EC2 인스턴스에 대한 SSH 액세스를 허용
    키 페어를 만들면 EC2 인스턴스를 시작할 때 키 페어를 선택할 수 있다.

  6. 탄력적 IP 주소 (Elastic IP Address) : 탄력적 IP 주소는 EC2 인스턴스에 고정 IP 주소를 할당
    이는 EC2 인스턴스를 중지하거나 시작할 때마다 IP 주소가 변경되는 것을 방지할 수 있다.

  7. 사용 가능한 영역 (Availability Zones) : EC2 인스턴스는 여러 가용 영역에서 실행될 수 있다.
    이는 장애 대응 및 고가용성을 위해 중요하다.


3. 보안 규칙을 위한 Security Group과 Ports

보안규칙

  • 여러 인스턴스에 할당 가능
  • time out → 보안규칙 이슈
  • connection refuse → ec2 내부 이슈
  • 모든 inbound는 디폴트로 막혀있다.
  • 모든 outbound는 디폴트로 열려있다.

포트

  • 22 = ssh(secure shell)로 인스턴스에 원격 접속
  • 21 = FTP 파일전송 프로토콜
  • 80 = http 웹 접속
  • 443 = https 안전한 http 접속, 현재의 스탠다드

4. SSH 연결

chmod는 파일이나 디렉토리의 권한을 변경하는 유닉스 명령어다. 파일이나 디렉토리는 소유자, 그룹, 그리고 나머지 세 개의 사용자 카테고리를 갖는다. 각 카테고리에 대해 읽기(read), 쓰기(write), 실행(execute)의 권한을 설정할 수 있다.

chmod 400

chmod 400은 파일 권한 설정 중 하나다. 이 권한을 설정하면 해당 파일에 대해 읽기 권한만 부여된다. 숫자 400은 소유자에 대한 읽기 권한을 의미한다. 다른 사용자들은 읽기 및 쓰기 권한이 없다. 이 권한은 일반적으로 중요한 정보를 포함하는 파일이나 개인 키 파일과 같은 보안 파일에 적용된다.

chmod 644 명령은 file.txt 파일의 권한을 다음과 같이 변경합니다.

  • 소유자: 읽기와 쓰기 권한
  • 그룹: 읽기 권한
  • 나머지: 읽기 권한

숫자에 첫번째 자리가 소유자, 두번째는 그룹, 세번째는 그외 나머지를 지칭한다.

0은 아무 권한이 없고, 4는 읽기, 2는 쓰기 권한, 1은 실행 권한이다.

  • 예를 들어 6이면 읽기/쓰기 권한이고 5면 읽기/실행권한, 7이면 읽기/쓰기/실행 권한이다.

5. EBS

Amazon Elastic Block Store (EBS)는 Amazon EC2 인스턴스에 연결할 수 있는 블록 수준 스토리지 볼륨이다. EBS 볼륨은 네트워크를 통해 Amazon EC2 인스턴스에 연결되므로 데이터 지속성, 스냅샷 백업 및 다른 인스턴스에서 쉽게 사용할 수 있다. EBS 볼륨은 데이터의 지속성을 보장하기 위해 AWS 내에서 복제 및 백업되므로 안정적이고 내결함성이 높은 스토리지 옵션이다.

  • 인스턴스를 terminate 한 후에도 데이터를 유지할 수 있다.

  • 특정 AZ에 한정된다.

  • 인스턴스의 usb 메모리라고 생각할 수 있다.

  • 하나의 인스턴스에서 떼어서 다른 인스턴스에 꽂을 수 있다.

  • 하나의 EBS는 하나의 인스턴스에만 연결될 수 있지만 하나의 인스턴스에는 여러개의 EBS가 연결될 수 있다.


6. EBS snapshot

EBS(Elastic Block Store) 스냅샷(Snapshot)은 EBS 볼륨의 데이터를 백업하는 데 사용되는 Amazon Web Services(AWS)의 기능이다.

스냅샷은 EBS 볼륨의 데이터를 인스턴스 내에서 복제하고, 이를 S3에 저장한다. 스냅샷은 EBS 볼륨의 모든 데이터를 포함하므로, 데이터를 백업하고 나중에 이전 상태로 복원할 수 있다.

EBS 스냅샷은 다음과 같은 몇 가지 용도로 사용될 수 있다.

  • 데이터 백업 및 복원: 스냅샷을 사용하면 EBS 볼륨의 데이터를 백업하고 나중에 이전 상태로 복원할 수 있다.

  • 볼륨 확장: 스냅샷을 사용하여 EBS 볼륨의 크기를 확장할 수 있다.
    스냅샷에서 새로운 볼륨을 생성하고, 기존 볼륨에서 새로 생성한 볼륨으로 데이터를 복사할 수 있다.

  • 데이터 마이그레이션: 스냅샷을 사용하여 EBS 볼륨의 데이터를 다른 지역으로 이동할 수 있다.

스냅샷은 필요에 따라 자동으로 스케줄링할 수 있으며, 각 스냅샷은 다른 스냅샷과 차이점만 저장된다. 따라서 이전 스냅샷에 비해 적은 양의 스토리지 공간이 필요하다. 스냅샷은 EBS 볼륨의 상태를 복원할 때 사용되며, 이전 상태로 데이터를 복원하면 해당 스냅샷을 기반으로 새로운 EBS 볼륨이 생성된다.

7. AMI 소개

  • EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함되어 있다.
  • 이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정할 수 있다.
  • AMI는 Amazon에서 제공하는 것뿐만 아니라 개발자가 직접 생성할 수도 있다.
  • 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유할 수도 있다.

EBS와 AMI의 차이

Amazon Elastic Block Store (EBS)와 Amazon Machine Image (AMI)는 Amazon Web Services (AWS)에서 사용되는 서비스다.

  • Amazon EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨이다. 이 볼륨은 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용된다. EBS는 인스턴스를 종료해도 볼륨에 저장된 데이터를 보존한다.

  • 반면, Amazon Machine Image (AMI)는 EC2 인스턴스를 시작할 때 사용되는 이미지다. AMI는 이미 설치된 운영 체제와 애플리케이션을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보를 포함한다. 이를 통해 AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있다.

  • AMI는 EBS 스냅샷을 사용하여 생성될 수 있다. EBS 스냅샷은 EBS 볼륨의 이미지다. AMI를 생성할 때 EBS 스냅샷을 사용하면 인스턴스를 시작할 때 EBS 볼륨이 생성되고, 해당 볼륨에는 이전 인스턴스와 동일한 데이터가 저장된다.

따라서 AMI는 EC2 인스턴스를 시작할 때 사용하는 이미지이며, EBS는 인스턴스에 연결되어 데이터를 저장하고 보존하는 데 사용되는 스토리지 볼륨이다. AMI를 생성하는데 EBS 스냅샷을 사용할 수 있다.

1개의 댓글

comment-user-thumbnail
2023년 8월 2일

좋은 정보 감사합니다

답글 달기