Amazon RDS

1023·7일 전
post-thumbnail

데이터베이스

데이터베이스는 데이터를 체계적으로 저장하고 필요할 때 검색/수정/삭제할 수 있도록 구조화해둔 데이터의 집합이다. 단순히 파일에 텍스트를 쌓아두는 것과 달리 데이터 간의 관계나 규칙을 정의해두고 일관된 방식으로 접근할 수 있게 만든 체계이다.


DBMS

DBMS(Database Management System)는 데이터베이스를 생성/관리/운영하는 소프트웨어다. 사용자가 직접 파일을 다루는 대신 DBMS를 통해 데이터를 저장하고 질의(쿼리)하면 DBMS가 내부적으로 저장 구조/동시 접근 제어/백업 같은 걸 처리해준다. MySQL, PostgreSQL, Oracle, SQL Server 같은 관계형 DBMS(RDBMS)와 MongoDB, DynamoDB 같은 NoSQL DBMS로 크게 나뉜다.


RDS

RDS(Relational Database Service)는 AWS가 제공하는 완전관리형 관계형 데이터베이스 서비스다. MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Amazon Aurora 중 원하는 엔진을 선택해서 쓸 수 있고 서버 프로비저닝/OS 패치/백업/장애 복구 같은 운영 작업을 AWS가 대신 처리해준다. 직접 EC2에 데이터베이스를 설치해서 운영하는 것과 비교하면 인프라 관리 부담 없이 데이터베이스 자체에만 집중할 수 있다는 차이가 있다.


RDS 서비스 기능

  • 자동 백업: 설정한 보존 기간 동안 매일 자동으로 백업을 수행하고 특정 시점으로 복구(Point-in-Time Recovery)할 수 있다.
  • 다중 AZ 배포: 기본 인스턴스와 별도로 다른 가용 영역에 대기 인스턴스를 동기 복제해두고, 장애 발생 시 자동으로 전환(Failover)한다.
  • 읽기 전용 복제본(Read Replica): 읽기 트래픽을 분산하기 위해 복제본을 추가로 둘 수 있다. 쓰기는 기본 인스턴스에서만 처리하고 읽기는 복제본으로 분산하는 구조다.
  • 자동 소프트웨어 패치: 데이터베이스 엔진의 보안 패치/마이너 버전 업데이트를 자동으로 적용한다.
  • 모니터링: CloudWatch와 연동해서 CPU/메모리/스토리지/연결 수 같은 지표를 실시간으로 확인할 수 있다.
  • 암호화: 저장 데이터와 전송 중 데이터를 암호화할 수 있다.

RDS 인스턴스 클래스

RDS 인스턴스는 용도에 따라 몇 가지 계열로 나뉜다.

  • 범용(General Purpose, T/M 계열): 컴퓨팅/메모리/네트워크 자원이 균형 잡혀 있어 대부분의 워크로드에 적합하다.
  • 메모리 최적화(Memory Optimized, R/X 계열): 메모리 대비 가격 효율이 높아서 대용량 데이터셋을 다루거나 메모리 집약적인 애플리케이션에 적합하다.
  • 버스터블 성능(T 계열): 평소에는 기본 성능으로 돌다가 필요할 때 크레딧을 사용해서 순간적으로 성능을 끌어올리는 방식이다. 상시 고성능이 필요하지 않은 소규모 워크로드에 비용 효율적이다.

인스턴스 클래스를 고를 때는 EC2와 마찬가지로 워크로드의 성격(상시 고부하인지, 간헐적인지)에 따라 계열을 먼저 정하고, 그 안에서 크기를 조정하는 방식으로 접근하면 된다.


RDS 장단점

장점

  • 서버 프로비저닝/패치/백업 같은 운영 부담이 줄어든다.
  • 다중 AZ와 읽기 전용 복제본으로 가용성과 확장성을 비교적 쉽게 확보할 수 있다.
  • 여러 데이터베이스 엔진 중 필요한 것을 선택할 수 있다.

단점

  • 기본 운영체제나 데이터베이스 엔진 내부 설정에 대한 접근 권한이 제한적이라 세밀한 커스터마이징이 어렵다.
  • 특정 확장 기능이나 플러그인은 지원되지 않을 수 있다.
  • 직접 EC2에 설치하는 것보다 비용이 더 들 수 있다.

RDS 사용절차

RDS를 쓰는 기본 흐름은 이렇다.

데이터베이스 엔진 선택 → 인스턴스 클래스/스토리지 설정 → 네트워크(VPC/서브넷 그룹)와 보안 그룹 구성 → 인스턴스 생성 → 엔드포인트로 애플리케이션에서 접속

생성 시 다중 AZ 여부, 백업 보존 기간, 퍼블릭 접근 허용 여부도 함께 설정한다. 생성이 끝나면 RDS가 발급하는 엔드포인트(DNS 주소)로 애플리케이션에서 접속하면 되고, 이후 필요에 따라 읽기 전용 복제본을 추가하거나 인스턴스 크기를 조정할 수 있다.


키밸류 데이터베이스

관계형 데이터베이스와 달리, 키와 값의 쌍으로 데이터를 저장하는 NoSQL 방식도 있다. AWS에서는 대표적으로 두 가지를 제공한다.

DynamoDB는 완전관리형 키밸류/문서 데이터베이스다. 스키마를 미리 엄격하게 정의하지 않아도 되고, 트래픽에 따라 자동으로 확장되며, 응답 속도가 한 자릿수 밀리초 단위로 빠른 게 특징이다. 세션 정보, 사용자 프로필, 게임 리더보드처럼 빠른 조회가 중요하고 데이터 구조가 유연해야 하는 경우에 적합하다.

ElastiCache는 완전관리형 인메모리 캐싱 서비스로, Redis나 Memcached 엔진을 지원한다. 데이터를 디스크가 아니라 메모리에 두기 때문에 조회 속도가 매우 빠르고, 보통 RDS나 DynamoDB 앞단에 캐시 레이어로 두어 자주 조회되는 데이터를 미리 담아두는 용도로 쓴다. 매번 데이터베이스까지 가지 않고 캐시에서 먼저 응답하게 해서 데이터베이스 부하를 줄이고 응답 속도를 높이는 구조다.

관계형 데이터베이스(RDS)가 데이터 간의 관계와 트랜잭션 일관성이 중요한 경우에 적합하다면, 키밸류 데이터베이스는 단순한 구조의 데이터를 빠르게 읽고 쓰는 데 최적화되어 있다는 차이가 있다.


📍 참고 자료: AWS 공식 문서, 패스트캠퍼스 강의 <실전 DevOps의 모든 것>, 책 <그림으로 이해하는 AWS 구조와 기술>

0개의 댓글