Skip to content

Latest commit

 

History

History
250 lines (204 loc) · 9.47 KB

AWS_Technical_Essentials.md

File metadata and controls

250 lines (204 loc) · 9.47 KB

AWS_Technical_Essentials

AWS Technical Essentials

AWS의 기본적인 서비스에 대한 정리입니다.

컴퓨팅

  • AWS에서는 Caas (Compute as a Service) wprhd
  • 가상 머신, 컨테이너 서비스, 서버리스 등 세 가지 유형의 컴퓨팅 옵션 제공

EC2

  • AWS에서 안전하고, 크기를 조정할 수 있는 컴퓨팅 용량을 제공
  • 가상 서버를 프로비저닝할 수 있음

인스턴스 유형

  1. 범용 인스턴스
    • 컴퓨팅, 메모리 및 네트워킹 리소스를 균형있게 제공
  2. 컴퓨팅 최적화
    • 고성능 프로세서를 활용하여 바인딩된 애플리케이션에 적합함
  3. 메모리 최적화
    • 대규모 데이터 집합을 처리하는 워크로드에 고속 성능을 제공
    • 고성능 데이터베이스, 스케일 분산 인메모리 캐시, 실시간 빅데이터 분석 등 많은 메모리를 사용하는 애플리케이션에 사용

요금

  1. 예약 인스턴스
    • 약정 및 안정적 상태의 사용량
    • 온디맨드 요금 대비 할인
    • 1년 또는 3년
  2. Savings Plans
    • 예약 인스턴스에서 더 높은 유연성 (Fargate, Lambda 사용량에 적용됨)
    • 1년 또는 3년
  3. 스팟 인스턴스
    • 내결함성, 유연성, 무상태 워크로드
    • AWS 용량을 필요할 때 가져다 쓸 수 있다.
    • 온디맨드 요금 대비 최대 90% 할인
    • AWS가 필요할 때 언제든지 가져감 (2분 Notice)
  4. 온디맨드 인스턴스
    • 들쭉날쭉 워크로드 또는 일시적 필요
    • 약정없이 시간 단위로 컴퓨팅 용량을 구입

컨테이너 서비스

  1. Amazon ECS (Elastic Container Service)
    • 컨테이너식 애프리케이션 실행 및 조정
    • API 호출을 통한 Docker 지원 애플리케이션 제어
  2. Amazon EKS (Elastic Kubernetes Service)
    • Kubernetes 애플리케이션 실행 및 크기 조정
    • 패치, 노드 프로비저닝 및 업데이트 자동화

서버리스

  • EC2 인스턴스를 관리할 필요 없는 완전 관리형 서비스
  • 고가용성 및 내결함성 기본 제공
  1. AWS Lambda: 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행 (인스턴스와 컨테이너를 관리하지 않아도 됨)
  2. AWS Fargate: 컨테이너에 사용되는 서버리스 컴퓨팅 엔진 (ECS, EKS 지원)

네트워크

VPC

가상 사설 네트워크. 격리의 단위. VPC가 다르면 접근할 수 없다.
가용 영역을 포함해서 만들어진다. 하나의 가용 영역이 장애가 났을 때 문제가 생기지 않도록

CIDR 표기법

VPC 안에서 어떻게 IP를 사용할 것인가를 결정

  • 192.168.1.0/24
    앞에 3개는 고정하고(24/8=3) 맨 뒤만 변경해서 2^8 만큼 사용하겠다.
  • 10.0.0.0/16
    앞에 2개는 고정하고(16/8=2) 2 개만 변경해서 2^8 * 2^8 만큼 사용하겠다.

서브넷

  • VPC 안에 있는 IP를 나눈다.
  • 분류: 퍼블릭 서브넷 + 프라이빗 서브넷

