AWS

[AWS] AWS 기본 개념(1) - 컴퓨팅 서비스와 스토리지 서비스

코코무 2025. 3. 24. 17:11

AWS(Amazon Web Services)

출처: 위키백과

 

아마존이 제공하는 클라우드 서비스로, 전 세계적으로 가장 널리 사용되는 클라우드 플랫폼 중 하나이다.

IT *인프라 구축에 필요한 컴퓨팅, 스토리지, 데이터베이스, 네트워크, 보안 등 다양한 서비스를 제공한다.

*인프라: IT 분야에서 주로 정보 시스템을 운영하기 위해 필요한 기반 시설이나 자원(하드웨어, 소프트웨어, 네트워크 등 서비스를 제공하는 데 필수적인 구성 요소 포함)

 

1. 클라우드 컴퓨팅이란?

인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등의 IT 리소스를 주문형으로 제공받아 사용할 수 있는 기술이다. 사용한 만큼 비용을 지불하며, 필요에 따 빠르게 확장 또는 축소할 수 있는 유연성이 장점이다.

 

2. AWS의 주요 서비스

 

  • 컴퓨팅 서비스
    • EC2(Elastic Compute Cloud): 가상 서버 인스턴스를 제공하여 사용자가 원하는 운영 체제와 애플리케이션을 설치하고 관리할 수 있게 해준다.
    • EKS(Elastic Kubernetes Service): *Kubernetes를 이용해 컨테이너화된 애플리케이션을 관리하고 배포할 수 있는 서비스

*Kubernetes: 컨테이너화된 애플리케이션의 배포, 확장, 관리 등을 자동화하기 위한 오픈 소스 플랫폼. 여러 개의 컨테이너가 필요한 경우 Docker Compose 또는 Kubernetes를 사용하는 것이 일반적이다.

    • ECS (Amazon Elastic Container Service): 도커 컨테이너를 실행하고 관리하는 AWS의 완전 관리형 서비스
    • Lambda: 서버스 컴퓨팅 서비리스로, 서버 관리 없이 코드를 실행 가능하다.
  • 스토리지 서비스
    • S3(Simple Storage Service): 객체 기반의 클라우드 스토리지로, 데이터를 저장 및 백업하는 데 사용된다.
    • EBS(Elastic Block Store): EC2 인스턴스를 위한 블록 스토리지 서비스이다.
  • 데이터베이스 서비스
    • RDS(Relational Database Service): 관계형 데이터베이스를 쉽게 설정, 운영, 관리할 수 있는 서비스
    • DynamoDB: 완전 관리형 NoSQL 데이터베이스로, 뛰어난 확장성과 성능을 제공한다(비쌈).
  • 네트워킹 서비스
    • VPC(Virtual Private Cloud): 사용자의 클라우드 환경을 논리적으로 격리하여 개인 네트워크를 구축할 수 있게 해준다.
    • Route 53: 클라우드 도메인 이름 시스템(DNS) 서비스로, 도메인 등록 및 관리가 가능하다.
    • ELB(Elastic Load Balancing): 여러 서버에 *트래픽을 분산시켜서 성능과 가용성을 높이는 역할을 한다.
    • API Gateway: HTTP 요청을 수신해서 내부 서비스로 전달하는 역할(라우팅 - 고속도로 요금소)

*트래픽(Traffic): IT 분야에서 주로 네트워크를 통해 전송되는 데이터의 흐름, 웹사이트나 서버가 사용자로부터 받는 모든 데이터 요청과 그에 따른 응답들

 트래픽이 많다 = 사용자의 요청이 많다 → 성능 유지를 위해 로드 밸런서와 같은 기술로 트래픽을 여러 서버로 분산시킴

  • 모니터링 서비스
    • CloudWatch: AWS 리소스와 애플리케이션을 실시간으로 모니터링하고, 로그 관리 및 경고 설정을 지원한다.

3. AWS 리전(Region)과 가용 영역(Availability Zone)

  • 리전(Region): AWS가 데이터 센터를 구축한 지리적 지역을 말한다. 현재 전 세계 여러 국가에 위치하며, 각 리전은 독립적으로 운영된다.
  • 가용 영역(AZ, Availability Zone): 하나의 리전 내 물리적으로 분리된 데이터 센터로, 서로 독립적인 전원 및 네트워크를 사용하여 장애 복구 및 높은 가용성을 제공한다.

4. AWS 요금 모델

