AWS_DB(DataBase)

2021. 12. 1. 16:23Cloud

1. DB 선택 기준

"DB 서비스가 필요할까?"

 : 고가용성, 확장 용이, App Server와 분리된 DB의 필요성 대두

"DB 서비스에 어떤걸 고려해야 할까?"

: 확장성, 총 스토리지 요구사항, 객체 크기 및 유형(정형/비정형), 내구성(장애대응)

"어떤 DB 서비스를 쓸건가?"

관계형 DB(ex>Mysql) & 비 관계형 DB(ex>NoSQL)

"어떤 유형의 DB가 필요한가?"

최근 웹 쿼리의 사용량(모바일)이 증대되면서 비정형 데이터, 정형 데이터의 양이 증가

 -> 관계형 DB의 부담 증가, 물론 관계형DB의 성능을 업그레이드하면 되지만 가성비가 매우 낮다.

ex> Master DB(읽기,쓰기)를 늘리면 성능은 2배지만 가격은 3배 + 성능 향상의 한계

 -> 비관계형 DB는 Master(쓰기, 읽기) 서버의 수를 늘려도 비용적, 성능적 한계가 개선된다. 대신 ACID(원자성, 유지성, 고립성, 지속성) 중 몇가지를 포기해야 한다. 또한 비관계형 DB는 쿼리문을 통해 수정을 해야할 때 굳이 서버를 Down시킬 필요 없이, 동적으로 수정 가능

 -> 비관계형 DB의 필요성 대두

 

2. On-Premise 환경의 DB

1) 관계형 DB를 선택하는 경우

 - 엄격한 스키마 규칙 및 데이터 품질 적용이 필요

 - DB가 과도한 읽기, 쓰기를 필요로 하지 않음

 - 엄청난 성능이 요구되지 않는 DB의 경우 RDBMS가 자원 소비가 적은 최고의 솔루션이 될수도 있다. 

 

2) 비관계형 DB를 선택하는 경우

 - DB를 수평적으로 확장해야 함

 - 데이터가 기존 스키마에 적합하지 않음

 - 읽기, 쓰기 속도가 기존 SQL DB에 무리가 될정도로 잦을 경우

3. Cloud 환경의 DB

1) 관계형 DB

 i) Amazon RDS

 - 부분 관리형 관계형 DB Service

 - 몇 분이면 새 인스턴스(서버)를 프로비저닝 가능

 - 몇 번의 클릭으로 DB 서버를 조정

 ii) Amazon Redshift : 데이터 웨어하우스(=DW 솔루션)로써 데이터 분석용 DB

 iii) Amazon Aurora

 - AWS에서 자체적으로 개발한 DB

 - 라이센스 비용을 없애고 성능은 상용 DB급인 AWS 자체개발 DB 엔진.

 - 기존 MySQL이나 PostgreSQL과 호환되기 때문에 큰 수정은 필요 X, 장애대응과 처리량이 오픈 소스 DB보다 훨씬 월등하다.

 

2) 비관계형 DB

 i) Amazon DynamoDB

- 완전 관리형 비관계형 DB Service

 - 서버는 AWS에 어딘가 생성되며(Serverless) 쿼리문을 요청함과 동시에 서버가 시작된다. = 서버관리(확장포함) 필요 X

 - 서로 다른 리전에 설치된 DynamoDB는 독립적으로 운영되기 때문에 글로벌 테이블 기능으로 서로 다른 리전의 DB가 동기화 가능

 - 최종 일관성 : 읽기 요청시 동기화가 되지 않은 서버로부터 요청이 수행되 일관성이 저하될 수도 있음. 대신 저렴

 - 강력한 일관성 : 읽기 요청시 모든 서버로부터 읽기를 수행하여 가장 최근 데이터만을 가져옴. 대신 비싸다.

ex> 전세계 게이머들의 순위 테이블, 온라인 카트 장바구니 등..

 ii) Amazon ElastiCache : DB 앞에 설치되어 DB의 성능을 높이는데 사용되는 서비스

 iii) Amazon Neptune : 그래프 형태의 데이터를 빠르게 처리해주는 서비스. 

   *그래프 형태의 데이터는 SNS에서 친구추천, 알고리즘 등으로 사용된다.

4. DB 보안

1) RDS 보안 제어

i) 인증(권한제어)

 : DB 자체에 대한 엑세스 암호화가 이루어진다. 누가 가시성을 보유하고 DB에 대한 작업을 수행할수 있는지 판단

ii) 데이터 암호화

 : 저장 시 데이터를 암호화하며 DB 인스턴스의 기본 스토리지, 자동백업, 읽기 전용 복제본, 스냅샷을 저장한다.

iii) 백업

 : 전송 중 암호화는 SSL을 사용하여 수행한다.

vi) 장애 조치

 : RDS 인스턴스에서 발생 할 수 있는 다양한 중요 이벤트에 대한 알림을 받을 수 있다.

2) DynamoDB

i) 인증(권한제어)

 : DB 서버 자체에 접근이 안되기 때문에 쿼리의 사용 방식(IAM)에 대한 엑세스를 제어

ii) 데이터 암호화

 : 완전 관리형 저장 암호화 기능 제공

iii) 백업

 : 기본적으로 SSL/TLS를 사용해 암호화하며, 네트워크 트래픽을 보호하는 HTTPS 프로토콜도 사용 

vi) 장애 조치

 : 고객이 직접 키를 관리하여 보안을 완벽하게 제어

 

5. AWS DMS(DB Migration Service)

 On-Premise 환경에서 데이터 베이스의 모든 데이터를 AWS DB로 옮겨주는 서비스. 하지만 데이터가 너무 크거나 네트워크, 보안 문제로 인해 Snowball Edge를 통해 옮기기를 추천. 일회성으로 완전한 이전과 다회성을 통해 백업용으로 사용되는 서비스.

1) Snowball 

 : S3에서만 데이터를 이전하거나, 받아올수 있다. 오직 데이터만을 가져온다. 용량은 50TB가 있다.

2) Snowball Edge

 : 하나 이상의 DB 데이터 뿐만 아니라 컴퓨팅 자원까지 포함하여 이전 가능. 용량은 100TB까지 가능. 사용자가 가지고 있는 워크스테이션에 클라이언트 프로그램을 설치하여야만 이전 가능

 

6. AWS Schema Conversion Tool

 : DB 엔진을 바꿔주는 서비스. 서로 다른 DB 엔진간 이전 시 많은 부분에 도움을 주는 서비스. 하지만 아직 불완전해 관리자는 꼭 확인하고 보안해야할 필요가 있다.

'Cloud' 카테고리의 다른 글

AWS_VPC(Virtual Private Cloud) II  (0) 2021.12.03
AWS_VPC(Virtual Private Cloud) I  (0) 2021.12.03
AWS_EC2(Elastic Compute Cloud) III  (0) 2021.11.30
AWS_EC2(Elastic Compute Cloud) II  (0) 2021.11.29
AWS_EFS/FSx I  (0) 2021.11.29