IT/AWS

AWS Computing 종류

Terriermon 2021. 1. 18. 14:48

AWS의 IaaS(Infrastructure as a Service) 중 가장 많이 사용하는 것 중 하나인 EC2가 속해있는 AWS Computing의 대표적인 것들에 대한 간단한 정리 글이다.

EC2

Elastic Compute Cloud

클라우드에서 컴퓨팅 파워의 규모를 자유자재로 변경할 수 있는 웹 서비스

  • S3로 클라우드에서 스토리지 사용
  • 컴퓨팅 수행
    • 간단한 웹 서비스 인터페이스를 통해 간편하게 필요 용량 구성
    • 리소스 포괄적 제어권 제공
    • 인프라 실행
    • 새로운 서버 인스턴스 획득/부팅 > 시간 단축
    • 신속하게 용량 확장/축소 (:exclamation: 탄력적)
    • 실제 사용한 만큼만 요금 지불

 

Auto Scaling

쉽고 안전하게 여러 AWS 리소스의 규모를 조정

:point_right: 인프라 비용 감소, 애플리케이션 성능 최적화

  • 리소스 모음 조정 > 규모 조정 경험 간소화
  • 리소스 규모 자동 조정

✔ POINT

  • 빠른 규모 조정
    • 애플리케이션을 지원하는 확장 가능한 모든 리소스에 대해 통홥된 규모 조정 환경 제공
    • 직관적인 단일 인터페이스
    • 확장 가능한 모든 리소스의 평균 사용량 > 리소스 그룹의 목표 사용량 수준 신속하게 정의
  • 똑똑한 규모 조정 의사 결정
    • 서로 다른 리소스 그룹이 수요 변화 대응에 자동화
      • 이해하기 쉬운 규모 조정 전략 > 가용성, 비용, 최적화
    • 모든 규모 조정 정책 자동 생성/목표 설정
  • 자동 성능 유지
    • 앱의 기본 리소스 모니터링 > 원하는 성능 수준 작동 확인
    • 수요 급증 시 리소스 용량을 자동으로 늘림
  • 비용 예측 및 초과 지출 방지
    • 사용률과 비용 효율성 최적화
    • 필요한 리소스에 대해서만 비용 지불

 

사용
  • 확장 가능한 리소스 사용

  • 변동이 심한 애플리케이션 보유

  • CloudFormation 스택에 따라 애플리케이션 선택

규모 조정
  • EC2 Auto Scaling
    • 애플리케이션의 로드를 처리하는 정확한 수의 EC2 인스턴스 유지
    • 인스턴스가 비정상 상태일 때 감지하여 종료
    • 내결함성, 가용성, 비용 관리 개선
  • Application Auto Scaling API
    • 규모 조정 정책 정의
    • AWS 리소스 규모 자동 조정, 일회성 반복 규모 조정 작업 일정 예약
    • ECS, EC2 스팟 플릿, EMR 클러스터, DynamoDB 등등

Predictive Scaling

트래픽 패턴 기록 검토, 미래 예측하여 적절한 시간에 EC2 인스턴스 수 변경 예약

  • 기계학습 모델 사용
규모 조정 계획

여러 AWS 리소스에 대한 일련의 규모 조정 지침

  • EC2 리소스 선택
  • 추적할 리소스 사용 지표 & 추적할 값 설정
  • 입력 트래픽 흐름을 나타내는 CloudWatch 지표 선택

Elastic Beanstalk

개발자가 손쉽게 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리

개발자가 애플리케이션을 업로드하면 자동으로 용량 프로비저닝, 부하 분산, Auto-Scaling, 애플리케이션 상태 모니터링 등 배포 세부 정보 처리

  • 여러 개발 스택과 프로그래밍 언어 지원, 확장 가능

이미지를 통해 배포에 초점

✔ POINT

  • 관리 플랫폼

  • 세부 정보 자동 처리 > 애플리케이션 버전 실행 환경

  • 배포 가능한 코드 업로드 > 나머지 처리

  • 컨테이너, Paas는 프로그래밍 부담 ⬇, but 개발자가 유연성과 제어력을 활발히 발휘하기 어려움

제어
  • 운영 체제 선택
  • EC2 인스턴스 선택 (온디맨드, 예약, 스팟)
  • 사용 가능한 여러 데이터베이스 및 스토리지 선택
  • HTTPS 프로토콜 >보안 강화
  • 서버 설정(JVM 등) 조정, 환경 변수 전달
  • 메모리 캐시 서비스와 같은 다른 애플리케이션 구성 요소 EC2 나란히 실행
저장 (to S3)
  • 애플리케이션 파일
  • (선택) 서버 로그 파일
  • 이미지(애플리케이션 데이터)

ECS

:cloud: Clastic Container Service

컨테이너를 실행하는 고도로 안전하고, 안정적이고, 확장 가능한 방식

완전 관리형 컨테이너 오케스트레이션 서비스

Docker 컨테이너를 지원하는 확장성과 성능이 뛰어난 컨테이너 관리 서비스

  • EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행

Docker에 맞춰 이미지 조정

성능
  • 자체 클러스터 관리 인프라 설치, 운영, 확장 :x:
  • 간단한 API 호출  > 컨테이너가 활성화된 애플리케이션 실행/중지
  • 여러 기능 액세스 :o:
  • 리소스 필요 사항과 가용성 요구 사항에 따라 클러스터 전체 컨테이너를 배치할 일정 수립 :o:
이유
  • 간편하게 컨테이너를 애플리케이션의 빌딩 블록으로 사용
  • Docker컨테이너 사용 > 장기 실행 앱, 서비스 및 배치 프로세스 예약
  • 가용성 유지 관리
  • 애플리케이션 용량 요구 사항에 따라 컨테이너 규모 확장/축소
  • DBS, DLB, VPC, IAM 등 기능 통합

