확장 가능한 엔터프라이즈급 추출, 전환, 적재(ETL) 솔루션으로 데이터 워크플로의 효율성을 높이고 인사이트를 더 빠르게 확보하세요.
이 지침은 데이터 소비 요구 사항과 일반적인 ETL 작업에서 수행되는 하위 데이터 처리 활동 간의 격차를 해소하는 데 도움이 됩니다. SQL 기반 데이터 관리 시스템을 운영하는 조직의 경우 현대적인 데이터 엔지니어링 방식에 맞춰가다 보면 데이터에서 강력한 인사이트를 끌어내는 과정의 진행 속도가 느려질 수 있습니다. 이 지침은 사용자 중심 ETL 접근 방식에 대한 오픈 소스 데이터 프레임워크인 Arc를 통해 데이터 프로세스 생산성을 높이기 위한 품질 인식 설계를 제공합니다. 이 지침은 ETL 작업에서의 상호 작용을 가속화하여 배치 및 스트리밍이 통합된 ETL 활동에서 단순성을 촉진하고 추상화 수준을 높여줍니다.
또한 효율적인 컴퓨팅 인스턴스(예: AWS Graviton Processor)를 사용하여 최적의 설계를 위한 옵션을 제공하므로 Amazon EKS에서 대규모로 ETL 작업을 실행하는 데 필요한 성능과 비용을 최적화할 수 있습니다.
참고: [고지 사항]
아키텍처 다이어그램
[아키텍처 다이어그램 설명]
1단계
클라이언트와 ETL 도구 엔드포인트를 안전하게 연결하는 Application Load Balancer가 오리진인 Amazon CloudFront 엔드포인트를 통해 ETL 개발 및 오케스트레이션 도구와 상호 작용합니다.
2단계
배치 및 스트리밍 데이터를 처리하는 ETL 작업을 개발, 테스트 및 예약합니다. ETL 프로세스와 데이터 저장소 간의 데이터 트래픽은 AWS 네트워크를 벗어나지 않고, AWS PrivateLink로 구동되는 Amazon Virtual Private Cloud(VPC) 엔드포인트를 통해 흐릅니다.
3단계
JupyterHub 통합 개발 환경(IDE), Argo Workflows 및 Apache Spark Operator는 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 컨테이너로 실행됩니다. JupyterHub IDE를 소스 코드 리포지토리(예: GitHub)와 통합하여 사용자가 변경한 ETL 자산을 추적할 수 있습니다. 자산에는 Arc ETL Framework로 실행할 Jupyter Notebook 파일과 SQL 스크립트가 포함됩니다.
4단계
소스 코드 리포지토리에서 ETL 자산을 업데이트한 다음 Amazon Simple Storage Service(S3) 버킷에 업로드합니다. 소스 코드 리포지토리의 업데이트로 시작되거나 수동으로 수행되는 자동화된 지속적 통합 및 지속적 배포(CI/CD) 파이프라인을 통해 이 동기화 프로세스를 구현할 수 있습니다.
5단계
필요한 경우 코드 리포지토리에서 S3 ETL 자산 버킷으로 업로드된 Docker 빌드 소스 코드를 변경할 수 있습니다. 이 소스 코드는 AWS CodeBuild 및 AWS CodePipeline CI/CD 파이프라인을 활성화하여 Arc ETL Framework 컨테이너 이미지를 자동으로 재빌드하고 Amazon Elastic Container Registry(Amazon ECR) 프라이빗 레지스트리에 푸시합니다.
6단계
Argo 워크플로를 통해 Amazon EKS 클러스터에서 실행할 ETL 작업을 예약합니다. 이 작업은 Amazon ECR에서 Arc 컨테이너 이미지를 자동으로 가져오고, 아티팩트 S3 버킷에서 ETL 자산을 다운로드하며, 애플리케이션 로그를 Amazon CloudWatch로 전송합니다. VPC 엔드포인트는 모든 AWS 서비스에 대한 액세스를 보호합니다.
7단계
인증된 사용자는 JupyterHub IDE에서 ETL 작업으로 노트북을 대화형 방식으로 개발하고 테스트할 수 있습니다. JupyterHub IDE는 AWS Secrets Manager에서 로그인 자격 증명을 자동으로 검색하여 로그인 사용자 요청을 검증합니다.
8단계
트랜잭션 데이터 레이크 형식을 지원하는 S3 버킷에 저장된 ETL 출력 데이터에 액세스합니다. AWS Glue 데이터 카탈로그와 통합된 Amazon Athena를 통해 Delta Lake 테이블을 쿼리할 수 있습니다.
Well-Architected 원칙
AWS Well-Architected Framework는 클라우드에서 시스템을 구축하는 동안 사용자가 내리는 의사 결정의 장단점을 이해하는 데 도움이 됩니다. 이 프레임워크의 6가지 원칙을 통해 안정적이고 안전하며 효과적이고 비용 효율적이며 지속 가능한 시스템을 설계 및 운영하기 위한 아키텍처 모범 사례를 배울 수 있습니다. AWS Management Console에서 추가 요금 없이 사용할 수 있는 AWS Well-Architected Tool을 사용하면 각 원칙에 대한 여러 질문에 답하여 이러한 모범 사례와 비교하며 워크로드를 검토할 수 있습니다.
위의 아키텍처 다이어그램은 Well-Architected 모범 사례를 고려하여 생성된 솔루션의 예시입니다. Well-Architected를 완전히 충족하려면 가능한 많은 Well-Architected 모범 사례를 따라야 합니다.
-
운영 우수성
Amazon EKS 클러스터 내에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스(X86_64 CPU, Graviton ARM64)는 Guidance 워크로드를 실행하는 컴퓨팅 노드 역할을 합니다. Spark 작업은 워크로드 수요에 따라 탄력적으로 프로비저닝되는 Amazon EC2 스팟 인스턴스에서 실행됩니다.
CodeBuild와 CodePipeline은 GitOps 프로세스를 자동화하여 Git 코드 업데이트로부터 컨테이너 이미지를 빌드하고 Amazon ECR 프라이빗 레지스트리에 푸시합니다. Argo Workflows는 Amazon EKS에 ETL 작업을 예약합니다. Amazon ECR에서 Arc Docker 이미지를 자동으로 가져오고, 아티팩트 S3 버킷에서 ETL 자산을 다운로드하고, 애플리케이션 로그를 CloudWatch로 전송합니다.
데이터 ETL 작업을 이와 같이 자동화된 방식으로 배포하고 실행하면 운영 오버헤드가 최소화되고 생산성이 개선됩니다. 또한 CI/CD 파이프라인에 CodeBuild 및 CodePipeline을 사용하면 지속적인 개선 및 개발을 보장하는 동시에 Guidance의 Arc Docker 이미지를 Amazon ECR에 안전하게 저장할 수 있습니다.
-
보안
Amazon EKS 클러스터 리소스가 Amazon VPC 안에 배포되므로 논리적 네트워킹이 공용 인터넷으로부터 격리됩니다. Amazon VPC는 VPC 엔드포인트(트래픽을 AWS 네트워크 내에 유지), 보안 그룹, 네트워크 액세스 제어 목록(ACL), AWS Identity and Access Management(IAM) 역할 및 정책(인바운드 및 아웃바운드 트래픽 및 권한 부여 제어용)과 같은 보안 기능을 지원합니다. Amazon ECR 이미지 레지스트리는 취약성 스캐닝과 같은 컨테이너 수준 보안 기능을 제공합니다. Amazon ECR과 Amazon EKS는 Open Container Initiative(OCI) 레지스트리 및 Kubernetes API 표준을 따르며 엄격한 보안 프로토콜을 포함합니다.
IAM은 Amazon S3 애플리케이션 데이터에 대한 액세스 제어를 제공하고, AWS Key Management Service(AWS KMS)는 Amazon S3에 저장된 데이터를 암호화합니다. Amazon EKS 클러스터에서는 서비스 계정에 대한 IAM 역할(IRSA)을 사용하여 역할 기반 액세스 제어를 적용하고 권한이 없는 Amazon S3 데이터 액세스를 제한함으로써 포드에 대한 액세스 권한을 세분화하여 제어할 수 있습니다. Secrets Manager는 자격 증명을 안전하게 저장하고 관리합니다. CloudFront는 Jupyter 및 Argo Workflows 웹 도구에 SSL 인코딩 보안 진입점을 제공합니다.
-
신뢰성
Amazon EKS는 Kubernetes 컨트롤 플레인 및 컴퓨팅 플레인을 여러 가용 영역(AZ)에 배포하여 토폴로지의 고가용성을 보장합니다. 이렇게 하면 AZ에 장애가 발생하더라도 데이터 애플리케이션의 지속적인 가용성이 보장되므로 Amazon EKS에 다중 AZ EC2 인스턴스를 안정적으로 배포할 수 있습니다.
데이터 스토리지의 경우 Amazon S3는 리전 내 여러 AZ에 데이터 객체를 자동으로 복제하여 내구성과 가용성을 높여줍니다. 또한 Amazon ECR은 Docker 이미지를 가용성과 확장성이 뛰어난 아키텍처에서 호스팅하여 컨테이너 기반 애플리케이션의 배포와 규모 조정을 안정적으로 지원합니다.
Amazon S3, Amazon EKS 및 Amazon ECR은 운영 비용을 절감하면서 높은 서비스 수준 계약(SLA)을 제공하도록 설계된 완전관리형 서비스입니다. 이 서비스를 사용하여 비즈니스 크리티컬 애플리케이션을 배포하면 고가용성 요구 사항을 충족할 수 있습니다.
-
성능 효율성
Amazon EKS 클러스터의 Amazon EC2 컴퓨팅 노드는 애플리케이션 워크로드에 따라 동적으로 스케일 업 및 스케일 다운이 가능합니다. Graviton 기반 EC2 인스턴스는 맞춤 설계된 ARM 기반 프로세서, 최적화된 하드웨어, 아키텍처 개선을 통해 성능 효율성을 높여줍니다.
컴퓨팅-스토리지 분리 패턴(Amazon S3에 저장된 입력 및 출력 데이터 포함)은 컴퓨팅 규모를 동적으로 조정할 때의 효율성을 높여줍니다. 데이터 카탈로그는 Athena와 원활하게 통합됩니다. 따라서 메타데이터 관리가 간편해지고 쿼리 성능이 개선되어 메타데이터 관리 작업이 간소화됩니다. 데이터 카탈로그는 기술 메타데이터의 크롤링 및 유지 관리를 자동화하여 데이터 처리 및 쿼리 작업의 효율성을 개선합니다. Athena에서 Amazon S3 데이터를 이동하지 않고도 빠르게 쿼리할 수 있으므로 분석 워크플로의 효율성이 추가로 개선됩니다.
-
비용 최적화
Amazon ECR은 컨테이너 애플리케이션의 보안 및 지원을 위한 관리형 서비스입니다. 매월 정액 요금으로 컨테이너 이미지를 저장하고 제공할 수 있습니다. Amazon EKS 클러스터 컴퓨팅 노드는 Spark 워크로드를 기반으로 스케일 업 및 스케일 다운이 가능하므로 Graviton 및 스팟 인스턴스 유형을 비용 효율적으로 사용할 수 있습니다. 데이터 카탈로그는 완전관리형 서버리스 메타데이터 리포지토리를 제공하므로 장기간 실행되는 메타데이터 데이터베이스를 설정 및 유지 관리할 필요가 없고 운영 오버헤드와 비용이 줄어듭니다. CodeBuild와 CodePipeline은 서버리스 환경에서 Arc ETL Framework의 Docker 이미지의 빌드 및 배포를 자동화하므로 인프라 유지 관리 비용이 절감될 뿐만 아니라 빌드 서버를 프로비저닝하고 관리할 필요가 없어집니다.
-
지속 가능성
이 지침에서는 Graviton 프로세서 기반의 효율적인 컴퓨팅 유형으로 구성된 Amazon EKS 클러스터를 실행합니다. Amazon ECR을 사용하면 사용자 지정 하드웨어 또는 물리적 서버 관리가 필요하지 않습니다. 데이터 카탈로그와 Athena는 서버리스 서비스이므로 에너지와 환경에 미치는 영향이 더욱 줄어듭니다.
대규모 Apache Spark 워크로드에 맞게 Amazon EKS 컴퓨팅 계층을 최적화하면 분석 워크로드가 환경에 미치는 영향을 최소화할 수 있습니다. 성능 요구 사항 및 지속 가능성 우선순위에 따라 ARM 기반 프로세서를 유연하게 선택할 수 있습니다.
구현 리소스
샘플 코드를 시작점으로 사용할 수 있습니다. 이 샘플 코드는 업계에서 검증되었고 규범적이지만 최종적인 것은 아니며, 시작하는 데 도움을 줄 것입니다.
관련 콘텐츠
고지 사항
샘플 코드, 소프트웨어 라이브러리, 명령줄 도구, 개념 증명, 템플릿 또는 기타 관련 기술(AWS 직원을 통해 제공되는 상기 항목 포함)은 AWS 이용계약 또는 귀하와 AWS 간의 서면 계약(적용되는 것)에 따라 AWS 콘텐츠로 제공됩니다. 이 AWS 콘텐츠를 프로덕션 계정, 프로덕션 또는 기타 중요한 데이터에 사용해서는 안 됩니다. 귀하는 특정 품질 제어 방식 및 표준에 따라 프로덕션급 사용에 적절하게 샘플 코드와 같은 AWS 콘텐츠를 테스트, 보호 및 최적화할 책임이 있습니다. AWS 콘텐츠를 배포하면 Amazon EC2 인스턴스를 실행하거나 Amazon S3 스토리지를 사용할 때와 같이 요금이 부과되는 AWS 리소스를 생성하거나 사용하는 것에 대한 AWS 요금이 발생할 수 있습니다.
본 지침에 서드 파티 서비스 또는 조직이 언급되어 있다고 해서 Amazon 또는 AWS와 서드 파티 간의 보증, 후원 또는 제휴를 의미하지는 않습니다. AWS의 지침을 기술적 시작점으로 사용할 수 있으며 아키텍처를 배포할 때 서드 파티 서비스와의 통합을 사용자 지정할 수 있습니다.