RDS란 AWS에서 제공하는 관계형 데이터베이스 관리 서비스입니다.
AWS RDS는 MySQL, MariaDB, PostgreSQL, Oracle 등 다양한 관계형 데이터베이스를 클라우드 환경에서 쉽게 관리하고 사용할 수 있도록 지원하는 서비스입니다. 기존에 서버에 직접 데이터베이스를 설치하고 관리해야 했던 번거로움을 덜어주며, 높은 가용성과 확장성, 편리한 관리 기능을 제공합니다.
일반적으로, 로컬 환경(개인 노트북 등)에 MySQL 같은 데이터베이스를 설치하고 연결해서 사용할 수 있습니다. 하지만 실제 서비스를 배포하려면 로컬 환경에 설치된 데이터베이스를 사용할 수 없습니다.
서버가 외부에서 데이터베이스에 접근하려면 데이터베이스도 인터넷에서 접근 가능한 상태로 배포되어야 합니다.
이를 해결하기 위해 AWS RDS와 같은 클라우드 데이터베이스 서비스 활용합니다. RDS는 배포 문제를 해결하는 것 외에도 다음과 같은 부가적인 장점을 제공합니다.
RDS는 데이터베이스를 주기적으로 백업하고, 필요할 때 쉽게 복구할 수 있도록 지원합니다. 이렇게 함으로써 데이터 손실의 위험을 줄일 수 있습니다.
RDS는 성능 지표(CPU 사용률, 메모리 등)를 실시간으로 모니터링할 수 있도록 CloudWatch와 통합됩니다. 문제가 발생하면 알림을 받을 수 있습니다.
다중 AZ(Availability Zone) 배포는 RDS가 데이터베이스를 여러 물리적 위치(가용 영역)에 복제하여 장애 상황에서도 데이터베이스를 계속 사용할 수 있도록 하는 기능입니다.
이해하기 쉽게 설명하면, 데이터베이스를 여러 복사본으로 만들어 서로 다른 데이터 센터에 저장한다고 생각하면 됩니다.
만약 한 곳(예: 서버실에 정전)이 문제가 생기더라도, 다른 곳에 저장된 데이터베이스로 서비스를 계속 제공할 수 있습니다. 이렇게 함으로써 데이터 손실이나 서비스 중단을 방지하여 고가용성을 제공할 수 있습니다.
워크로드 증가에 따라 스토리지 및 성능을 자동으로 확장할 수 있습니다.
이해하기 쉽게 설명하면, 데이터베이스를 사용하는 사람이 많아지거나 데이터가 폭증해도, RDS가 자동으로 필요한 리소스를 추가해준다고 생각하면 됩니다.
이렇게 함으로써 데이터베이스 관리에 필요한 시간과 노력을 절약할 수 있습니다.
RDS를 사용하지 않고, EC2에 MySQL 등의 관계형 데이터베이스를 직접 설치해서 사용하는 방법을 사용할 수도 있습니다.
이는 RDS를 사용하지 않고 하나의 EC2 인스턴스에 웹 서버와 데이터베이스를 같이 설치하는 구성으로, 다음과 같은 장점이 있습니다.
RDS를 사용하지 않으면 데이터베이스 서비스 비용을 절약할 수 있습니다.
EC2에 직접 설치하면, 자신이 원하는 방식으로 설정을 커스터마이징할 수 있습니다.
하지만 이 방식은 실제 운영 환경에서는 권장되지 않습니다.
단일 장애점(Single Point of Failure)은 시스템에서 하나의 구성 요소에 문제가 생기면 전체 서비스가 중단되는 취약점을 의미합니다.
EC2에 웹 서버와 데이터베이스를 같이 설치하면, EC2 인스턴스에 장애가 발생했을 때 데이터베이스도 함께 다운됩니다.이러한 구조는 서비스의 안정성을 크게 위협하기 때문에 실제 운영 환경에서는 피해야 합니다.
직접 설치한 데이터베이스는 백업, 모니터링, 보안 패치 등을 모두 수동으로 관리해야 합니다. 이는 많은 시간과 노력을 요구하며, 실수가 발생할 여지가 큽니다.
EC2 한 대에 설치된 데이터베이스는 트래픽이 증가할 경우 성능이 한계에 도달하기 쉽습니다. 반면, RDS는 간단한 설정으로 성능을 확장할 수 있습니다.
메뉴에서 RDS를 선택하고, 리전을 확인 후 데이터베이스 생성을 선택합니다.
데이터베이스 생성 방식은 표준 생성을 선택하고, 엔진 유형은 MySQL을 선택합니다.
템플릿은 프리 티어를 선택합니다.
DB 인스턴스 식별자(DB 이름)를 작성한 후, 마스터 사용자 이름(DB 접근 아이디)과 마스터 암호(DB 접근 암호)를 작성합니다.
인스턴스 구성에서 사양은 프리티어 사양으로 자동 선택되어 있습니다. 스토리지 유형은 최신 버전인 gp3를 선택하고, 할당된 스토리지는 20GiB를 사용합니다.
스토리지 설정에서 스토리지 자동 조정 활성화를 해제합니다.
연결 부분에서 퍼블릭 액세스는 "예"를 체크하도록 합니다.
다른 설정은 기본값으로 유지하고, 데이터베이스 생성을 선택하여 생성을 완료합니다.
실제 데이터베이스 생성까지는 약 5분 정도 소요됩니다.
RDS 보안 그룹 설정을 위해 EC2 - 보안 그룹 - 보안 그룹 생성을 선택합니다.
보안 그룹 이름, 설명을 작성합니다. 인바운드 규칙은 MYSQL/Aurora 유형을 선택합니다. 이 유형을 선택하면 프로토콜과 포트는 자동으로 지정됩니다. 소스 부분에서는 모든 IP 주소에서 접근을 허용하도록 설정합니다.
나머지 설정은 기본값으로 유지하고, 보안 그룹 생성을 선택합니다.
RDS로 돌아와서, 생성한 RDS DB 인스턴스를 선택합니다.
수정을 선택합니다.
연결 부분에서 생성한 보안 그룹을 선택하고, default 보안 그룹 선택을 해제한 후 페이지 맨 아래의 계속 버튼을 선택합니다.
즉시 적용을 선택하고, DB 인스턴스 수정을 선택하여 RDS 보안 그룹 설정을 완료합니다.
RDS - 파라미터 그룹 - 파라미터 그룹 생성을 선택합니다.
파라미터 그룹 이름, 파라미터 그룹 설명을 작성합니다.
엔진 유형은 MySQL Community를 선택합니다.
RDS에서 MySQL 8.xx 버전을 선택하였으므로, 파라미터 그룹 패밀리는 8.0 버전을 선택합니다.
생성한 파라미터 그룹을 선택합니다.
편집을 선택합니다.
character를 검색합니다.
아래 속성을 모두 utf8mb4
로 설정합니다.
character_set_client
character_set_connection
character_set_database
characater_set_filesystem
characater_set_results
character_set_server
- utf8mb4는 표준 UTF-8 인코딩을 완전히 지원합니다. 최대 4바이트까지 저장 가능하며, 모든 유니코드 문자를 표현할 수 있습니다.
- 이를 통해 한글, 중국어, 일본어 등 다국어뿐만 아니라 이모지(이모티콘), 고대 문자, 수학 기호 같은 특수한 유니코드 문자도 지원합니다.
- utf8mb4는 MySQL, MariaDB에만 해당하는 속성입니다.
collation
을 검색합니다.
아래 속성을 모두 utf8mb4_unicode_ci
로 설정합니다.
collation_connection
collation_server
Collation(정렬 규칙)은 데이터베이스에서 문자 데이터를 정렬하고 비교하는 방법을 정의하는 설정입니다.
- Collation은 데이터베이스가 문자를 "어떻게 정렬하고 비교할지" 정하는 규칙입니다.
- 올바른 Collation 설정을 통해 다양한 언어, 문자, 이모티콘까지 정확하게 처리할 수 있습니다.
- utf8mb4_unicode_ci는 유니코드 표준 기반으로 문자를 비교하고 정렬하며, 대소문자 구분 없이 동작합니다.
- collation_connection: 클라이언트와 데이터베이스 연결 시 비교/정렬 기준을 설정합니다.
- collation_server: 서버의 기본 비교/정렬 기준으로, 데이터베이스와 테이블 생성 시 적용됩니다.
time_zone
을 검색합니다.
time_zone
을 Asia/Seoul
로 설정합니다.
time_zone은 데이터베이스가 날짜와 시간 데이터를 처리할 때 기준으로 삼는 시간대를 설정하는 옵션입니다.
- Asia/Seoul은 한국 표준시(KST, UTC+9)를 나타냅니다.
- 이 설정은 데이터 저장, 조회, 시간 연산 시에 한국 시간을 기준으로 데이터를 처리하도록 도와줍니다.
RDS - 데이터베이스 선택 - 수정 - 추가 구성 부분을 설정합니다.
생성한 DB 파라미터 그룹으로 변경 후 수정을 완료합니다.
변경 사항을 적용 및 저장하기 위해 RDS를 재부팅합니다.
DBeaver를 설치한 후, 연결 생성을 선택하고, MySQL을 선택합니다.
RDS 접속을 위해서는 엔드포인트와 포트 번호가 필요합니다.
Server Host 부분에는 RDS 엔드포인트를 입력합니다.
포트 번호는 3306으로 설정합니다.
Username과 Password는 RDS 생성 시 설정한 아이디와 암호를 입력합니다.
Test Connection을 통해 연결 상태를 확인할 수 있습니다.
엔드포인트(Endpoint)는 특정 리소스(예: 서버, 데이터베이스 등)에 접근할 수 있도록 제공되는 URL(주소)을 의미합니다. 쉽게 말해, 우리가 AWS의 EC2, RDS와 같은 리소스에 접근하기 위해 사용하는 입구 역할을 하는 주소입니다.
새 데이터베이스를 생성합니다.
sys 데이터베이스는 기본 데이터베이스로 설정에 관련된 내용을 포함합니다.
데이터베이스 - 삭제할 데이터베이스 선택 - 작업 - 삭제
스냅샷 생성 및 백업 보존 체크를 해제합니다.
주의사항을 체크하고, 필드를 입력한 후 삭제를 선택하여 데이터베이스 삭제를 완료합니다.
현업에서는 보통 EC2와 RDS를 분리해서 구성합니다.
웹 서버와 데이터베이스를 분리하면 각 컴포넌트를 독립적으로 관리할 수 있어 장애 복구나 확장성 측면에서 유리합니다. 또한 RDS가 제공하는 다양한 편리한 기능들 덕분에, 운영 효율성이 크게 향상됩니다.
하지만, 예산이 한정된 경우 또는 개인 프로젝트나 학습용으로 사용할 때는 비용 절감을 위해 하나의 EC2에 데이터베이스를 직접 설치해서 사용하는 것도 가능합니다. 이 경우에도 정기적인 백업과 모니터링에 신경을 써야 합니다.