BLOG
AWS Glue는 대용량의 데이터 및 데이터 레이크 워크로드에 대해 서버리스 ETL (추출, 변환 및로드) 애플리케이션의 개발과 관련하여 최근 인기를 얻게 된 일련의 방법입니다. ETL 애플리케이션을 클라우드 기반 서버리스 ETL 아키텍처로 변환하는 조직은 소스 코드에서 구축, 배포, 제품 전달에 이르기까지 원활하고 완벽한 통합 및 연속 전달 (CI / CD) 파이프 라인을 필요로 합니다. 훌륭한 CI / CD 파이프 라인을 갖추면 조직에서 프로덕션에 도달하기 전에 버그를 발견하고 업데이트를 보다 자주 제공 할 수 있습니다. 또한 개발자가 양질의 코드를 작성하고 ETL 작업 릴리스 관리 프로세스를 자동화하고 위험을 완화하는 데 도움이 될 수 있습니다.
AWS Glue는 완벽하게 관리되는 데이터 카탈로그 및 ETL 서비스입니다. 데이터 검색, 변환 및 작업 스케줄링과 관련하여 어렵고 시간 소모적인 작업을 단순화하고 자동화합니다. AWS Glue는 데이터 소스를 크롤링하고 CSV, Apache Parquet, JSON 등의 널리 사용되는 데이터 형식 및 데이터 유형에 대해 사전 작성된 분류 기준을 사용하여 데이터 카탈로그를 구성합니다.
AWS Glue를 사용하여 ETL 애플리케이션을 개발할 때 다음과 같은 CI/CD 문제가 발생할 수 있습니다.
- 단위 테스트를 통한 반복 개발
- 지속적인 통합 및 구축
- ETL 파이프 라인을 테스트 환경으로 밀기
- 프로덕션 환경으로 ETL 파이프 라인 밀어 넣기
- 실제 데이터를 사용하여 ETL 어플리케이션 테스트 (라이브 테스트)
- 데이터 탐색 및 검증
이 글에서는 AWS Developer Tools (AWS CodePipeline, AWS CodeCommit 및 AWS CodeBuild 포함) 및 AWS CloudFormation을 지원하는 서버리스 AWS Glue ETL 애플리케이션을위한 CI / CD 파이프 라인을 구현하는 솔루션을 소개합니다.
Solution Overview
다음의 도표는 파이프라인 워크플로우를 보여줍니다.
이 솔루션은 AWS CodePipeline을 사용하여 ETL 응용 프로그램 소스 코드의 테스트 및 배포 단계를 조정하고 자동화 할 수 있습니다. 이 솔루션은 다음 단계가 포함된 파이프 라인으로 구성됩니다.
1.) 소스 제어: 이 단계에서는 ETL 작업을 배치하기 위한 AWS Glue ETL 작업 소스 코드와 AWS CloudFormation 템플릿 파일 모두 버전 제어를 위해 커밋됩니다. 버전 관리를 위해 AWS CodeCommit을 사용하기로 했습니다.
ETL 작업 소스 코드 및 AWS CloudFormation 템플릿을 얻으려면 gluedemoetl.zip 파일을 다운로드 하십시오. 이 솔루션은 이전 게시물인 AWS Glue 및 Amazon S3를 사용한 Data Lake Foundation 구축을 기반으로 개발되었습니다.
2.) LiveTest :이 단계에서는 AWS Glue 크롤러, 작업, S3 버킷, 역할 및 솔루션에 필요한 기타 리소스를 비롯한 모든 리소스가 프로비저닝, 배포, 테스트 및 정리됩니다.
LiveTest 단계에는 다음 작업이 포함됩니다.
- 배포: 이 작업에는 이 솔루션에 필요한 모든 리소스 (크롤러, 작업, 버킷, 역할 등)가 AWS CloudFormation 템플릿을 사용하여 구축되고 배포됩니다.
- AutomatedLiveTest :이 작업에서는 모든 AWS Glue 크롤러 및 작업이 실행되고 데이터 탐색 및 유효성 검사 테스트가 수행됩니다. 이러한 유효성 검사 테스트에는 데이터 레이크의 변환된 테이블의 레코드 수 및 기타 비즈니스 유효성 검사가 포함되지만 이에 국한되지는 않습니다. 이 작업을 위해 AWS CodeBuild를 사용했습니다.
- LiveTestApproval :이 작업은 ETL 응용 프로그램을 다음 단계로 배포 / 진행시키는 데 파이프 라인 관리자 승인이 필요한 경우에 포함됩니다. 파이프 라인은 관리자가 수동으로 릴리스를 승인할 때까지 이 작업에서 일시 중지됩니다.
- LiveTestCleanup :이 작업에서는 테스트 크롤러, 작업, 역할 등을 포함한 모든 LiveTest 스테이지 리소스가 AWS CloudFormation 템플릿을 사용하여 삭제됩니다. 이 조치는 AutomatedLiveTest 및 LiveTestApproval 기간 동안만 테스트 리소스가 존재하도록 하여 비용을 최소화하는 데 도움이 됩니다.
3.) DeployToProduction :이 단계에서는 모든 리소스가 AWS CloudFormation 템플릿을 사용하여 프로덕션 환경에 배포됩니다.
Try it Out
이 코드 파이프라인은 LiveTest 테스트 단계를 완료하는 데 약 20 분이 걸립니다 (수동 승인이 필요한 LiveTest 승인 단계까지).
이 솔루션을 시작하려면 Launch Stack 을 선택하세요.
앞에서 설명한대로 이 단계를 통해 CI/CD 파이프 라인이 만들어집니다. 첫 번째 릴리스 변경을 트리거하기 위해 샘플 AWS Glue ETL 작업 소스 코드의 초기 확약을 수행합니다.
AWS CloudFormation 콘솔에서 생성을 선택하십시오. 기본 폼의 자원 작성을 완료하면 스택 출력 탭에 파이프 라인 이름이 표시됩니다.
그런 다음 CodePipeline 콘솔을 열고 새로 만든 파이프 라인을 선택합니다. 처음에는 파이프 라인의 CodeCommit 단계에서 소스 작업이 실패했음을 보여줍니다.
새 파이프 라인이 CloudFormation 스택 생성에 의해 적용된 초기 커밋을 감지 할 때까지 잠시 기다립니다. 커밋이 감지되면 파이프 라인이 시작됩니다. CodeCommit 소스 스테이지가 실행되는 즉시 성공적인 스테이지 완료 상태가 표시됩니다.
CodeComit 콘솔에서 내비게이션 패인에 있는 코드를 선택하여 솔루션 파일을 보세요.
다음으로, 파이프 라인이 LiveTestApproval 액션에 도달 할 때까지 배포 및 AutomatedLiveTest 액션의 LiveTest 스테이지를 통과하는 방법을 볼 수 있습니다.
이 시점에서 AWS CloudFormation 콘솔을 확인하면 LiveTest 배포 작업의 일부로 새 템플릿이 배포되었음을 알 수 있습니다.
이 시점에서 AWS Glue 크롤러와 AWS Glue 작업이 성공적으로 실행되었는지 확인하세요. 또한 해당 데이터베이스와 외부 테이블이 AWS Glue Data Catalog에 생성되었는지 확인하십시오. 그런 다음 아래와 같이 Amazon Athena를 사용하여 데이터의 유효성을 검사합니다.
AWS Glue 콘솔을 열고 탐색 창에서 Databases를 선택하십시오. 데이터 카탈로그에 다음 데이터베이스가 표시됩니다.
Amazon Athena 콘솔을 열고 다음 쿼리를 실행합니다. 레코드 수가 일치하는지 확인하십시오.
SELECT count(*) FROM “nycitytaxi_gluedemocicdtest”.”data”;
SELECT count(*) FROM “nytaxiparquet_gluedemocicdtest”.”datalake”;
다음은 미가공 데이터를 보여줍니다.
다음은 전환된 데이터를 보여줍니다.
파이프 라인은 릴리스가 승인될 때까지 작업을 일시 중지합니다. 데이터 유효성을 검사한 후에 Codepipeline 콘솔에서 LiveTestApproval 작업의 리비전을 수동으로 승인하십시오.
필요 시에는 코멘트를 추가하고 승인을 선택하십시오.
LiveTestApproval 스테이지가 콘솔상에 이제는 승인됨으로 나타납니다.
개정판이 승인되면 파이프 라인은 AWS CloudFormation 템플릿을 사용하여 LiveTest 배포 작업에 배포된 리소스를 파괴합니다. 이를 통해 비용을 절감하고 모든 배포에 더욱 간결한 테스트 환경을 보장 할 수 있습니다.
생산 배치 과정은 최종 단계입니다. 이 단계에서는 AWS CloudFormation 템플릿을 사용하여 AWS Glue 크롤러, AWS Glue 작업, Amazon S3 버킷, 역할 등 모든 리소스를 프로비저닝하고 프로덕션 환경에 배포합니다.
전체 파이프 라인을 성공적으로 실행 한 후 AWS CodeCommit에 저장된 소스 코드를 변경하여 자유롭게 실험 해보십시오. 예를 들어 오류를 생성하도록 AWS Glue ETL 작업을 수정하면 AutomatedLiveTest 작업이 실패하게 됩니다. 또는 생성을 실패하도록 AWS CloudFormation 템플릿을 변경하면 LiveTest 배포 작업에 영향을 주어야 합니다. 파이프 라인의 목적은 프로덕션에 배포 된 모든 변경 사항이 예상대로 작동하도록 확인하는 것입니다.
결론
이 글에서는 AWS CodePipeline 및 AWS CodeBuild와 같은 AWS 개발자 툴을 사용하여 serverless AWS Glue ETL 솔루션을위한 CI / CD를 구현하는 것이 얼마나 쉬운지를 배웠습니다. 이러한 솔루션을 구현하면 조직에서 ETL 개발 및 테스트를 가속화 할 수 있습니다.
원문 URL: https://aws.amazon.com/ko/blogs/big-data/implement-continuous-integration-and-delivery-of-serverless-aws-glue-etl-applications-using-aws-developer-tools/
** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.