Amazon Web Services 한국 블로그
AWS Glue 정식 출시 – 완전 관리형 ETL 서비스
오늘 AWS Glue 서비스가 정식 출시되었습니다. AWS Glue는 완전 관리형, 서버리스 기반 클라우드 데이터 추출, 변환 및 로드 (ETL) 서비스입니다. 이 서비스는 몇 가지 매우 중요한 방식으로 다른 ETL 서비스 및 소프트웨어 플랫폼과 다릅니다.
첫째, Glue는 “서버가 필요하지 않습니다.” 어떤 인프라 자원도 프로비저닝하거나 관리 할 필요가 없으며, Glue 실행될 때만 비용을 지불합니다. 둘째, Glue는 많은 데이터 소스, 데이터 유형 및 다양한 유형의 파티션에서 스키마를 자동으로 감지하고 추론 할 수 있는 크롤러를 제공합니다. 편집, 버전 관리, 질의 및 분석을 위해 이러한 생성 된 스키마를 중앙 데이터 카탈로그에 저장합니다. 셋째, Glue는 자동으로 ETL 스크립트 (Python 기반)를 생성하여 원본 형식의 데이터를 대상 형식으로 변환합니다. 마지막으로, Glue를 사용하면 개발자가 자신이 선호하는 도구를 사용하여 ETL 스크립트로 엔드 포인트를 만들 수 있습니다. 자, 실제 예제를 살펴 보도록 합시다.
Crawlers
먼저 Amazon S3의 항공편 데이터에 대한 크롤러를 만들어야 합니다. Glue 콘솔에서 Crawlers를 선택하고 거기에서 온 스크린 프롬프트를 따릅니다. 첫 번째 데이터 소스로 s3://crawler-public-us-east-1/flight/2016/csv/
를 지정할 것입니다 (필요할 경우 나중에 추가 할 수 있습니다). 다음으로 flight라고 하는 데이터베이스를 만들고 테이블에 항공편의 접두어도 지정합니다.
크롤러는 데이터 세트를 거쳐 다양한 폴더(이 경우에는 일년 데이터)를 통해 파티션과 스키마를 감지하며 테이블을 만듭니다. 추가 데이터 소스와 작업을 크롤러에 추가하거나 데이터를 동일한 데이터베이스로 푸시하는 별도의 크롤러를 만들 수 있지만 자동 생성 된 스키마를 살펴 보겠습니다.
BIGINT에서 INT로 이동하여 일년으로 빠르게 스키마를 변경하려고 합니다. 필요한 경우 스키마의 두 버전을 비교할 수 있습니다.
이제 데이터를 올바르게 구문 분석하는 방법을 알게 되었으므로, 필요한 변경을 할 수도 있습니다.
ETL Jobs
이제 작업 하위 콘솔로 이동하여 Add Job를 클릭합니다. 이름을 설정하고, 데이터 소스를 선택한 후, 임시 파일을위한 S3 위치를 묻는 메시지를 따릅니다. 다음으로 “Create tables in your data target”를 지정하여 타겟을 추가하고, Parquet format으로 S3 위치를 목표로 지정합니다.
다음을 클릭하면 Glue가 제안한 다양한 매핑을 보여주는 화면이 나타납니다. 이제는 필요에 따라 수동으로 열을 조정할 수 있습니다.이 경우에는 X 버튼을 사용하여 필요 없는 열 몇 개를 제거합니다.
이를 통해 개발자에게 유용한 부분으로 넘어갈 수 있습니다.
Glue는 PySpark 스크립트를 생성하여 지금까지 제공 한 정보를 기반으로 데이터를 변환합니다. 왼쪽에는 ETL 작업의 흐름을 보여주는 다이어그램이 있습니다. 오른쪽 상단에는 주석이 달린 데이터 소스와 대상 등 기타 기능을 추가하는 데 사용할 수 있는 몇 가지 버튼이 있습니다. 이것은 transform을 클릭하면 얻을 수 있는 인터페이스입니다.
데이터 변환 또는 추가 데이터 소스를 추가하면, Glue가 왼쪽에 있는 다이어그램을 업데이트하여 데이터 흐름을 효과적으로 시각화 합니다. 또한, 원하는 코드를 콘솔에 작성하여 실행할 수도 있습니다. 현재 작업에 다른 작업, 일정 또는 작업 완료시 트리거를 추가 할 수 있습니다. 이를 통해, 더 많은 항공편 데이터를 추가 할 수 있어 동일한 데이터를 S3 형식으로 다시 읽어올 수 있습니다.
여기서 ETL 작업을 코드로 저장하는 방식의 장점을 잠깐 살펴 봅니다. 프로그램 코드는 쉽게 변경 혹은 테스트 가능하며 버전을 통해 다양한 사람이 공유할 수 있습니다. 개발자들은 매일 코드를 작성하기 때문에, 손쉽게 데이터 처리를 위한 코드를 만들어 효율적으로 활용 가능합니다.
개발용 엔드 포인트 및 노트북(Notebooks)
개발용 엔드포인트는 Glue 스크립트를 개발하고 테스트하는 데 사용되는 환경입니다. Glue 콘솔에서 “Dev endpoints”로 이동하면 오른쪽 상단의 “Add endpoint”를 클릭하여 시작할 수 있습니다. 그런 다음 자체를 참조하는 보안 그룹 인 VPC를 선택하고 제공 준비가 완료 될 때까지 기다립니다.
일단 프로비저닝이 완료 되면 조치로 가서 노트북 서버 생성을 클릭하여 Apache Zeppelin 노트북 서버를 생성 할 수 있습니다. 인스턴스에 IAM 역할을 부여하고 데이터 소스와의 대화 권한이 있는지 확인합니다. 그런 다음 서버에 SSH를 연결하거나 노트북에 연결하여 스크립트를 대화식으로 개발할 수 있습니다.
비용 및 개발 문서
자세한 가격 정보는 여기에서 확인할 수 있습니다. 크롤러, ETL 작업 및 개발 엔드 포인트는 모두 DPU (Data Processing Unit Hours, 분 단위)에 청구됩니다. 각 DPU-Hour의 비용은 미국 버지니아 리전 기준 0.44 달러 입니다. 단일 DPU는 4vCPU 및 16GB의 메모리를 제공합니다.
이 글에서는 AWS Glue가 가지고 있는 기능의 절반 만 다루었습니다. 더 자세한 사항은 기술 문서와 서비스 FAQ를 참고해 주시기 바랍니다. Glue에는 콘솔에서 수행 할 수 있는 모든 작업을 수행 할 수 있는 풍부하고 강력한 API가 있습니다.
또한, 오늘 두 개의 새로운 프로젝트를 발표합니다. aws-glue-libs 는 Glue와 대화하기 위한 유틸리티 세트를 제공합니다. aws-glue-samples repo에는 일련의 예제 작업이 포함되어 있습니다.
– Randall;
이 글은 Launch – AWS Glue Now Generally Available의 한국어 번역입니다.