Amazon Redshift
Redshift는 완전 관리형 데이터 웨어하우스 (DWH: Data Warehouse) 서비스이다
[Data Warehouse]
- 데이터 웨어하우스는 여러 시스템에서 데이터를 수집하고 통합 및 저장하여 분석에 사용하는 데이터베이스이다.
- 축적된 데이터를 분석하여, 그 결과는 시스템 효율화나 경영 개선 등의 의사 결정에 활용된다.
- 이처럼 대용량 데이터를 분석하여 경영에 도움이 되는 것을 "BI: 비즈니스 인텔리전스"라고 하며, Redshift는 BI 분야에서 사용된다. (AWS의 BI 툴로는 QuickSight가 있다)
- Data Warehouse에서는 기본적으로 데이터를 삭제하거나 업데이트하지 않고 계속해서 추가(축적)되기 때문에 일반적인 데이터베이스보다 더 많은 용량이 필요하다.
Redshift는 PB(페타바이트, TB: 테라바이트의 상위 단위) 규모의 스토리지를 지원하여 대량의 데이터를 처리할 수 있다.
Redshift의 아키텍처 (참고로만..)
Redshift는 다음과 같은 구성으로 데이터를 관리한다.
- Leader Node (리더 노드) -
각 클러스터에 하나만 존재하는 리더 역할을 하는 노드이다. 애플리케이션 등의 요청을 받아 각 Compute Node에 작업을 분배하고, 처리된 결과를 종합하여 다시 애플리케이션으로 반환하는 역할을 한다.
- Compute Node (컴퓨트 노드) -
Leader Node의 명령을 처리하는 노드이다. 각 Compute Node는 CPU, 메모리, 스토리지를 탑재하고 있으며, 컴퓨트 노드 수를 늘림으로써 성능을 향상시킬 수 있다.
- Node Slice (노드 슬라이스) -
Compute Node의 리소스를 더 세분화한 단위를 노드 슬라이스라고 부른다. 예를 들어 각 노드는 2개의 슬라이스로 구성될 수 있으며, 슬라이스의 수는 Compute Node의 인스턴스 타입에 따라 달라진다.
Redshift 기능
🔩 데이터의 로드 및 내보내기
Redshift에서는 Amazon S3에 있는 데이터 파일을 로드(읽기)하거나, S3로 데이터를 내보내기(저장)할 수 있다.
- 사용할 수 있는 파일 형식에는 "Structured 데이터 형식(CSV 등)"과 "Semi-structured 데이터 형식(Parquet, ORC, JSON 등)"이 있으며, 이 파일들을 압축한 형식(gzip, bzip2 등)도 다룰 수 있다.
- Structured 데이터는 RDBMS에서 사용되는 형식으로, 행과 열의 개념이 있는 데이터를 의미한다.
- 행과 열의 개념이 없는 데이터를 Unstructured 데이터라고 한다. 그 중에서도 특정 규칙성을 가진 데이터(XML, JSON 등)를 Semi-structured 데이터라고 한다.
- S3에 저장된 데이터를 Amazon Athena 등의 다른 서비스에서 활용할 수 있다. 참고로, S3처럼 Structured 및 Semi-structured 데이터를 한 곳에서 관리할 수 있는 장소를 Data Lake라고 부른다.
🔩 Redshift의 백업
Redshift는 Snapshot(스냅샷)을 사용하여 백업을 수행한다.
스냅샷은 Redshift의 디스크 이미지를Amazon S3에 저장한다.
- 백업 스케줄(예: 8시간마다, 12시간마다)은 사용자가 직접 설정할 수 있으며, 스냅샷은 일정 시간이 지나면 자동으로 삭제된다.
- 스냅샷은 수동으로 생성할 수 있다. 수동으로 생성한 스냅샷은 저장 기간을 무기한(indefinitely)으로 설정할 수도 있다.
- 스냅샷은 다른 리전으로 저장할 수도 있다. 이를 "Cross Region Snapshot"이라고 한다.
- 리전을 넘나들기 때문에 데이터 전송 비용이 추가로 발생하지만, 재해에 대비하거나 다른 리전에서 Redshift 클러스터를 재구축하려는 경우에 유용하게 사용할 수 있다.
- 리전을 넘나들기 때문에 데이터 전송 비용이 추가로 발생하지만, 재해에 대비하거나 다른 리전에서 Redshift 클러스터를 재구축하려는 경우에 유용하게 사용할 수 있다.
🔩 Redshift Spectrum
기존의 Redshift에서는 데이터가 축적되고 대용량화되면 S3에 있는 데이터를 Redshift로 로드하는 데 시간이 많이 걸렸다. 이 문제를 해결한 것이 Redshift Spectrum이다.
- Redshift Spectrum은 S3에 있는 데이터를 Redshift로 가져오는 것이 아니라, S3의 데이터를 외부 테이블로 참조할 수 있게 해주는 기능이다.
- S3의 데이터(외부 테이블)는 여러 Redshift 클러스터에서 접근할 수 있으며, Redshift 내부 데이터와 S3 상의 데이터에 대해 쿼리를 실행할 수 있다
- 사용 빈도가 낮은 데이터를 S3에 보관함으로써 Redshift의 디스크 공간을 절약할 수 있다는 장점도 있다.
🔩 Redshift ML
Redshift ML은 Redshift 내에서 기계 학습 모델을 생성, 훈련, 배포하고, SQL을 사용하여 대규모 데이터 세트에 대해 예측 분석을 수행하는 서비스이다.
기존에는 데이터베이스의 데이터를 사용한 기계 학습을 위해 Amazon SageMaker 같은 기계 학습 서비스나 Python과 같은 프로그래밍 언어의 지식이 필요했지만, Redshift ML의 등장으로 SQL에 익숙한 데이터베이스 개발자도 기계 학습 프로세스를 구축할 수 있게 되었다.
또한 Redshift 내에서 SQL만으로 기계 학습을 완료할 수 있어 작업 효율성을 높일 수 있다.
🔩 Redshift Serverless
Redshift Serverless는 데이터 웨어하우스의 인프라 관리를 없애고, 자동 확장 및 사용량 기반 과금제로 유연하고 비용 효율적인 데이터 분석을 가능하게 하는 서비스이다.
클러스터나 노드 관리는 AWS에서 수행하므로 운영이 간소화되고, 손쉽게 데이터 분석을 시작할 수 있다.