AWS가 MySQL 및 PostgreSQL을 호환해서 만든 RDBMS로 RDS와는 다른 AWS만의 RDBMS로 기존 소스들을 AWS에 맞게 고쳐서 만들어졌다.
특징
성능
오로라는 기존의 MySQL과 PostgreSQL 데이터베이스보다 뛰어난 성능을 제공합니다. 오로라는 분산 스토리지 및 복제 기능을 활용하여 처리량과 응답 시간을 향상시킵니다. 또한 자동 스케일링 기능을 통해 워크로드의 요구에 따라 자동으로 리소스를 조정할 수 있습니다.
확장성
오로라는 수평 및 수직 확장이 가능합니다. 수평 확장을 통해 여러 개의 인스턴스를 사용하여 데이터베이스 처리 능력을 증가시킬 수 있으며, 수직 확장을 통해 인스턴스 유형을 업그레이드하여 더 많은 리소스를 할당할 수 있습니다.
내구성
오로라는 데이터를 여러 가용 영역에 자동으로 복제하여 내구성을 보장합니다. 이는 장애 복구 및 고가용성을 제공하며, 데이터의 손실 없이 신뢰성 있는 운영을 가능하게 합니다.
보안
오로라는 데이터베이스 암호화를 통해 데이터의 보안을 강화할 수 있습니다. 데이터베이스 암호화는 저장 및 전송 중에 데이터를 보호합니다.
관리 편의성
AWS의 관리형 서비스로서, 오로라는 데이터베이스 관리 작업을 자동화하여 개발자 및 운영자의 부담을 줄입니다. 백업, 복원, 모니터링 등의 작업은 AWS가 관리하므로 데이터베이스 운영에 대한 작업 부담을 줄일 수 있습니다.
EC2 vs RDS vs Aurora
MySQL on EC2 | RDS MySQL | Aurora MySQL | |
MySQL 구성 | 자유도 높음 수동으로 서버 설치 |
자유도 낮음 쉽게 서버 추가 가능 |
자유도 낮음 쉽게 서버 추가 가능 |
Backup | 수동으로 백업 스크립트 작성 |
자동으로 백업 풀백업 및 증분백업 |
자동으로 백업 풀백업 및 증분백업 |
Restore | 수동으로 Restore | Full Restore 및 Pin Point Restore 가능 | Full Restore 및 Pin Point Restore 가능 |
Load Balancer | 수동 구축 | Master에 대해서만 가용성 보장 | Writer 및 Reader Endpoint 제공 |
Version | 자유도 높음 | AWS 에서 제공하는 것만 가능 | AWS 에서 제공하는 것만 가능 |
Upgrade | 자유도 높음 | AWS 에서 제공하는 것만 가능 | 강제 업데이트 가능 |
Failover | 수동 | Button 및 Active Master에 문제시 가동 | Button 및 Active Master에 문제시 가동 |
스토리지 | EBS | EBS | Shared Storage |
복제 지연 | 기존 IDC와 동일 | 기존 IDC 동일 | 100ms |
인스턴스 클래스
Serverless v2
서버리스 클래스는 일정한 작업 부하가 있는 응용 프로그램이나 트래픽 변동이 큰 환경에서 유용합니다. 작업량의 예측이 어려운 경우나 갑작스러운 트래픽 증가에 대응해야 할 때, 서버리스 인스턴스는 자동으로 필요한 확장성을 제공하여 안정적인 성능을 유지할 수 있습니다.
- 자동 확장/축소: 서버리스 인스턴스는 작업량에 따라 자동으로 확장 및 축소됩니다. 요청이 증가하면 인스턴스가 자동으로 확장되어 처리 능력을 높이고, 요청이 감소하면 자동으로 축소되어 리소스를 절약합니다.
- 비용 최적화: 서버리스 인스턴스는 사용한 리소스에 대해서만 비용을 지불합니다. 작업량이 적을 때는 자동으로 인스턴스가 축소되므로 불필요한 비용을 절감할 수 있습니다.
- 유연성: 서버리스 인스턴스는 필요한 시간 동안만 활성화되어 사용됩니다. 따라서 인스턴스를 효율적으로 활용하고, 요청이 없는 시간에는 비활성 상태로 유지하여 비용을 절감할 수 있습니다.
- 관리 편의성: 서버리스 인스턴스는 AWS가 백업, 복원, 패치, 보안 등의 관리 작업을 자동으로 처리합니다. 이를 통해 데이터베이스 관리에 대한 부담을 줄이고, 개발자는 핵심 비즈니스 로직에 집중할 수 있습니다.
R 클래스
R 클래스 인스턴스는 대규모 데이터 처리, 분석 작업, 메모리 집약적인 워크로드를 처리해야하는 경우에 유용합니다. 예를 들어 대규모 데이터베이스 분석, 데이터 웨어하우스 작업, 실시간 대시보드 등에 사용될 수 있습니다. 이 클래스는 뛰어난 성능과 메모리 용량을 제공하여 데이터베이스 응용 프로그램의 처리 요구 사항을 충족시킬 수 있습니다.
- 고성능 메모리: R 클래스 인스턴스는 높은 메모리 처리 능력을 제공합니다. 이를 통해 대규모 데이터베이스 쿼리, 분석 작업, 메모리 집약적인 작업을 처리할 수 있습니다.
- 높은 성능: R 클래스는 CPU 및 I/O 리소스에 대한 향상된 액세스를 제공하여 빠른 데이터베이스 작업을 지원합니다. 이는 처리량과 응답 시간을 개선하여 응용 프로그램의 성능을 향상시킵니다.
- 병렬 처리: R 클래스 인스턴스는 병렬 처리 기능을 갖추고 있어 동시에 여러 작업을 처리할 수 있습니다. 이는 대규모 트랜잭션 처리 또는 대용량 데이터 로드 작업과 같은 작업에 유용합니다.
- 분산 스토리지: R 클래스는 데이터를 분산 스토리지에 저장하여 데이터의 안정성과 내구성을 보장합니다. 분산 스토리지는 데이터를 여러 가용 영역에 자동으로 복제하여 장애 복구 및 고가용성을 제공합니다.
- 확장성: R 클래스 인스턴스는 수평 확장이 가능합니다. 여러 개의 인스턴스를 사용하여 데이터베이스 처리 능력을 증가시킬 수 있으며, 필요에 따라 인스턴스 유형을 업그레이드하여 더 많은 리소스를 할당할 수 있습니다.
T 클래스
T 클래스 인스턴스는 작은 규모의 애플리케이션, 테스트 및 개발 환경, 가변적인 트래픽 패턴을 가진 응용 프로그램에 적합합니다. 비용 효율성과 범용성을 추구하며, 작업량에 따라 자동으로 리소스를 조정하여 유연한 확장성을 제공합니다.
- 비용 효율성: T 클래스 인스턴스는 경제적인 가격으로 제공되어 비용을 절감할 수 있습니다. 사용량에 따라 비용이 유동적으로 결정되며, 작은 규모의 애플리케이션 및 워크로드에 적합합니다.
- 범용성: T 클래스는 다양한 작업을 처리할 수 있는 범용 인스턴스입니다. CPU 및 메모리를 균형 있게 제공하여 일반적인 응용 프로그램 및 데이터베이스 워크로드를 처리할 수 있습니다.
- 가변적인 CPU 성능: T 클래스 인스턴스는 "CPU 크레딧"이라는 개념을 사용하여 가변적인 CPU 성능을 제공합니다. CPU 크레딧은 작업량에 따라 증가하거나 감소하며, 작업량이 적을 때는 크레딧을 모았다가 높은 작업량이 발생할 때 사용할 수 있습니다.
- 자동 확장: T 클래스 인스턴스는 필요에 따라 자동으로 확장됩니다. 작업량이 증가하면 자동으로 더 많은 리소스를 할당하여 성능을 향상시키고, 작업량이 감소하면 자동으로 축소하여 비용을 절감합니다.
- 관리 편의성: T 클래스 인스턴스는 AWS가 백업, 복원, 모니터링 등의 관리 작업을 자동으로 처리합니다. 이를 통해 데이터베이스 운영에 대한 부담을 줄이고, 개발자는 핵심 비즈니스에 집중할 수 있습니다.
T 클래스를 서버리스 인스턴스보다 추천하는 이유
- 예측 가능한 비용: 서버리스 인스턴스는 사용한 리소스에 대해서만 비용을 지불하는 장점이 있지만, 트래픽 변동이 큰 경우 예측하기 어려울 수 있습니다. 반면에 T 클래스는 정해진 가격으로 인스턴스를 사용할 수 있으므로, 예측 가능한 비용 모델을 제공합니다.
- 유연한 CPU 성능: T 클래스는 가변적인 CPU 크레딧 시스템을 통해 CPU 성능을 제공합니다. 하지만 서버리스 인스턴스는 요청에 따라 자동으로 스케일링되는 특성 때문에 CPU 성능에 대한 예측이 어려울 수 있습니다. 개발 환경에서는 일시적으로 높은 CPU 성능이 필요한 경우가 있을 수 있으므로, T 클래스는 이러한 요구 사항을 더 잘 충족할 수 있습니다.
- 범용성: T 클래스는 다양한 작업을 처리할 수 있는 범용 인스턴스로 개발 환경에 적합합니다. 서버리스 인스턴스는 주로 특정한 워크로드 유형에 특화되어 있으므로, 다양한 작업을 처리해야 하는 개발 환경에서는 T 클래스가 더 적합할 수 있습니다.
- 개발자 제어: T 클래스는 인스턴스 유형, 크기, 수명주기 등을 개발자가 직접 제어할 수 있는 장점이 있습니다. 서버리스 인스턴스는 백엔드 시스템에서 자동으로 관리되므로 개발자는 제한된 제어 권한을 가집니다. 개발 환경에서는 개발자가 인스턴스 설정과 제어에 대한 유연성을 원할 수 있으므로 T 클래스가 더 적합할 수 있습니다.
하지만 서버리스 인스턴스는 트래픽 변동이 크거나 예측하기 어려운 경우에 유용하며, 비용 효율성과 자동 확장성을 원하는 경우에는 여전히 유용한 옵션이 될 수 있습니다. 상황에 맞게 인스턴스 클래스를 선택하는 것이 중요합니다.
'DevOps > AWS' 카테고리의 다른 글
OWASP Top 10 공격 패턴 (2) | 2024.07.14 |
---|---|
Session Manger 를 이용하여 EC2에 연결하기 (0) | 2023.06.18 |
[WAF] NestJS 애플리케이션 AWS에 배포하기 08 (0) | 2023.04.25 |
[CodeDeploy] NestJS 애플리케이션 AWS에 배포하기 07 (0) | 2023.03.31 |
[Github Actions] NestJS 애플리케이션 AWS에 배포하기 06 (0) | 2023.03.23 |