본문 바로가기
  • RATEL.SHO
[AWS]

AWS [0] //Introduction, IAM, EC2, RDS

by ratelsho 2023. 5. 9.

AWS

1강

AWS – Amazon Web Service / 클라우드 컴퓨팅 / 서버리스(Serverless) 기능 지원

2강

IAM (Identity and Access Management) - 유저를 관리하고 접근 레벨 및 권한에 대한 관리 

  • 접근키(Access Key), 비밀키(Secret Access Key)
  • 매우 세밀한 접근 권한 부여 기능(Granular Permission)
  • 비밀번호를 수시로 변경 가능케 해줌
  • Multi-Factor Authen

-그룹(Group), 유저(User), 역할(Role), 정책(Policy)

-정책은 그룹, 역할에 추가시킬 수 있다. 하나의 그룹 안에 다수의 유저가 존재 가능

- 유니버설(Universal)함 -> 지역 설정이 필요없음 // 다른 서비스는 지역설정 해야한다.

IAM 정책 시뮬레이터 – 정책이 바른 유저에게 잘 부여되었는지 디버깅하는 툴

  • 개발환경 (Staging or Develop) 에서 실제환경(Production)으로 빌드하기전 IAM 정책이 잘 작동되는지 테스트하기 위함
  • IAM과 관련된 문제들을 디버깅하기에 최적화된 툴 (이미 실제로 유저에 부여된 다양한 정책들도 테스트 가능) 

3장

EC2(Elastic Compute Cloud) – 클라우드에서 크기를 유연하게 변경해주는 서비스

EC2 사용시 내는 다양한 지불 방법 

  • On-demand: 시간 단위로 가격이 고정되어 있음 ( 초기단계에 종종쓰임 ) 

단 기간에 끝낼 수 있는 경우에 주로 사용

  • Reserved: 한정된 EC2 용량 사용 가능, 1-3년동안 시간별로 할인 적용 받을 수 있음

개발시작과 끝을 아는 경우에 유용. 개발 시간에 대해 유추가 가능하다면 추천. 할인도 받을 수 있다.

  • Spot: 입찰 가격 적용. 가장 큰 할인률을 적용받으며 특히 인스턴스의 시작과 끝기간이 전혀 중요하지 않을 때 매우 유용

EC2를 사용하기 위해 EBS라는 디스크 볼륨을 요구한다.

EC2안에 부착되어있는 하드디스크 -> EBS

EBS(Elastic Block Storage)

  • 저장 공간이 생성되어지며 EC2 인스턴스에 부착된다.
  • 디스크 볼륨 위에 File System이 생성된다.
  • EBS는 특정 Availability Zone에 생성된다.

 

  • EBS 볼륨 타입

<<SSD군>>

  1. General Purpose SSD (GP2) : 최대 10K IOPS를 지원하며 1GB당 310PS 속도가 나옴
  2. Provisioned IOPS SSD (I01) : 극도의 I/O률을 요구하는(예시: 매우 큰 DB관리) 환경에서 주로 사용됨. 10K 이상의 IOPS를 지원함

<<Magnetic/HDD군>>

  1. Throughput Optimizes Hdd (ST1) : 빅데이터 Datawarehouse, Log프로세싱시 주로 사용 (boot volume으로 사용가능x) 
  2. CDD HDD (SC1): 파일 서버와 같이 드문 volume 접근 시 바로 사용, 역시 boot volume으로 사용 불가능하나 비용이 매우 저렴함
  3. Magnetic(Sandard): 디스크 1GB당 가장 싼 비용을 자랑함. Boot volume으로 유일하게 가능함 

ELB(Elastic Load Balancers)

  • 수많은 서버의 흐름을 균형있게 흘려보내는데 중추적인 역할을 함
  • 하나의 서버로 traffic이 몰리는 병목현상(bottleneck) 방지
  • Traffic의 흐름을 Unhealthy instance -> healthy instance로 
  1. Application Load Balancer: OSI Layer7에서 작동됨 -> HTTP, HTTPS와 같은 traffic의 load balancing에 가장 적합함 -> 고급 request 라우팅 설정을 통하여 특정 서버로 request를 보낼 수 있음 
  2. Network Load Balancers: OSI Layer4에서 작동됨, 매우 빠른 속도를 자랑하며 Production환경에서 종종 쓰임 -> 극도의 performance가 요구되는 TCP traffic에서 적합함 -> 초당 수백만개의 request를 아주 미세한 delay로 처리 가능 
  3. Classic Load Balancer: 현재 Legacy로 간주됨, 따라서 거의 쓰이지 않음 -> Layer7의 HTTP/HTTPS 라우팅 기능 지원, Layer4의 TCP traffic 라우팅 기능도 지원