AWS는 대부분의 서비스에서 사용한 만큼만 지불하는 종량제 요금 모델을 제공한다. 주요 과금 요소는 컴퓨팅 성능, 스토리지 사용량, 데이터 전송량 등이다. 요금을 정확히 관리하기 위해 AWS Billing Dashboard를 사용 가능하며, 예산을 설정하여 비용 초과를 방지할 수도 있다.

 

5. AWS 보안 및 IAM(Identity and Access Management)

AWS에서는 보안이 매우 중요하다. IAM 서비스를 통해 사용자 접근을 제어하며, 보안 그룹, ACL(엑세스 제어 목록), VPC 등을 통해 네트워크 및 리소스 보안을 관리할 수 있다.


컴퓨팅 서비스

출처: 위키백과

1. EC2 (Elastic Compute Cloud)

AWS에서 제공하는 가상 서버 서비스로, 클라우드 환경에서 서버(인스턴스)를 쉽고 빠르게 생성하고 운영할 수 있게 한다. EC2는 물리적 서버를 직접 운영할 필요 없이, 필요할 때 즉시 가상 서버를 구축하고 확장할 수 있게 한다.

사용자는 EC2를 이용해 원하는 운영 체제를 선택하고, 애플리케이션을 설치하며, 서버 리소스를 필요에 따라 유연하게 조정할 수 있다.

 

 1) 다양한 인스턴스 유형 제공

  • 일반 목적: 다양한 애플리케이션에 적합한 균형 잡힌 자원 제공
  • 컴퓨팅 최적화: CPU 성능이 중요한 애플리케이션에 최적화
  • 메모리 최적화: 대용량 메모리를 요구하는 애플리케이션에 적합
  • 스토리지 최적화: 대용량 데이터 처리를 위한 빠른 스토리지 제공

 2) 자동 확장 기능

  • 트래픽이나 리소스 요구 변화에 따라 자동으로 인스턴스를 추가하거나 축소하여 비용 효율성을 높이고 안정적인 성능을 유지 가능하다.

 3) 유연한 요금 모델

  • 사용한 만큼만 과금하는 종량제 방식을 채택하여 비용 효율적이다.
  • 예약 인스턴스, 스팟 인스턴스 등 다양한 비용 절감 옵션을 제공한다.

 4) 높은 가용성과 안정성

  • 여러 가용 영역에 인스턴스를 분산하여 배치함으로써, 장애 발생 시에도 서비스 연속성을 유지할 수 있다.

 5) 보안과 접근 제어

  • IAM을 통해 인스턴스 접근 권한을 세부적으로 관리할 수 있다.

 6) EC2 사용 사례

  • 웹사이트 및 앱 애플리케이션 호스팅
  • 데이터베이스 서버 운영
  • 빅데이터 분석 및 처리
  • 소프트웨어 개발 및 테스트 환경 구축

 

 

2. EKS(Elastic Kubernetes Service)

AWS에서 제공하는 완전 관리형 Kubernetes 서비스로, 사용자가 컨테이너화된 애플리케이션을 손쉽게 배포, 관리, 확장할 수 있도록 지원한다. EKS를 사용하면 복잡한 Kubernetes 클러스터의 운영 작업을 AWS에 맡기고, 애플리케이션 개발 및 운영에만 집중할 수 있다.

 

 1) 완전 관리형 Kubernetes 서비스

  • Kubernetes 클러스터의 구성, 관리, 업그레이드 및 유지보수를 AWS가 담당하므로, 사용자는 컨테이너 애플리케이션의 배포 및 관리에만 집중할 수 있다.

 2) 높은 가용성과 안정성

  • 클러스터 관리 및 컨트롤 플레인을 AWS가 고가용성으로 운영하여, 애플리케이션의 중단 없는 서비스를 보장한다.

 3) 자동 확장 기능

  • 클러스터 내의 노드 및 파드를 자동으로 확장하거나 축소하여 트래픽 및 리소스 사용량에 유연하게 대응할 수 있도록 지원한다.

4) 보안 및 컴플라이언스

  • AWS IAM을 활용한 세부적인 접근 제어, VPC 내 클러스터 운영을 통한 네트워크 격리 등 강력한 보안 기능을 제공한다.

 5) AWS 서비스와의 손쉬운 통합

  • ECR(Elastic Container Registry), ELB(Elastic Load Balancing), IAM(Identity and Access Management) 등 다양한 AWS 서비스와 쉽게 통합하여 효율적으로 운영할 수 있다.

 6) 광범위한 Kubernetes 생태계 지원

  • 오픈 소스 Kubernetes와 호환성이 높아, 기존의 Kubernetes 도구 및 플러그인을 그대로 사용할 수 있다.

 7) 효율적인 비용 관리

  • 사용한 리소스에 대해서만 비용을 지불하며, 스팟 인스턴스와 같은 비용 절감 옵션을 통해 효율적으로 운영할 수 있다.

 8) EKS 사용 사례

  • 마이크로서비스 기반의 애플리케이션 구축 및 관리
  • CI/CD 파이프라인의 통합 및 자동화
  • 데이터 처리 및 머신러닝 애플리케이션 운영
  • 기업용 애플리케이션의 안정적인 컨테이너 관리

 

 

 

