AWS [0] //Introduction, IAM, EC2, RDS
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군>>
- General Purpose SSD (GP2) : 최대 10K IOPS를 지원하며 1GB당 310PS 속도가 나옴
- Provisioned IOPS SSD (I01) : 극도의 I/O률을 요구하는(예시: 매우 큰 DB관리) 환경에서 주로 사용됨. 10K 이상의 IOPS를 지원함
<<Magnetic/HDD군>>
- Throughput Optimizes Hdd (ST1) : 빅데이터 Datawarehouse, Log프로세싱시 주로 사용 (boot volume으로 사용가능x)
- CDD HDD (SC1): 파일 서버와 같이 드문 volume 접근 시 바로 사용, 역시 boot volume으로 사용 불가능하나 비용이 매우 저렴함
- Magnetic(Sandard): 디스크 1GB당 가장 싼 비용을 자랑함. Boot volume으로 유일하게 가능함
ELB(Elastic Load Balancers)
- 수많은 서버의 흐름을 균형있게 흘려보내는데 중추적인 역할을 함
- 하나의 서버로 traffic이 몰리는 병목현상(bottleneck) 방지
- Traffic의 흐름을 Unhealthy instance -> healthy instance로
- Application Load Balancer: OSI Layer7에서 작동됨 -> HTTP, HTTPS와 같은 traffic의 load balancing에 가장 적합함 -> 고급 request 라우팅 설정을 통하여 특정 서버로 request를 보낼 수 있음
- Network Load Balancers: OSI Layer4에서 작동됨, 매우 빠른 속도를 자랑하며 Production환경에서 종종 쓰임 -> 극도의 performance가 요구되는 TCP traffic에서 적합함 -> 초당 수백만개의 request를 아주 미세한 delay로 처리 가능
- 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 (자동 백업)
- Retention Period(1-35일)안의 어떤 시간으로 돌아가게 할 수 있음
- AB는 그 날 생성된 스냅샷과 Transaction logs(TL)을 참고함
- 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장
- AB동안 약간의 I/O suspension이 존재할 수 있음 -> Latency
- DB Snapshots (데이터베이스 스냅샷)
- 주로 사용자에 의해 실행됨
- 원본 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
- Objecct 캐시 시스템으로 잘 알려져 있음
- ElastiCache는 Memcached의 프로토콜을 디폴트로 따름
- EC2 Auto Scalling처럼 크기가 커졌다 작아졌다 가능함
- 오픈소스
- 가장 단순한 캐싱 모델이 필요하거나, Object caching이 주된 목적, 캐시 크기를 마음대로 scalling하기를 원한다면 Memcached를 사용한다.
- Redis
- Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함
- 오픈 소스
- Multi-AZ 지원
- List, Set과 같은 데이터셋을 사용하거나, 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도가 필요하거나 Multi AZ기능이 사용되어져야 하면 Redis를 사용해야합니다.