Feedback
1. Storage class
Amazon S3 Standard-Infrequent Access는 낮은 빈도의 액세스를 가진 데이터용에 적합하다. 반면, Glacider Deep Archive는 검색시간이 많이 걸려도 비용 효율적으로 데이터를 저장하기 원할때 사용한다.
2. Snowball Edge - Compute Optimize
Snowcone과 Snowball Edge는 Edge Computing에 이용되며, Snowball같은 경우는 Compute에 특화된 것과, Storage에 특화된 것으로 나뉜다.
3. Snowmobile
Snowmobile은 exabytes의 데이터를 옮기는데 적합하다. 1EB는 1000PB를 의미한다. Snowmobile의 Storage Capacity는 100PB이므로, 10대의 Snowmobile이 있으면 1EB 데이터 migration이 가능하다.
4. Life cycle(수명주기규칙)
수명 주기 규칙을 이용하면 다른 Storage Class간에 S3객체를 이동하는 작업을 정의할 수 있다.
5. Snowcone
인터넷 연결이 원활하지 않은 장소에 있는 연구원들이 5TB의 데이터를 클라우드로 전송하고싶다면 Snowcone이 적절하다. Snowcone은 휴대성이 좋아 드론위에도 올릴 수 있으며, 8TB까지 저장할 수 있다.
Databases
Intro
Disk(EFS, EBS, EC2 Instance Store, S3)에 데이터를 저장하는 것은 한계를 가진다. 만약, 데이터를 구조에 맞춰 저장하고 싶다거나, 특정 목적에 맞게 데이터를 저장하기 원한다면 DataBase를 이용하는것이 적합하다. DB를 이용한다면 효율적인 데이터 탐색과, datasets사이의 관계를 설정하는것이 가능해진다.
Relational Databases
일반적인 Excel spreadsheets의 형태를 떠올리면된다. 기억할점은, 테이블 간의 연결고리가 존재한다는 점이다. DB의 이름에 'Relational' 이라는 수식어가 붙는 이유이다. 때문에, 필요에따라 테이블을 합치는 JOIN 연산이 가능하다.
NoSQL Databases
NoSQL은 non-SQL이란 의미이며, 비관계형 데이터 베이스를 의미한다. 즉, 테이블이 구조화된 형태가 아니며, 때문에 테이블간의 연결고리도 존재하지 않는다. NoSQL은 특정한 데이터 모델을 위해 이용하며, 좀더 유연한 구조를 가진다. Key-value, document, graph, in-memory, search databases 모두 NoSQL DB이다.
NoSQL은 4가지 장점, Flexibility, Scalability, High-performance, Highly functional 을 가진다. Scalability에 첨언하자면, 관계형 DB는 서버 추가 확장이 어려워 수직적 확장만이 가능하지만, NoSQL은 분산서버를 추가해 scale out하는것이 가능하다.
JSON
JSON은 NoSQL에서 데이터를 표현하는 형태이다. 새로운 필드가 쉽게 추가될수있고 데이터가 중첩될수있다는 특징을 가지고 있다.
AWS Managed Databases
AWS를 통해서 여러 데이터 베이스를 관리하는 것이 가능하다. 관리형 DB를 이용하면 provisioning이 빠르고, 고가용성을 제공하며, 확장성이 좋다. 그리고 백업이나 복구, O/S 패치도 자동으로 이루어지며, 그리고 모니터링도 가능하다. 만약, EC2에서 DB를 돌리면 사용자가 위의 많은 책임을 져야하기 때문에, 많은 경우 관리형 DB를 사용한다. 이제 AWS의 관리형 DB를 살펴보자.
AWS RDS & Aurora
RDS (Relational Database service)와 Aurora는 AWS에서 관계형 DB를 생성할 수있는 두가지 방법이다. 차이점이라면, Aurora가 좀더 AWS cloud에 최적화 되어있다. Aurora DB에서는 PostgresSQL과 MySQL을 지원하는데, PostgresSQL는 RDS보다 3배의 성능을, MySQL은 무려 5배의 성능을 보인다. 더불어 storage도 10GB에서 64TB까지 자동으로 확장시켜준다. 이런 추가적인 기능때문에 RDS보다 20%가량 비싸지만, 효율이 좋기 때문에 많이 사용한다.
RDS Solution Architecture
먼저, Load Balancer에서 웹 요청이 들어오면, 벡엔드 EC2 instance가 어플리케이션 로직을 수행한다. 그러면 DB가 해당 데이터를 읽거나 쓰는 형태이다. (백엔드에서 DB를 공유하는 형태)
RDS Deployments (배포)
RDS에는 여러 배포 방식이 존재하며, 상황에 따라 적합한 배포방식을 선택한다. 배포 방식으로는 Read Replicas, Multi-AZ, 그리고 Multi-Region이 있다.
Read Replicas
더 많은 워크로드에서 RDS로부터 더 많은 데이터를 읽어들일수 있게 하는 방식이다. 이는 읽기 전용 Replica를 생성함으로 가능하고, 이 Replica에서는 쓰기는 불가능하고 읽기만 가능하다 (쓰기 작업은 오직 Main RDS DB에서만 가능하다). 복사본은 최대 5개 생성 가능하다.
Multi-AZ
장애가 발생했을때 유용한 방식이다. Failover DB를 다른 AZ에 설정하면, main RDS에 문제가 생겼을때 장애조치가 트리거되며 이 복제본을 사용가능하다. 이때, 하나의 AZ만 장애조치 AZ로 설정 가능하다.
Multi-Region
이는 여러 region에 걸친 읽기 복제본이라고 생각하면 된다. 여러 region에 걸쳐 replica를 생성했기 때문에, main RDS에 문제가 생겨도 백업이 존재하게 된다. 또한, 다른 리전에 있는 어플리케이션은 Local DB로부터 읽어들이기 때문에 지연시간이 짧다는 장점이 있다.
Amazon ElastiCache
Cache는 높은 성능과, 저지연을 가지고있는 in-momory databases이다. RDS로 많은 쿼리 작업을 동일한 쿼리로 다루게 되면 RDS DB에 막대한 부하가 생긴다는 문제가 있다. 이런 경우, 캐시를 이용하면 캐시가 직접 전송함으로 DB부하가 감소하게 된다. 즉, Cache는 RDS와 읽고 쓰는 작업을 나눠서 처리함으로 부하를 줄이는 것이 목적이다.
DynamoDB
DynamoDB는 AWS의 대표적인 상품중 하나이다. NoSQL DB이며, 3개의 가용영역에 복제본을 두며 운영된다. DB가 없어도 테이블이 생성가능하고, 서버에 provision할 필요가 없다는 장점이 있다 (serverless). 그리고 아래에서 확인할 수 있듯이, key-value DB의 일종이다. 열을 임의로 지정가능하며, 모든 item은 행으로 저장한다. 이러한 유연성이 Dynamo의 장점이다.
DynamoDB Accelerator - DAX
Dynamo DB의 전용 캐시라고 생각하면된다. Dynamo에 최적화 되어있기 때문에, Elasti Cache보다 월등한 성능을 보여준다. 반면, Elasti Cache는 다른 여러 DB에서도 사용될 수 있다.
DynamoDB - Global Tables
여러 region에서 저지연으로 DynamoDB에 접근하게하는 방법이다. 여러 region에 Global Table을 둘 수 있는데, 이는 Active-Active replication이라 칭한다. 어떤 region이든 직접 쓸수있고, 쓴 내용은 바로 다른 리전에도 반영된다는 의미이다. 사용자가 Global Table을 이용하고자한다면, 더 가까이 있는 region의 DB에 접근한다. 때문에 더 짧은 지연속도를 경험할 수 있다.
'aws' 카테고리의 다른 글
[AWS] Other Compute (0) | 2023.01.02 |
---|---|
[AWS] Databases2 (0) | 2022.12.28 |
[AWS] S3 - Storage class (0) | 2022.12.26 |
[AWS] Snow Family (0) | 2022.12.26 |
[AWS] S3 (0) | 2022.12.22 |