3. ECS (Amazon Elastic Container Service)

AWS에서 제공하는 완전 관리형 컨테이너 오케스트레이션 서비스로, 사용자가 도커(Docker) 컨테이너를 쉽게 배포, 관리, 확장할 수 있도록 지원한다. ECS를 활용하면 컨테이너 기반 애플리케이션의 운영 복잡성을 줄이고, 배포 속도를 높일 수 있다.

 

 1) 완전 관리형 서비스

  • 컨테이너의 배포, 운영, 확장 및 관리가 간단하며, AWS가 컨테이너 인프라의 운영 및 유지보수를 담당하여 사용자는 애플리케이션 개발에만 집중할 수 있다.

2) 높은 확장성 및 성능

  • 애플리케이션 요구사항에 따라 빠르게 컨테이너를 확장하거나 축소할 수 있으며, 다양한 규모의 애플리케이션에 대해 신속하고 안정적인 성능을 제공한다.

 3) AWS Fargate 지원

  • 서버 관리가 필요 없는 AWS Fargate를 이용하여 컨테이너를 실행할 수 있으며, 인프라 운영 부담을 더욱 줄일 수 있다.

 4) AWS 서비스와의 긴밀한 통합

  • ELB(Elastic Load Balancing), CloudWatch, IAM(Identity and Access Management), Auto Scaling 등 다양한 AWS 서비스와의 손쉬운 통합을 통해 애플리케이션 운영 효율성을 높인다.

 5) 다양한 배포 옵션

  • EC2 인스턴스 기반의 ECS와 서버리스 컨테이너 실행 환경인 Fargate를 제공하여 사용자의 요구에 맞는 유연한 선택이 가능하다.

 6) 강력한 보안 기능

  • AWS IAM을 통한 세부적인 권한 제어, 보안 그룹, VPC 기반 네트워크 격리 등 다양한 보안 기능을 제공하여 안전한 컨테이너 환경을 구축할 수 있다.

 7) 비용 효율적인 운영

  • 사용량 기반의 과금 모델을 채택하여 비용을 효율적으로 관리하고 최적화할 수 있다.

 8) ECS 사용 사례

  • 마이크로서비스 아키텍처의 구축 및 관리
  • 웹 및 모바일 애플리케이션의 신속한 배포
  • 데이터 처리 및 분석 워크로드 실행
  • CI/CD 프로세스의 간소화 및 자동화

 

 

 

 

 

 

출처: 위키백과

4. Lamdba

서버리스 컴퓨팅 서비스로, 사용자가 서버를 관리할 필요 없이 코드를 실행할 수 있는 환경을 제공한다. Lambda는 특정 이벤트가 발생할 때 자동으로 코드를 실행하며, 유지보수 및 인프라 관리 부담을 크게 줄여준다.

 

 1) 서버리스 컴퓨팅 환경

  • 서버 구축, 유지 관리, 확장과 같은 관리 작업이 필요 없으며, 개발자는 코드 작성에만 집중할 수 있다.

 2) 이벤트 기반 코드 실행

  • 특정 이벤트(예: 파일 업로드, 데이터 변경, HTTP 요청 등)에 반응하여 자동으로 코드를 실행한다.

 3) 자동 확장 및 고가용성

  • 요청량 증가에 따라 자동으로 확장되며, AWS가 모든 리소스 확장 및 장애 복구를 관리한다.

 4) 종량제 과금 방식

  • 코드가 실행된 시간과 메모리 사용량에 따라 비요이 청구되어 매우 비용 효율적이다.

 5) 다양한 프로그래밍 언어 지원

  • Node.js, Python, Java, C#, Go, Ruby 등 다양한 언어를 지원하여 사용자가 익숙한 개발 환경에서 작업할 수 있다.

 6) 손쉬운 연동 및 통합

  • Amazon S3, DynamoDB, API Gateway, CloudWatch 등 다양한 AWS 서비스와 쉽게 연동하여 활용할 수 있다.

 7) Lambda 사용 사례

  • 웹 및 모바일 애플리케이션의 백엔드 구성
  • 데이터 처리 및 ETL 작업
  • 실시간 파일 처리 및 이미지 변환
  • 자동화된 업무 프로세스 구현

 