게이트 웨이

  • 인터넷 게이트웨이 (인바운드/아웃바운드)
    VPC당 한개 만들 수 있음. 퍼블릭 서브넷이 인터넷과 통신하기 위한 수단
  • NAT 게이트웨이 (아웃바운드 전용)
    프라이빗 서브넷 > 퍼블릭 서브넷 > NAT 게이트웨이 > 인터넷 게이트웨이

연결

  • VPN 연결
    기업 데이터 센터와 VPC를 연결한다. 속도가 느릴 수 있다.
  • Direct Connect (DX)
    기업 데이터 센터 <> 고객 라우터 <> AWS DX 라우터 <> VPC
    인터넷으로 나가지 않음. 속도가 빠름

보안

  • NACL (Network Access Control List)
    네트워크 가상 방화벽. 인바운드/아웃바운드를 설정할 수 있음
    인터넷 게이트웨이 > ACL > 퍼블릭 서브넷

  • 보안그룹
    상태 저장. 인바운드만 체크(모두 거부) / 아웃 바운드 (모두 허용)

보안 모범 사례

  1. 다중 가용 영역 사용
  2. NACL 및 보안 그룹 사용
  3. IAM 정책을 사용하여 액세스 제어
  4. 흐름 로그를 사용하여 VPC 트래픽 캡쳐

스토리지

블록 스토리지

  • 인스턴스 스토어
    EC2에 포함된 스토리지
    휘발성이 있다. 빠르다.
    모든 인스턴스에 있지는 않다.
  • EBS
    EC2와 연결된 스토리지
    비휘발성. 주기적으로 스냅샷. 무료임.
    SSD(빠르다)와 HDD로 나누어져 있음

파일 스토리지

온프레미스 파일을 가져와서 다중의 인스턴스에 제공한다. (가용 영역이 달라도 가능하다)
리전 서비스: VPC 외부에서 만들어지는 서비스

객체 스토리지

데이터 + 메타데이터 + 키를 묶어서 객체로 저장한다.

Amazon S3 (객체 + 키 + 버킷 + 리전)

  • 객체 한번 저장하고, 바뀌지 않는 정적인 데이터를 주로 저장함
  • 버킷 AWS에서 글로벌하게 유니크해야함. > URL이 생성됨. 3개의 가용영역에 저장됨 (99.999% 가용성)

보안 정책

  • IAM 정책: 사용자, 그룹 및 역할에 연결
  • 버킷 정책: 버킷을 만들고, 파일을 저장한다. 그리고 정책을 적용
  • S3 액세스 제어 목록: 하나의 파일에 일일히 버킷의 사용자 등을 작성함. 과거에 많이 사용

스토리지 클래스

활성데이터 <-> 보관데이터 (비교적 쌈. 검색하는데 시간이 오래 걸림.)

  1. Amazon S3 Standard: 활성 데이터
  2. Amazon S3 Standard-Infrequent Access: 비활성 데이터
  3. Amazon S3 One-Zone-Infrequent Access: 하나의 가용영역에 저장함 (다시 데이터를 만들어낼 수 있는 경우)
  4. S3 Glacier: 보관하는 데이터 (가장 싸다)

S3 Intelligent-Tiering: 액세스 패턴에 따라 객체를 자동으로 이동한다.

버전 관리 기능

  • 새 버전의 객체 생성
  • 버킷 수준에서 활성화
  • 기본적으로는 사용 중지 상태
  • 검색 가능. 복원 가능.

데이터베이스

원래의 DB를 사용할려면 EC2에서 DBMS 소프트웨어를 사용할 수도 있다. AWS에서는 따로 DB를 만들어서 제공한다.

장점

  1. 목적에 맞게 사용하기 좋음
  2. 완전 관리형 (고객이 신경써야할 부분이 적다)
  3. 보안 및 고가용성

유형

  1. 관계형 DB
  • Aurora: AWS에서 만든 관계형 DB
  • RDS: 6개엔진 지원 (Oracle, MS SQL, My SQL, ...)
  • Redshift: AWS에서 만든 DW
  1. key-value DB: 빠른 읽기/쓰기 (DynamoDB)
  2. 인 메모리 DB: 세션 정보 또는 캐싱 역할 (ElastiCache)
  3. Document DB: Mongo DB와 호환성
  4. 그래프 DB: 연결에 관련된 데이터 저장 (Neptune)
  5. 시계열 DB (Timestream)

