2018년 2월 10일 토요일

AWS 주요 개념

1. 리전 / 가용영역(AZ) / 에지 로케이션
  - 리전 : AWS의 모든 서비스가 위치하고 있는 물리적인 장소
  - 가용영역(AZ) : 데이터 센터 개념, 한 리전 내 물리적으로 구분되어 있음
  - 에지 로케이션 : CDN 서비스인 CloudFront를 위한 캐시 서버(콘텐츠의 빠른 접속을 위해 전세계 주요 도시에 캐시 서버를 구축함)

2. EC2 / EBS / AMI
  - EC2 : 인터넷에 연결된 가상 서버를 제공(AWS에서 가장 기본적이며 널리 쓰이는 인프라)
  - EC2 인스턴스 : EC2에서 생성한 가상 서버를 인스턴스라 함
    ( 범용 M / 컴퓨팅 최적화 C / GPU 인스턴스 G / 메모리 최적화 M2, CR1 / 스토리지 최적화 H, I / 마이크로 인스턴스(가장 싸고, 낮은 성능의 인스턴스)
  - EC2 구매 옵션 : 온디맨드 / 스팟(경매) / 예약(1~3년 단위)
  - EBS : EC2 인스턴스에 장착하여 사용할 수 있는 가상 저장 장치
    ~ 볼륨 / 이미지 / 스냅샷(EBS 볼륨의 특정 시점에 대한 파일) / IOPS(초당 mbyte 처리속도)
    ~ EC2에서 마운트 가능
  - AMI : EC2 인스턴스를 생성하기 위한 기본 파일 (EBS 스냅샷으로도 생성 가능, 다른 리전으로 복사도 가능)

3. Security Group / EIP / Key Pair / Access Key & Secret Key / IAM
  - Security Group : EC2 인스턴스에 적용할 수 있는 방화벽 설정
    ~ Inbound / Outbound / Type(TCP, UDP, ICMP) / Port / Source/Destination(접속 가능한 IP 대역) / Rule
  - EIP : 공인 IP, EC2 인스턴스에 연결해서 사용 가능
  - Key Pair : EC2 인스턴스에 접속하기 위해 사용하는 암호화 파일(RSA 공개키 알고리즘)
  - Access Key & Secret Key : AWS API와 써드파티 툴을 사용할 때 필요한 인증 수단(IAM에서 계정 생성하고, 권한을 제한한 뒤 엑세스 키 발급 권장)
  - IAM : 식별 및 접근자 관리 / 결제 루트 계정 ->  각 부서별로 그룹화 -> 사용자 지정

4. CloudWatch
  - AWS 리소스의 상태를 모니터링하는 서비스, 측정치(Metric)과 연계하여 다양한 액션 가능
    ~ EC2 인스턴스 / EBS 볼륨 / ELB / RDS / DynamoDB / ElasticCache / SNS / SQS를 측정하고 Auto Scaling가 연동 가능

5. S3 / CloudFront
  - S3 : 인터넷 스토리지 서비스, 용량과 상관없이 파일을 저장할 수 있고, HTTP 프로토콜을 통해서 접근 가능
    ~ 객체 : 데이터가 저장되는 최소 단위, 파일과 메타데이터(HTTP Content-Type 형식)로 구성
    ~ 버킷 : 최상위 폴더, 리전별로 생성 가능
    ~ 표준 스토리지(중요 파일)와 낮은 중복 스토리지(동영상이나 이미지의 썸네일 등)으로로 구분
    ~ HTTP Referer로 접근 제어 가능 (원하는 도메인에서만 보여지도록 가능함)
  - CloudFront : 전 세계에 파일을 빠른 속도로 배포하는 CDN 서비스
    ~ 로직 : 사용자가 맨 처음 CloudFront 에지 로케이션에 접속했을 때 원하는 파일이 없으면 오리진에 접속하여 파일을 가져온 뒤 사용자에게 전달함, 이후 에지 로케이션이 오리진에서 파일을 가져와서 캐시함, 캐시 시간은 기본적으로 24시간이며 HTTP 헤더의 Cache-Control을 이용하여 시간 조절 가능

6. RDS / DynamoDB / ElastiCache
  - RDS : 관계형 데이터 베이스를 손쉬게 구성 및 확장 가능한 서비스
  - DynamoDB : NoSQL 데이터베이스를 제공하는 서비스로 아마존에서 개발, 읽기 / 쓰기가 빈번하고, 처리속도가 빨라야 하는 환경, 작은 욜양의 데이터가 매우 많을 때, 고가용성 분산 데이터베이스 지원이 필요할 때 최적 (통계 구조 데이터 최적화)
  - ElastiCache : 분산 인 메모리 캐시를 손쉽게 생성하고, 확장할 수 있는 서비스(Memcached, Radis 지원)

7. Route53
  - EC2, ELB, S3, CloudFront와 연동 가능한 DNS 서비스
  - Weightred Round Robin, DNS Failover 기능 사용 가능
  - Hosted Zone 생성, 각 레코드 생성

8. ELB
  - 부하 분산과 고가용성을 제공하는 서비스(고가의 L4 / L7이나 소프트웨어로 서버를 구축하지 않아도 부하 분산 기능을 사용할 수 있음), 라운드 로빈 알고리즘과 헬스 체크를 통해 Fail Over 자동 감지, Connection Draining(오토 스케일링이 사용자의 요청을 처리중인 EC2 인스턴스를 바로 삭제하지 못하도록 방지함, 삭제 대기 시간동안 모든 사용자의 요청을 대기하고, 새로운 사용자 요청을 받지 않음), Sticky Sessions 처리 가능

9. Auto Scaling
  - 트래픽이 늘어나면 자동으로 EC2 인스턴스를 생성해 서비스를 확장하는 기능
  - CloudWatch와 연동하여 EC2 인스턴스의 CPU 사용률, 네트워크 사용량이 늘어남
  - 아마존 EC2 Auto scaling을 통해 애플리케이션의 로드를 처리할 수 있는 정화ㄱ한 수의 Amazon EC2 인스턴스를 보유하도록 보장 가능
  - Auto scaling group : 최소 인스턴스 수 | 원하는 인스턴스 용량 | 최대 인스턴스 수
  - 장점 : 가변적인 수요에 대응 | 가용 영역 전반에 인스턴스 분산
  - 수명 주기 : Pending | InService | Terminating | Terminated

10. CloudSearch
  - 대용량 데이터를 빠르게 검색할 수 있도록 검색 엔진을 제공하는 서비스
  - DynamoDB, RDS, S3를 검색 인스턴스로 이용해서 웹서버를 통해 APP에 도달

11. SNS / SES / SQS
  - SNS : SNS 토픽을 이용해 푸시 알림 서비스를 제공(IOS,GCM,HTTP/S, Email, SQS)
  - SES : 대량의 이메일을 전송하는 서비스(AWS 콘솔, SMTP 프로토콜, HTTPS 프로토콜, AWS SDK을 사용 가능)
  - SQS : 서버들끼리 사용가능한 메시지 큐를 제공하는 서비스(웹 서버가 중단되더라도 결제 정보와 같은 전송 정보는 잃어버리지 않고, 정확히 처리되어야함), 작업 요청 큐와 작업 결과 큐로 구성