2022. 5. 30. 22:28ㆍCloud/AWS 기초
아마존에서 제공해주는 데이터베이스 서비스는 2가지로 관계형 데이터베이스와 비 관계형 데이터베이스로 나뉘어져있다. AWS에서 주력으로 사용하는 대표적인 관계형 DB인 Amazone RDS와 DynamoDB에 대해 알아보도록 하자.
먼저 관계형 데이터베이스의 종류는 아래와 같다.
관계형 데이터베이스
Amazon RDS, Amazon Redshift, Amazon Aurora
Amazon RDS는 완전 관리형 관계형 DB이기에 많은 부분을 AWS에서 관리를 해 준다. RDS를 만들게 되면 원격으로 접속은 할 수 없지만 DB가 설치된 인스턴스가 만들어지게 되고, 콘솔에서 마우스 몇 번의 클릭으로 용량을 수정할 수 있다. DB의 성능이 낮아진거 같다고 생각이 들면 이 인스턴스를 조절할 수 있다.
RDS는 6가지의 DB엔진(Amazon Aurora, MySQL, Oracle, MariaDB, PostgresSQL, Microsoft SQL Server) 중 1개를 선택해서 만들 수 있다. 보다 복잡한 데이터를 사용하거나, 데이터 세트를 결합하고 연결할때, 혹은 복잡한 쿼리문을 사용해야할때 주로 사용된다.
DB자체에 대한 엑세스를 지정할 수 있으며, Data저장시 기본 스토리지, 자동백업, 읽기 전용 복제본, 스냅샷을 암호화한다. 또한 전송중인 암호화는 SSL을 통해 수행할 수 있으며, RDS인스턴스에서 발생할 수 있는 중요 이벤트에 대해 알림을 받을 수 도 있다.
Amazone redshift는 DW(Data Warehouse)라고 하는 솔루션으로 나온 데이터 분석용 DB의 하나이다.
Aurora는 아마존에서 개발한 관계형 DB인데, 무료로 제공해주는 DB(ex.mariaDB 등)이지만 상용 DB(MySQL 등)과 같은 성능을 제공해 주도록 하겠다라고 하는 목적으로 만들어진 DB이다.
MySQL이나 PostgresSQL중 하나를 선택해서 만들 수 있다. 일종의 호환모드라고 볼 수 있다.
MySQL의 최대 5배, PostgresSQL의 최대 3배가까이의 성능을 발휘할 수 있으며, 3개의 가용영역에 6개정도의 복제본을 배치할 수 있다. 기존 에플리케이션을 최소한으로 변경해 거의 완벽한 호환성을 이룰 수 있다
다음으로 비 관계형 데이터베이스의 종류이다.
비관계형 데이터베이스
Amazon DynamoDB, Amazon ElastiCache, Amazon neptune
Amazon DynamoDB는 완전 관리형 비관계형 데이터베이스를 지원해준다. RDS의 경우 인스턴트를 만들지만(프로비저닝)DynamoDB는 이런것 까지 할 필요없다. 아마존에서는 '장바구니'라는 기능이 있는데 DynamoDB가 없었을 때 RDS를 활용해서 쓰기요청을 받았었다. 그런데 RDS는 쓰기요청을 받기에는 굉장히 부담이 많이되었다. 그래서 비 관계형 DB를 구현해서 사용하기 시작했으며, 이것을 AWS에서 발전시켜 서비스화 시킨것이 DynamoDB이다.
일반적으로는 DB를 생성하고, 테이블을 생성하고, 필드값 지정, 키 지정, 쿼리문 작성 등등을 하는데, DynamoDB는 AWS안에서 이미 구동중인 DynamoDB서비스에 아키텍쳐가 어떤 서비스가 필요한지 요청하기만 하면 된다.(즉 서버리스 컴퓨팅이기에 개발자가 관리할 서버가 없다.) 그런 후 개발자가 DB와 연동되도록 코딩만 하면된다. 테이블명, 파티션키(고유 키로 사용하며, DB에 쿼리를 보낼때 기준으로 삼을 수 있는 키)를 반드시 지정해야지 사용 가능하다. 이 후 data를 수집하기 시작하면 쓰기를 하기위해 필요한 속성이 자동으로 만들어진다.(동적 스키마)
이벤트 중심의 프로그레밍이 가능한데, 개발자가 구축한 환경에서 이벤트(수정,삭제 등등)가 발생하게 되면 개발자가 설정한 내용이 자동으로 실행이 되도록 설정할 수 도 있으며 수평확장 기능을 가지고 있다.
쓰기 요청이 많을때 많은 도움을 줄 수 있으며(ex)IoT 기기, 약 10ms), 대용량의 단순 데이터를 보유할때, 혹은 신속하고 간편하게 확장을 해야할때, 복잡한 조인이 필요하지 않을때 주로 사용된다. 또한 글로벌 테이블 기능이 있는데, 서로 다른 리전에 있는 테이블을 동기화 시킬 수 있는 방법이다.
누군가가 Data를 변경했다면 이것은 100ms안에 동기화가 이루어진다. 하지만 이때 사용자가 data를 보게된다면, 동기화가 이루어지지 않은 data를 보게 될 것이다. 사용자나 개발자 모두가 이런 상황에 대해 괜찮다 라고 생각하게 된다면 최종 일관성 기능을 활용하면 된다. 하지만 항상 최신데이터를 봐야할 때는 강력한 일관성 기능을 활용하면 된다.
IAM서비스를 이용해 접근제어를 할 수 있으며, 저장시 암호화, SSL/TLS기능을 지원해준다.
ElastiCache 데이터베이스의 Cache Layer을 만들기 위해 사용되는 DB이다.(관계형DB의 읽기속도가 느릴 때 DB앞단에 Cache Layer을 만들때 사용) RDBMS에 쿼리(특히 읽기)가 엄청나게 많이 들어오게 된다고 가정해보자. 이때 앞단에 DB Cache Layer를 만들어서, 외부에서 접근하는 모든 요청을 받게한다. 케싱이 되어있지 않는 정보는 원본에서 그 자료를 받아서 응답을 하며, 케싱이 된 정보는 RDBMS로 가지 않고 DB Cache Layer에서 응답해준다.
Neptune은 그래프 형태(분산되어 있는 데이터, 그리고 연결 되어있으며, 이 연결된 값 하나하나 의미를 가지고 있을때.ex)SNS - 사람들간의 관계)의 데이터를 잘 정리할 수 있는 DB이다.
온디멘드 환경에서 클라우드환경으로 마이그레이션을 하게 될 때 AWS DMS(database Miration Service)기능을 활용할 수 있다. 마이그레이션 후 기존 온디멘드 환경을 비활성화 할때 일회성 마이그레이션을, 백업과 보존 등을 함께 하며 사용할때는 지속적 마이그레이션을 선택해서 할 수 있으다. 개인정보와 같은 인터넷으로 옮기기 민감한 정보의 경우 Snowball Edge(snowball의 DMS버전)를 사용해서 옮길 수 있다.
'Cloud > AWS 기초' 카테고리의 다른 글
AWS VPN 환경 (0) | 2022.06.02 |
---|---|
AWS Security Group(SG) (0) | 2022.06.02 |
AWS SSA 공부 KMC part.1 (0) | 2022.05.29 |
AWS SAA 공부 IAM.1 (0) | 2022.05.18 |
AWS SSA 공부 RDS.1 (0) | 2022.05.18 |