Devops 엔지니어 솔렐레 IT

AWS 기초 - DB 데이터베이스 (RDS, DynamoDB, ElastiCache, RedShift) 본문

Devops 엔지니어가 알려주는 클라우드 지식/AWS

AWS 기초 - DB 데이터베이스 (RDS, DynamoDB, ElastiCache, RedShift)

솔렐레_ 2019. 10. 2. 09:00


안녕하세요. 솔렐레입니다.
오늘은 AWS의 데이터베이스 관련된 서비스에 대해서 소개하고 정리하도록 하겠습니다. 다양한 서비스가 있지만 가장 대표적인 서비스인 RDS와 DynamoDB를 소개드리고 더불어 DB와 같이 사용할 수 있는 캐시 서비스 ElastiCache와 데이터 웨어하우스 RedShift도 설명드릴 수 있도록 하겠습니다. 애플리케이션을 제작할 때 DB 선택과 관리는 가장 중요한 부분 중 하나라고 생각합니다. 그럼 시작하도록 하겠습니다.



[DB
선택 시, 고려해야할 사항]

DB
를 선택할 때, 내가 가장 필요로 하는 기능을 기준으로 선택하는 것이 중요합니다. 고려를 해야 하는 내용으로는 데이터의 형식, 크기, 보존 기간은 어떻게 가져갈지 생각해야 합니다.그리고 쿼리 빈도와 액세스 속도에 맞춰 내가 생각하여 DB 선택을 하셔야 합니다.쿼리는 관계형 데이터베이스에서 사용할 수 있는 SQL과 비 관계형 데이터베이스에서 사용할 수 있는 NoSQL이 있습니다. SQL의 데이터 스토리지는 테이블을 통해 행/열이 이루어진 공간에 저장되어 사용하며 고정된 스키마를 가지고 있습니다. 또한 확장 시 수직적인 Scale Up 작업이 이루어져야 합니다. Scale Up 은 서버에 대한 스펙을 업시켜서 점점 커지는 한 덩어리로 관리한다고 생각하시면 될 것 같습니다. 이에 반해 NoSQL은 고정된 스키마를 가지고 있지 않기 때문에 데이터 스토리지 또한 키 값을 기준으로 사용할 수 있습니다. 또한 수평적인 Scale Out을 통해 확장할 수 있습니다. Sclae Out은 고성능의 DB 보다는 숫자를 여러 대로 늘려서 확장하는 방법을 의미합니다. 관계형 데이터베이스를 사용하는 AWS 서비스는 대표적으로 RDS가 있고 NoSQL을 사용하는 데이터베이스는 DynamoDB가 있습니다. 본인이 관리하게 될 서비스가 어떤 형태, 성격의 DB를 선택하는 것이 유리할지 잘 따져보고 업무를 진행하는 것이 중요합니다.

[AWS
데이터베이스 - RDS]
RDS
는 관계형 데이터베이스로 크기 및 용량 조절이 가능하고 MySQL, Oracle, MSSQL, AWS Aurora, MariaDB 모두 사용이 가능합니다. RDS는 일반적으로 사용하는 애플리케이션 데이터베이스로 사용하여 간편하고 빠르게 배포가 가능하고 클라우드의 장점을 활용하여 빠른 확장이 가능합니다. 또한 사용한 만큼 비용을 지불하여 불필요한 리소스 낭비가 없도록 설계할 수 있습니다. 또한 자동 백업 기능이 제공되어 특정 시점으로 복원이 가능하며 최대 35일까지 보관이 가능합니다. 또한 수동 스냅샷을 통해 백업이 가능하며 이는 사용자가 삭제할 때까지 AWS S3에 보관이 가능합니다. 이 스냅샷 기능을 통해 재해 복구나 다른 리전으로의 마이그레이션 또한 가능하다는 장점이 있습니다. RDS의 보안으로는 클라우드 환경인 VPC(클라우드에 있는 격리된 환경)에서 DB 인스턴스를 사용하여 관리됩니다. 그리고 IAM 정책을 지정하여 리소스에 대한 액세스 권한을 관리할 수 있습니다. 통신도 SSL 암호화 방식을 지원하며 DB 엔진의 보안 기능을 사용하여 인스턴스에 대한 액세스를 제어할 수도 있습니다. RDS를 활용하면 메모리, CPU, 스토리지에 대한 사용을 모니터링하면서 관리할 수도 있을 뿐 아니라 다중 AZ 배포를 사용하여 다른 가용 영역에 동기식 대기 인스턴스를 자동으로 프로비저닝하여 유지할 수 있습니다. 이와 같은 장점과 기능들을 활용하여 DB를 효율적으로 운영, 관리할 수 있습니다.