Lambda

백엔드 서비스, 서버를 프로비저닝하거나 관리할 필요 없이 코드 실행

코드 업로드하면 Lambda에서 높은 가용성으로 코드 실행 및 확장에 필요한 것 처리

서버리스 컴퓨팅

서버를 고려하지 않고 애플리케이션과 서비스 구축

  • 모든 서버 관리를 AWS에서 수행
  • 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있도록 지원 (Lambda)
사용
  • S3 버킷 변경, DynamoDB 테이블 업데이트, 애플리케이션이나 디바이스에서 생성한 사용자 지정 이벤트에 대한 응답으로 손쉽게 코드 실행

  • 자체 인스턴스를 프로비저닝 :x:

  • 용량 프로비저닝, 서버 상태 모니터링, 기본 컴퓨팅 리소스에 보안 패치 적용, 코드 배포, 웹 서비스 프런트엔드 실행, 코드 모니터링과 로깅

    :point_right: 모든 운영 및 관리 작업 수행

  • 코드 확장 용이, 고가용성, 사용자가 별도의 작업:x:

✔ POINT

  • 인프라 액세스 :x:
  • 코드 분리
    • 자체 리소스와 파일 시스템 보기 실행
    • 인프라와 실행 수준에서 보안과 분리 제공
  • 코드 보호
    • S3에 코드 저장, 저장된 데이터 암호화
    • 코드를 사용하는 동안만 추가 무결성 검사 수행

Lambda 함수

  • Lambda에서 실행하는 코드는 'Lambda 함수'로 업로드
  • 함수에는 이름, 설명, 진입점, 리소스 요구 사항 등 연관된 구성 정보 포함
  • 코드 = '상태 비저장' 스타일 :point_right: 기본 컴퓨팅 인프라에 대한 선호도가 없다고 가정
    • :grey_question: 상태 비저장
      • AWS Lambda에서 필요한 만큼 함수 사본을 빠르게 시작
      • 수신 이벤트 비율에 따라 조정
      • 코드에서 S3 등 다른 웹 서비스 호출하면 상태 저장 데이터에 엑세스
  • 아티팩트 요청 수민 기간 이상 확장 :x:
  • S3, DynamoDB, 인터넷 사용 스토리지 서비스에 지속 상태 저장
  • 라이브러리 포함 :o:
  • 인스턴스 재사용 :o:
✔ POINT
  • 가용성 :+1:

    • 복제 및 중복성 사용
  • 스레드와 프로세스 사용 :o:

  • 제한 사항

    • 인바운드 네트워크 연결 차단 > 아웃바운드 연결 전용 TCP/IP 및 UDP/IP 소켓만 지원
    • 디버깅 시스템 호출 차단
    • TCP 포트 25트래픽 차단
  • Lambda 콘솔의 코드 편집기를 사용해 Node.js 또는 Python을 사용하여 코드 작성 및 테스트 가능

  • 환경 변수 지원 :o:

    • 민감한 정보는 암호문으로 저장하는 것이 좋음 (Key Management Service 사용)
  • 콘솔의 대시보드 사용

  • 함수 간 코드 공유 가능 :point_right: Lambda Layer

  • CloudWatch를 통해 모니터링

  • 자동 확장

  • 함수에 사용할 메모리 양 선택 :point_right: 컴퓨팅 리소스 자동 할당

  • 버전 관리 :o:

이벤트 처리

이벤트 소스

Lambda 함수를 실행하도록 트리거하는 이벤트를 생성하는 AWS 서비스나 앱

  • Lambda에 이벤트를 게시하지 않는 다른 서비스에서 리소스 폴링 :o:
  • Lambda 함수에 이벤트 입력 파라미터로 전달
    • 이벤트가 배치로 수신되는 이벤트 소스
      • 요청한 배치 크기에 따라 이벤트 파라미터가 단일 호출에 여러 이벤트 포함

서버리스 애플리케이션

이벤트에 의해 트리거되는 함수로 구성

  • S3로 객체 업로드, SNS 알림 또는 API 작업과 같은 이벤트에 의해 트리거되는 하나 이상의 함수로 구성
  • 독립적으로 함수 실행, DynamoDB 테이블 또는 S3 버킷과 같이 다른 리소스 활용 가능
  • Serverless Application Model (SAM)을 사용해 배포/관리
  • 배포 자동화
    • CodePipeline
    • CodeDeploy

프로비저닝된 동시성

서버리스 애플리케이션 성능을 강력하게 제어, 극도의 준비 상태

  • 대기 시간에 민감한 애플리케이션 구축에 좋음

Lambda용 EFS

온디맨드로 확장할 수 있는 탄력적인 완전관리형 NFS 시스템을 사용하여 대요량의 데이터를 읽고, 쓰고, 유지 가능

:point_right: 관리 할 필요 :x:

  • 개발자는 처리할 데이터를 임시 스토리지로 다운로드하기 위한 코드 작성 :x;

  • VPC의 서브넷과 연결

Lambda@Edge

서버를 프로비저닝하거나 관리하지 않고 글로벌 AWS 엣지 로케이션에서 코드 실행 :o:

가장 짧은 네트워크 지연 시간으로 최종 사용자에게 응답

  • 최종 사용자가 전 세계에 분산되어 있고 지연 시간에 민감한 사용 사례에 최적화
  • CloudFront 엣지에서 제공 필요

'IT > AWS' 카테고리의 다른 글

Serverless with AWS Lambda (1)  (0) 2021.01.26
AWS Python 연결 - Boto3  (1) 2021.01.25
AWS Storage 종류  (0) 2021.01.20
AWS Network 종류  (0) 2021.01.20
Landing Zone  (0) 2021.01.19