07장. 데이터베이스 서비스 Amazon RDS
💡 Amazon RDS는 Amazon Aurora를 비롯한 주요 관계형 데이터베이스
ㅤ (RDB, Relational Database)를 제공하는 서비스이다.
🎨 7.1 데이터베이스와 RDB
📌 7.1.1 데이터베이스란
- 소프트웨어는 대규모 데이터를 다루기 위해 데이터베이스를 사용한다.
- 데이터베이스는 구조적으로 정리된 데이터의 집합체이다.
📌 7.1.2 데이터베이스와 DBMS
- 실제로 데이터를 조작하는 것은 데이터베이스 관리 시스템(DBMS, Database Management System)이며, DBMS는 데이터 저장, 삭제, 검색 등과 같이 데이터베이스를 실제로 조작하는 역할을 담당한다.
- 데이터베이스의명령을 할 때 사용되는 언어 중 하나가 SQL이다.
- Sql을 단독으로 사용하는 경우는 잘 없고 대부분 프로그램을 사용한다.
📌 7.1.3 DBMS
- 일반적으로 데이터베이스와 DBMS를 통틀어 '데이터베이스'라고 한다.
- DBMS는 유료 소프트웨어와 무료 소프트웨어가 있다
유료: Oracle Database, SQL Server 등
무료: MySQL, PostgreSQL, Maria DB 등
- 각 DBMS의 기능은 크게 다르지 않다.
- 대규모 시스템의 경우는 벤더 지원을 받을 수 있는 유료 DBMS를 사용하는 경우가 많고, 소규모 시스템의 경우는 비용을 절감하기 위해 무료 DBMS를 사용하는 경우도 많다.
📌 7.1.4 RDB와 비RDB
- 데이터베이스는 크게 관계형 데이터베이스(RDB)와 비관계형 데이터베이스(비RDB)두 가지로 나뉜다.
- 관계형 데이터베이스는 주소록이나 엑셀과 같이 표 형태로 되어 있고 데이터의 종류까지 세세하게 설정하기 때문에 구축하기까지 시간이 들지만, 그만큼 정밀한 조작이 가능하다.
- 데이터 관련 작업은 SQL을 사용한다.
- 비관계형 데이터베이스는 구조가 단순하고 설정할 부분이 적기 때문에 쉽게 구축할 수 있다.
- 복잡한 작업은 할 수 없지만 액세스가 빠르다. 대표적으로 키 밸류형, 문서형 등의 구조를 가지고 있다.
- SQL을 사용하지 않기 때문에 'NoSQL 데이터베이스'라고도 한다.
- AWS는 RDB, 비RDB 모두를 제공한다.
RDB 서비스: Amazon RDS(Relational Database Service
비RDB 서비스: Amazon DynamoDB, Amazon ElastiCache 등
🎨 7.2 Amazon RDS란
💡 AWS는 관계형 데이터베이스 서비스로 Amazon RDS를 제공한다.
ㅤ 대표적인 RDBM인 Aurora, PostgreSQL, MySQL, MariaDB, Oracle 등을 제공한다.
📌 7.2.1 Amazon RDS란
- Amazon Relational Database Service(Amazon RDS)는 관계형 데이터베이스 6종류의 제품을 클라우드에 최적화된 상태로 제공하는 서비스이다.
- 데이터베이스의 제공 방식은 EC2와 비슷하다.
- VPC상에 인스턴스 형태로 구축하며 다양한 인스턴스 클래스를 사용할 수 있다.
- EC2와 다른 점은 RDS는 '매니지드 서비스'이며 업데이트 등의 관리가 AWS에 의해 자동으로 이루어진다는 점이다.
- AWS Database Migration Server(DMS)를 사용하면 기존 데이터베이스를 이전하거나 복제하는것도 가능하다.
📌 7.2.2 인스턴스 클래스
- RDS는 EC2와 마찬가지로 인스턴스 형식으로 사용한다.
- 인스턴스 클래스는 표준, 메모리 최적화, 버스트 성능의 3종류가 있으며 클래스에 따라 micro, small, medium, large, xlarge, 2xlarge, 4xlarge, 8xlarge, 16xlarge 크기를 제공한다.
- 인스턴스 클래스에 따라 지원하지 않는 DBMS나 버전도 있다.
- 데이터베이스 인스턴스는 VPC에 설치해야한다. 예전에는 외부설치가 가능했으나,
지금은 VPC에 설치하지 않으면 안 된다.
📌 7.2.3 RDS 요금
💎 다중 AZ 구성이란
- AZ란 가용 영역의 약자이다.
- 단일 AZ구성은 한 곳에 가용 영역을 구축하는 것이다.
- AZ구성은 여러 가용 영역에 구축하여 이중화 구성을 구현하는 것이다.
- 장애가 발생하여 중단되면 안 되는 서비스 환경일 때 다중 AZ구성을 사용하는 것이 좋다.
📌 7.2.4 RDS의 장점과 단점
- RDS의 장점은 매니지드 서비스라는 점이다.
- Aws가 업데이트 등을 관리해 주기 때문에 따로 관리하지 않아도 된다.
- 또한 간단하게 데이터베이스를 생성할 수 있으며 온 프레미스에서 데이터를 이전하기 쉽고 소프트웨어를 수정하지 않아도 이전이 가능하다.
- EC2와 연동하기 쉽고 같은 네트워크 내에 있다면 통신료도 무료이다.
- 단점은 사용자가 자유롭게 사용할 수 없다는 점이다.
- 제공하고 있는 DBMS의 종류나 버전이 한정되어 있으며 AWS가 업데이트를 자동으로 수행하여 편리하지만 오히려 업데이트하면 곤란한 시점에 수행되는 경우도 있다.
💎 RDS의 자동 업데이트
- RDS는 매니지드 서비스이므로 새로운 버전이 출시되거나 소프트웨어 취약점이 발견된 경우에는 자동으로 업데이트 된다.
- 서비스 정지가 필요한 경우에는 AWS에서 따로 공지한다 사용자는 세 가지 방 중 하나를 선택할 수 있다.
💻 첫 번째는 그대로 자동 업데이트를 하는 방법이다. 테스트 환경으로 사용할
ㅤ 경우 별로 영향이 없을지도 모르지만 그래도 싫어하는 관리자가 있을 수 있다.
💻 두 번째는 관리 콘솔에서 수동으로 업데이트하거나 업데이트 시간을
ㅤ 지정하는 방법이다. 업데이트 시에 일시적으로 데이터베이스 인스턴스를
ㅤ 사용할 수 없지만 관리자가 모르는 사이에 업데이트되는 것을 방지할 수 있다.
💻 세 번째는 추천하지 않지만 업데이트를 무시하는 방법이다.
ㅤ 하지만 치명적인 취약점에 대한 업데이트를 무시하기 힘들고 오래된 버전은
ㅤ AWS가 점점 지원을 종료하므로 어느 시점에는 업데이트를 해야 한다.
🎨 7.3 RDS에서 사용할 수 있는 DBMS
📌 7.3.1 RDS에서 사용할 수 있는 데이터베이스 엔진
- RDS는 AWS가 만든 Amazon Aurora 외에도 PostgreSQL, MySQL, MariaDB, Oracle Database, SQL Server 등 데이터베이스 엔진(DBMS) 6종류를 사용할 수 있다.
- 또한 온프레미스에서 AWS로 쉽게 이전할 수 있다.
📌 7.3.3 Amazon Aurora란
- Amazon Aurora는 MySQL이나 PostgreSQL과 호환할 수 있으며 AWS가 만든 관계형 데이터베이스이다.
- 요금이 조금 비싸지만 성능이 뛰어나다.
- AWS에서 MySQL이나 PostgreSQL을 사용하는 방법은 3가지이다.
- EC2에 설치하는 방법
- RDS를 사용하는 방법
- Amazon Aurora를 사용하는 방법 → 높은 성능을 원할 때 추천!
🎨 7.4 RDS 사용 절차
📌 7.4.2 RDS 서비스 기능
- RDS는 데이터베이스 서비스이므로 설정할 수 있는 항목이 여러 가지다.
💎 데이터베이스 엔진 항목
- 먼저 어떤 DBMS를 사용할 것인지 정해야 한다.
- 대부분의 데이터베이스는 소프트웨어와 연동해서 사용하기 때문에 같이 사용할 소프트웨어를 지원하는 DBMS버전이 무엇인지 알아두어야 한다.
💎 데이터베이스 인스턴스 항목
- 온프레미스 환경에 물리적인 서버에 해당하는 항목이다.
- 사용할 수 있는 예산과 관련되기 때문에 요금과 기대 효과를 고려하여 필요한 사양을 선택한다.
- 다중AZ나 스케일링은 데이터베이스 규모와 중요도에 맞게 선택한다.
💎 네트워크 항목
- RDS 인스턴스는 반드시 VPC에 설치해야 한다.
- EC2와 연동하려면 EC2가 사용하고 있는 서버넷 그룹 및 가용 영역을 확인해야 한다.
💎 데이터베이스 환경 항목
- 데이터베이스 별로 환경을 설정할 수 있다.
- 유지보수와 관련된 설정이 많으므로 운영을 고려하여 설정하는 것이 좋다.
📌 7.4.3 RDS의 사용 절차
- RDS를 사용하려면 관리 콘솔에서 RDS 대시보드에 접속하여 인스턴스를 생성해야한다.
- RDS는 EC2에 설치된 소프트웨어와 연동하여 사용한다.
- 따라서 EC2와 같은 네트워크에 위치해야하며 EC2와 연동 작업이 필요하다.
- 또한, EC2, RDS 모두 같은 VPC에 위치해야한다.
🎨 7.5 키 밸류 데이터베이스
📌 7.5.1 키 밸류 스토어 데이터베이스란
- 키 밸류 스토어(Key value store) 데이터베이스란 데이터의 형식의 관계없이 어떤 데이터에 대해서 특정 '키'가 되는 값을 결합하여 저장하는 방식의 데이터베이스이다.
- 줄여서 KVS라고 표기한다.
- NoSQL 데이터베이스의 대표적인 예이며 관계형 데이터베이스보다 역사가 오래되었다.
- 키라는 것은 데이터를 찾기 쉽게 하기 위한 라벨을 말한다.
- 관계형 데이터베이스와 다르게 유연성이 높아서 형식의 구해받지 않고 데이터를 입력할 수 있는 반면, 어떤 것이든 데이터로 저장하므로 상세하게 검색할 수는 없다.
- 대신 데이터에 대한 액세스가 빠르다.
- 최근에는 빅데이터나 IoT와 같은 대용량 데이터를 빠르게 처리하는 경우에도 사용되고 있어 다시 주목받고 있다.
- AWS의 키 밸류스터 데이터베이스 두 종류가 있다.
스토리지에 저장하는 DynamoDB
메모리에 저장하는 ElastiCache
📌 7.5.2 DynamoDB란
- Amazon DynamoDB는 키 밸류 스토어 데이터베이스이다.
- 관계형 데이터베이스에 맞지 않는 범용적 데이터를 저장하는 데 사용한다.
- 권기영 데이터베이스의 특징은 표 형태로 되어 있는 것과 테이블이 서로 연결되어 있다는 점이다.
- 즉, 미리 형식을 정해야 하며, 형식에 맞는 데이터만 입력할 수 있다.
- 키 밸류 스토어 데이터베이스는 데이터를 저장하는 형식이 정해져 있지 않다.
- 데이터끼리 연관 관계도 없다.
- SQL을 사용할 수 없고 고급 검색을 할 수 없다는 단점이 있지만, 그 대신 관계형 데이터베이스보다 응답 속도가 빠르다.
- 대규모 데이터를 처리하기 때문에 ACID(트랜잭션에 필요한 특성)트랜잭션, 데이터 암호화, 접근 제한 등의 서비스를 갖추고 있다.
- 테이블을 글로벌 테이블로 생성하면 전 세계 각 리전에 분산되어 복제되며, 각 리전의 테이블에 데이터가 갱신되면 자동으로 동기화된다.
📌 7.5.3 Amazon ElastiCache란
- Amazon ElastiCache란 인 메모리 데이터베이스(in-memory database)이다.
- 인 메모리 데이터베이스란 데이터베이스를 조작할 때마다 외부 기억 장치의 읽기/쓰기를 수행하지 않고, 빈번하게 읽고 쓰는 데이터는 일시적으로 메모리에 보관(캐시)하는 방식으로 메모리를 활용하여 처리 속도를 빠르게 하는 데이터베이스이다.
- DynamoDB는 스토리지에 저장하기 때문에인 메모리 데이터베이스인 ElastiCache가 DynamoDB보다 처리 속도가 더 빠르다.
- 대신 인스턴스를 재시작할 때 데이터가 삭제된다.
- 따라서 ElastiCache는 빠른 속도를 목적으로 하는 캐시 용도로 많이 사용된다.
- ElastiCache에는 Redis용과 Memcached용이 있으며 Redis와 Memcached는 대표적인 인 메모리형 키 밸류 스토어 DBMS이다.
#Women-in-Spring
#2024-11-완독-그림으로-이해하는-aws-구조와-기술