[AWS 데이터베이스 - DynamoDB]
DynamoDB는 비 관계형 데이터베이스로 어떤 양의 데이터든 제한 없이 저장이 가능합니다. 완전관리형 NoSQL을 사용하는 서비스로 SSD를 사용한 빠른 성능, 원활한 확장성 및 안정성 그리고 저렴한 비용을 장점으로 가져가는 서비스입니다.. NoSQL을 사용함에 따라 쿼리 작업은 파티션 키와 정렬 키를 사용하려 테이블 쿼리를 작성할 수 있습니다. 테이블에 보조 인덱스가 있는 경우, 보조 인덱스의 키를 사용하여 만들고 테이블 또는 보조 인덱스에서 항목을 효율적으로 검색을 합니다. 또한 스캔을 사용해서 테이블이나 인덱스를 스캔할 수 있으며 쿼리와 스캔 작업 모두 조건식을 사용하여 작업이 가능합니다.

요소 RDS DynamoDB
애플리케이션 유형 기본 RDB와 동일한 방식으로 구동되며 비즈니스 프로세스 중심의 앱 새로운 웹 규모 애플리케이션으로 작은 용량의 읽기 및 쓰기를 다수 수행
애플리케이션 특징 관계형 데이터 모델, 트랜젝션을 사용하며 복잡한 쿼리 사용이 필요함 단순한 데이터 모델, 트랜젝션을 사용하고 쿼리가 단순함
조정 애플리케이션 또는 DBA 설계
(클러스터링, 파티션, 샤딩)
애플리케이션 요구 사항에 따라 원활한 On-Demand 확장
Qos(Quality of Service) 데이터 모델, 인덱싱, 쿼리, 스토리지 최적화에 따라 다름 시스템에 따라 자동으로 최적화

[AWS 데이터베이스 서비스 – ElastiCache, RedShift]
1. Amazon ElastiCache
DB 캐시 서비스로 Memcached 또는 Redis 호환하여 사용할 수 있습니다. DB 티어 앞에 배치하여 부하를 줄일 수 있어 처리 시간을 단축할 수 있습니다. 또한 패치, 캐시노드 장애 탐지 및 복구 기능 또한 수행이 가능하며 자동 검색 기능을 사용하면 애플리케이션에서 캐시 클러스터의 모든 노드를 식별할 수도 있습니다. 기존 Memcached 또는 Redis를 사용하는 서비스였다면 거의 수정 없이 해당 서비스를 이용할 수 있습니다.

2. Amazon RedShift
데이터 웨어하우스 서비스로 클러스터를 설정하고 운영하며 모든 작업을 관리하는 서비스입니다.클러스터의 상태를 지속적으로 모니터링하여 문제가 있는 요소를 교체합니다. 이에 따라 I/O를 획기적으로 줄여 효율적인 서비스 운영을 가능하도록 도움을 줍니다.


오늘은 AWS에 데이터베이스 관련 서비스들에 대해 정리하였습니다. 기존 많이 사용하던 데이터베이스 종류와 기술들을 AWS를 사용하여 구축한다면 더 효율적으로 관리가 가능할 것 같습니다. 그리고 내가 사용한 만큼만 비용을 지불하기 때문에 비용 측면에서도 장점이라고 생각합니다. 아직 사용해보지 않은 분들을 이번 기회에 AWS DB를 활용하여 애플리케이션을 제작하는데 고려하여 사용해보셨으면 좋겠습니다. 감사합니다. :)

Comments