AWS 사이트에서 Lambda를 검색하면 람다 페이지가 로딩된다.

함수를 생성한(함수 이름 및 런타임 지정) 다음, 간단한 테스트 용도로 코드를 작성하고 Deploy 한다.

지정한 런타임에 맞는 코드 소스를 작성할 수 있는 툴이 나타나는 것을 확인할 수 있다.


스토리지 서비스

출처: 위키피디아

 

1. S3(Simple Storage Service)

클라우드 기반의 객체 스토리지 서비스로, 데이터 저장 및 관리에 탁월한 확장성과 내구성을 제공한다. 사용자는 인터넷을 통해 언제 어디서나 데이터를 안전하게 저장하고 검색할 수 있다.

 

 1) 객체 기반 스토리지

  • 데이터를 객체 형태로 저장하며, 객체는 데이터 자체와 메타데이터, 고유 식별자를 포함한다.

 2) 높은 내구성 및 안정성

  • 데이터를 여러 시설에 분산하여 저장하고 복제하여, 높은 내구성을 제공한다.

 3) 무제한 확장성

  • 저장할 수 있는 데이터 양에 제한이 없으며, 저장 용량과 객체 수는 사용자의 요구에 따라 유연하게 확장된다.

 4) 유연한 스토리지 클래스

  • 데이터 접근 빈도 및 사용 목적에 따라 다양한 스토리지 클래스(표준, 지능형 티어링, 표준-IA, 원존- IA, Glacier 등)를 선택하여 비용 효율성을 높일 수 있다.

 5) 종량제 과금 모델

  • 사용한 저장 용량, 요청 횟수, 데이터 전송량 등에 따라 비용을 지불하는 방식으로 매우 경제적이다.

 6) 강력한 보안 기능

  • 객체 레벨에서 세부적인 접근 제어 및 암호화(정적 암호화 및 전송 중 암호화)를 지원하며, AWS IAM과 연계하여 보안을 더욱 강화할 수 있다.

 7) 다양한 서비스와의 연동

  • AWS Lambda, EC2, CloudFront 등 다양한 AWS와 쉽게 통합 및 연동이 가능하여 다양한 사용 사례에 적합하다.

비슷한 것으로 MinIO가 있다. 둘 다 그냥 저장소(오브젝트 스토리지)라고 생각하면 쉽다. 그러나 S3는 클라우드 인프라용이고 MinIO는 S3의 클론이다.

한편, Google Drive는 파일 스토리지로, 오브젝트 스토리지와는 데이터 저장 방식과 접근 방식이 상이하다.

 

2. EBS(Elastic Block Store)

AWS EC2 인스턴스를 위한 지속적이고 안정적인 블록 수준의 스토리지 서비스이다. EBS는 EC2 인스턴스에 연결하여 파일 시스템을 생성하거나 데이터베이스와 같은 애플리케이션의 데이터를 저장하는 데 활용된다.

 

1) 블록 수준 스토리지

  • 데이터를 블록 단위로 저장하며, EC2 인스턴스에 직접 연결하여 마치 로컬 하드 디스크처럼 사용할 수 있다.

 2) 높은 성능 및 저지연성

  • SSD 기반의 프로비저닝된 IOPS(입출력 성능) 볼륨을 제공하여 데이터베이스 및 고성능 애플리케이션에서 빠른 응답 속도와 안정적인 성능을 보장한다.

 3) 데이터 내구성 및 가용성

  • 볼륨을 여러 가용 영역(AZ)에 자동으로 복제하여 데이터 내구성을 보장하며, 장애 시 빠른 복구와 지속적인 데이터 가용성을 제공한다.

 4) 유연한 볼륨 관리

  • 필요에 따라 볼륨 크기와 성능을 즉시 조정할 수 있으며, 볼륨의 스냅샷 기능을 통해 데이터를 쉽게 백업하고 복구할 수 있다.

 5) 스냅샷 기능

  • EBS 볼륨 스냅샷을 Amazon S3에 저장하여 데이터 백업, 마이그레이션 및 재해 복구를 간단히 수행할 수 있다.

 6) 종량제 과금 모델

  • 사용한 저장 용량과 성능(IOPS)에 따라 과금되며, 비용 효율적인 관리가 가능하다.

 7) 보안 및 암호화

  • EBS 볼륨 데이터를 암호화하여 민감한 데이터를 보호할 수 있으며, AWS KMS(Key Management Service)를 이용한 키 관리가 가능하다.