Amazon RDS

관계형 DB의 장점

  1. SQL
  2. 중복 감소
  3. 친숙성: 70년대부터 사용
  4. 정확성

AWS에서 제공하는 관계형 데이터베이스

이점

  • AWS 클라우드에서 운영 및 크기 조정
  • 시간이 많이드는 관리 작업 자동화
  • 데이터를 안전하게 저장 및 전송

DB 인스턴스

DB 이미지를 통해서 다량의 인스턴스를 만들 수 있다.

DB 인스턴스 클래스

  • 스탠다드
  • 메모리 최적화 (메모리를 많이 사용하는 App)
  • 버스트 가능 성능 (DB 자원 소모가 많을 때 버스트 기능을 지원한다)

DB 네트워크 보안

  • RDS를 관리하는 사람별로 IAM 사용자 생성
  • AWS 루트 계정을 통해서 RDS 관리하지 않기
  • 최소 권한 부여
  • RDS 암호화 사용
  • 프라이빗 서브넷 내에 DB 인스턴스 생성

DB 이중화

  • Master와 Stand-by 인스턴스가 2개의 가용영역에 생성되며, 동기화가 지속적으로 진행된다.
  • 장애가 발생하면 Stand-by로 엔드포인트가 넘어간다.
  • Master만 사용된다. 2개가 모두 사용되지 않는다.

Amazon DynamoDB

  • AWS에서 만든 완전관리형 No SQL 서비스 (key-value)
  • 확장성이 우수함
  • 저장 중 암호화를 제공

모니터링, 로드 밸런싱 및 크기 조정

Amazon CloudWatch

  • AWS/온프레미스 인프라/리소스를 실시간 모니터링
  • 단일 위치에서 모든 지표 액세스
  • Alarm: 경보 대응 자동화 (ex. CPU 80%가 5분 간 지속되면 경보 및 서버대수를 늘린다.)
  • Logs: 로그를 모두 확인할 수 있다.
  • Dashboard: CloudWatch에서 수집된 정보를 그래픽으로 확인 가능

모니터링의 이점

  1. 운영 문제에 선제적 대응
  2. 성능 및 안정성 개선
  3. 보안 위협 및 이벤트 인지
  4. 데이터에 기반한 의사결정
  5. 비용 효율적 솔루션 생성

Elastic Load Balancing (ELB)

인터넷에서 오는 트래픽을 EC2에 차례로 보낸다.

이점

  • 고가용성 및 탄력성 (EC2의 상태를 지속적으로 확인하기 때문)
  • 보안 (HTTPS > 복호화 TES)
  • 강력한 모니터링 및 가시성
  • 통합 및 글로벌 접근성

유형

  1. Application Load Balancer: HTTP/HTTPS
  2. Network Load Balancer: TCP/UDP
  3. Gateway Load Balancer
  4. Classic Load Balancer: EC2-classic. 요즘은 사용하지 않음

크기 조정

  • 내결함성 향상
  • 애플리케이션 가용성 향상
  • 낮은 비용

수직 크기 조정: 크기 또는 유형 확장/축소
수평 크기 조정: 인스턴스 추가/종료

Auto Scaling

  • 최소, 최대, 원하는 용량을 설정할 수 있음
  • 자동 크기 조정: 수요에 따라 자동으로 축소 및 확장
  • 예약 크기 조정
  • 플릿 관리: 비정상 EC2 인스턴스 자동 대체
  • 다양한 구매 옵션: 인스턴스 유형 및 가용 영역 포함
  • EC2에 포함: EC2와 함께 제공
  • 예측 크기 조정: ML 학습을 통해 최적의 EC2 인스턴스 수 예약 가능