◇ 공부 기록용으로 작성하였으니 틀린 점, 피드백 주시면 감사하겠습니다 ◇
AWS Data Pipeline(사용 비추천)
데이터를 처리하거나 이동시키는 Full managed 서비스이다.
Data Pipeline은 지정한 주기로 데이터를 변환(ETL)하거나 처리하여 다른 AWS 서비스에 데이터를 전송할 수 있다.
Data Pipeline 특징
- Data Pipeline은 개발용 GUI가 제공되어 쉽게 데이터를 처리 가능하다.
- AWS뿐만 아니라 온프레미스 데이터도 처리 가능하다.
- 주로 EC2, RDS, S3, EMR에서 사용할 수 있다.
사용 예시)
예시) RDS / EC2 → S3
EC2 또는 RDS에 있는 데이터의 확장자를 변경시켜서 매일 S3에 전송하기
단순히 데이터를 S3와 같은 곳에 주기적으로 복사하거나 이동시키는 작업일 경우
Glue보다 Data Pipeline을 사용하는게 낫다.
Data Pipeline 비추천 이유
Data Pipeline는 AWS측에서도 사용을 비추천하는 것 같다.
Data Pipeline 대신 AWS Glue 또는 AWS Step Functions의 사용을 추천하는 것 같다.
(이 서비스에 관한 추가적인 개발이 없을거같다) https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/migration.html
참고)
Glue는 서버리스 서비스이지만, Data Pipeline은 처리가 실행될 때 EC2 인스턴스를 실행한다.
또한, Glue는 데이터 변환 처리를 위해 Apache Spark와 Scala를 사용하므로, 이들을 이용하고 싶다면 Glue를, 그렇지 않은 경우에는 Data Pipeline을 고려하는 식으로 사용할 수 있다.
AWS Glue
Serverless (AWS Managed 형태)의 ETL(Extract, Transform, Load) 서비스이다.
AWS Glue 특징
- ETL(Extract, Transform, Load) 툴이다.
- 특히 대량의 데이터를 사용하는 빅데이터, 기계 학습(ML)등에 적합한 ETL 서비스이다.
- Serverless이기 때문에 운영 부담이 줄고, 데이터의 전처리를 쉽고 빠르게 할 수 있다.
- 개발자들은 인프라쪽에 설정과 관리 부담이 줄어든다
- 기본적으로 ETL을 통해서 데이터를 Data Lake(i.e. S3)나 Data Warehouse(i.e. Redshift)에 이동시킨다.
- 다른 AWS서비스와 연동: S3, RDS, Redshift, JDBC
- Glue는 ETL 작업을 스케줄링하는 기능을 제공한다. 특정 시간이나 이벤트에 따라 ETL 자동 실행하도록 예약가능.
- Glue는 ETL을 위한 코드를 자동으로 생성한다.
- Glue의 Console에서 몇 가지 설정만 하면 자동으로 Python이나 Scala 코드를 생성해준다.
Glue 주요 기능
Glue 흐름
데이터 소스(예:S3, RedShift) → Crawler → Data Catalog → ETL engine (Jobs) → 데이터 타겟(예:S3, RedShift)
0. Data Source (데이터 소스)
AWS Glue로 ETL하기 위해서 데이터를 가져오는 장소
Data Source 예시) S3, RDS, Redshift, DynamoDB, DocumentDB, Kinesis Data Stream, 온프레미스의 데이터베이스
1. Crawler (크롤러) : 데이터 카탈로그 작성
"Crawler"는 데이터 소스(데이터 스토어)에서 데이터를 추출하고 "Data Catalog(데이터 카탈로그)"를 작성한다.
스키마와 같은 metadata를 데이터 카타로그에 저장한다.
데이터 카탈로그에 저장되는 정보는 테이블 형식이며, 이를 작성하는 것이 크롤러(Crawler)의 역할이다.
2. Data Catalog (데이터 카탈로그) : 데이터의 메타데이터 저장
"Data Catalog"는 추출된 데이터의 메타데이터(데이터의 속성 정보)를 저장하는 저장소이자 중앙에서 관리한다.
이는 데이터 그 자체를 저장하는게 아니라, 메타데이터(데이터에 대한 정보)만 저장한다. 데이터 소스에서 어떤 데이터를 어떤 방법으로 추출할지에 대한 ETL처리에 관한 설정 정보를 저장한다.
메타데이터 예시) 데이터 파일의 위치, 스키마(구조), 포맷, 테이블 정의 등
예를 들어, S3에 있는 데이터 파일의 위치나 그 파일의 구조(테이블의 열, 데이터 형식 등)를 Data Catalog에 저장하지만, 실제 데이터 파일은 S3나 다른 데이터 저장소에 그대로 남아 있다.
참고로, AWS Glue로 생성한 "Data Catalog"는 Amazon EMR이나 Amazon Athena와 같은 분석 및 쿼리 실행 서비스에서도 참조할 수 있다. Glue의 크롤러로 추출한 데이터에 대해 Athena에서 SQL 쿼리를 실행하는 등 활용이 가능하다.
※Amazon EMR: 빅데이터의 처리 및 분석을 수행하는 서비스.
※Amazon Athena: S3 내의 데이터에 대해 직접 SQL 쿼리를 실행할 수 있는 서비스.
3. ETL Engine - Jobs
작성된 "Data Catalog" 를 기반으로 "ETL 엔진"이 데이터 소스에서 데이터를 추출하고, 데이터 타겟으로 데이터를 내보내는 처리를 수행한다.
이 데이터의 변환 및 타겟으로 내보내는 처리를 "잡(Job)"이라고 부른다.
변환 처리는 기존의 ETL 도구인 Apache Spark나 Scala를 사용해 자동으로 생성하거나, 생성된 스크립트를 직접 편집할 수 있다. (Python이나 Scala로 작성된 스크립트 사용가능)
4. Data Target
Glue가 데이터를 추출하여 가공한(ETL) 후, 데이터를 보관하는 장소를 뜻한다.
Data Stores의 예시) S3, RDS, Redshift, DynamoDB, 온프레미스의 데이터베이스
[AWS Glue Studio]
ETL 작업을 시각적으로 설계하고 모니터링할 수 있는 사용자 인터페이스를 제공한다.
[AWS Glue Bookmark]
AWS Glue의 "북마크(bookmark)"는 ETL(Extract, Transform, Load) 작업 중에 중복 데이터(이미 ETL 작업 돌린 데이터)를 방지하고 데이터 처리의 지속성을 유지하기 위한 기능이다.
북마크는 이전에 처리된 데이터를 추적하고, 다음 작업 실행 시 새로운 데이터만 처리되도록 도와준다.
즉, 이미 ETL 작업 했는데 또 ETL 작업하면 아주 비효율적이기 때문에, 이러한 문제가 없도록 새로운 데이터만 ETL 작업하도록 해주는 기능이다.
'클라우드(AWS)' 카테고리의 다른 글
[AWS] DataSync란? 쉽게 개념 및 특징 정리 (AWS로 데이터 가져오기) (1) | 2024.06.08 |
---|---|
[AWS] Query API란? 쉽게 개념 정리 (1) | 2024.06.07 |
[AWS] Amazon Athena란? 쉽게 개념 정리 (직접 S3 데이터 쿼리하기) (1) | 2024.06.07 |
[AWS] Amazon CloudFront와 CDN란? 쉽게 특징 정리 (캐시, 엣지로케이션) (0) | 2024.06.07 |
[AWS] Elastic Beanstalk란? 쉽게 개념 정리 [Deploy Policy: All at One, Rolling, Immutable, Traffic Splitting] (0) | 2024.06.06 |