EC2는 Private IP address밖에 볼 수가 없다. 하지만 X-Forwarded-For 헤더를 사용하면 public IP볼 수 있다.

Route 53 - AWS에서 제공하는 DNS 서비스(EC2 instance, S3 Bucket, Load Balancer)

[3-6] EC2 실습 - Window 유저

4강

RDS(Relational DB Service 관계형 데이터베이스) -> 엑셀을 생각하면 편함 컬럼/열

데이터베이스는 하나의 양동이라고 생각하고 이 양동이안에 다양한 것들을 넣을 수 있다. 

Relational DB 종류 (AWS RDS에서 사용 가능)

  • Microsoft SQL, Oracle, MySQL, Postgre, Aurora, Maria DB

Data Warehousing

  • Business Intelligence
  • 리포트 작성, 데이터분석 시 사용 (Production Database -> Data Warehousing)
  • 매우 방대한 분량의 데이터 로드시 사용

OLTP VS OLAP

  • OLPT: INSERT와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를 불러올 때 사용되는 SQL쿼리가 필요할 때 유용

Ex) Order # 210에만 해당되는 customer 이름, 주소, 시간 정보 INSERT 

  • OLAP: 매우 큰 데이터를 불러올 때 사용. 주로 덩치가 큰 SELECT 쿼리가 사용됨

EX) 특정 회사 부서의 Net Profit, Products

RDS – Database Backups

  • Automated Backups (자동 백업) 
  1. Retention Period(1-35일)안의 어떤 시간으로 돌아가게 할 수 있음
  2. AB는 그 날 생성된 스냅샷과 Transaction logs(TL)을 참고함
  3. 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장
  4. AB동안 약간의 I/O suspension이 존재할 수 있음 -> Latency
  • DB Snapshots (데이터베이스 스냅샷)
  1. 주로 사용자에 의해 실행됨
  2. 원본 RDS Instance를 삭제해도 스냅샷은 존재함 (vs AB)

데이터베이스 백업 

RDS – Multi AZ, Read Replicas 

Multi AZ 

  • 원래 존재하는 RDS DB에 무언가 변화(e.x: Write)가 생길 때 다른 Availability Zone에 똑 같은 복제본이 만들어짐 = Synchronize 
  • AWS에 의해서 자동으로 관리가 이루어짐 (No admin intervention)
  • 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨
  • Disaster Recovery Only!  
  • 성능 개선을 위해서 사용되지는 않음. 따라서 성능 개선을 기대하기 위해선 Read Replica가 사용되어져야함

Read Replica

  • Production DB의 읽기 전용 복제본이 생성됨
  • 주로 Read-Heavy DB작업시 효율성의 극대화를 위해 사용됨 (Scaling)
  • Disaster Recovery용도가 아님
  • 최대 5개 Read Replica DB 허용
  • Read Replica의 Read Replica 생성 가능 (단 Latency 발생)
  • 각각의 Read Replica는 자기만의 고유 Endpoint 존재

RDS – ElastiCache

ElastiCache

  • 클라우드 내에서 In-memory 캐시를 만들어줌
  • 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴
  • Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과 누림
  • 두가지 타입이 존재 Memcached, Redis
  • Memcached
  1. Objecct 캐시 시스템으로 잘 알려져 있음
  2. ElastiCache는 Memcached의 프로토콜을 디폴트로 따름
  3. EC2 Auto Scalling처럼 크기가 커졌다 작아졌다 가능함
  4. 오픈소스
  5. 가장 단순한 캐싱 모델이 필요하거나, Object caching이 주된 목적, 캐시 크기를 마음대로 scalling하기를 원한다면 Memcached를 사용한다.
  • Redis
  1. Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함
  2. 오픈 소스
  3. Multi-AZ 지원
  4. List, Set과 같은 데이터셋을 사용하거나, 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도가 필요하거나 Multi AZ기능이 사용되어져야 하면 Redis를 사용해야합니다.