 |
안녕하세요, Cloud & AI 매니지드 서비스 전문 기업 베스핀글로벌입니다.
AWS re:Invent 2024의 [Amazon EKS as data platform for analytics]을 확인해보시기 바랍니다.
|
☑️ Keynote
세션명 |
Amazon EKS as data platform for analytics |
세션코드 |
KUB405 |
발표일자 |
2024.12.03 |
강연자 |
Victor Gershkovich, Roland Barcia, Christina Andonov |
키워드 |
1. 분석 플랫폼에서의 Kubernetes 활용
2. Karpenter를 활용한 클러스터 스케일링
3. Karpenter와 Spark의 통합
4. Spark, Kubernetes, Karpenter 메트릭 통합
5. Terraform 및 GitOps를 통한 자동화
|
핵심 내용
|
1. 데이터 활용과 분석 플랫폼 최적화 : Spark, Flink, Hadoop, 데이터 처리 엔진, 분석 플랫폼에서의 Kubernetes 활용, 실시간 데이터 및 배치 데이터 처리
2. 플랫폼 최적화 전략 : Kubernetes 기반 EKS 최적화, Karpenter를 활용한 클러스터 스케일링, 멀티 테넌트 환경에서의 네임스페이스 및 워크로드 격리
3. 비용 최적화 및 성능 개선 : Karpenter를 활용한 효율적 자원 관리, Graviton 및 베어메탈 인스턴스 활용, 데이터 처리 비용 모니터링 및 관리
4. 관측 가능성(Observability) 강화 : Spark, Kubernetes, Karpenter 메트릭 통합, 실시간 데이터 처리 비용 추적, 데이터 처리 파이프라인에서의 종단 비용(Lineage) 분석
5. 데이터 엔지니어링 자율성 : Terraform 및 GitOps를 통한 자동화, 데이터 엔지니어의 독립적 운영 지원, API를 통한 플랫폼 접근성 확대 |
|
Amazon EKS as data platform for analytics
데이터 활용과 분석 플랫폼 최적화를 위한 전략과 데이터 엔지니어링 자율성에 대해 소개합니다.
|
|
1. 데이터 활용과 분석 플랫폼 최적화
1-1. Data patterns
- 이제 우리는 대량의 데이터를 처리해야 합니다.
- Spark의 클러스터 기술, 과거의 Hadoop 그리고 최근에는 Flink와 같은 기술이 실시간 데이터와 배치 데이터를 함께 처리하는 방법을 제공합니다.
|
 |
1-2. Platform Engineering
- 많은 고객이 Kubernetes를 표준으로 삼아 사용하며, Amazon Elastic Kubernetes Service(EKS)를 활용합니다.
- 개발자와 플랫폼 팀 간의 역할 경계가 존재합니다.
- 개발자들은 자유를 원하며, 자신이 좋아하는 오픈 소스 도구와 기술을 활용하고 독립적으로 새로운 애플리케이션을 만들고 배포하고 싶어합니다.
- 반면, 플랫폼 팀은 보안, 시스템 안정성, 확장성, 비용 최적화와 같은 문제에 집중합니다.
|
1-3. Data & workloads
- 데이터 과학자들과 엔지니어들은 SQL을 사용해 데이터를 처리하거나, 노트북 환경(Python, R 등)을 활용하여 애플리케이션을 빌드하고 있습니다.
- 데이터 레이크(Data Lake), 데이터 메시(Data Mesh), 워크플로우 기반 애플리케이션 등은 데이터 플랫폼 팀에 새로운 과제를 안깁니다.
- 최적의 스토리지를 선택하는 문제, GPU 제공 여부 및 관리, MLOps, DevOps, 데이터 파이프라인 등은 플랫폼 엔지니어링과 데이터 워크로드를 다루는 데 많은 최적화가 필요합니다.
|

|
|
2. 플랫폼 최적화 전략
2-1. 비즈니스 vs 분석 워크로드
- 분석 워크로드를 다룰 때, 고객들이 겪는 주요 도전 과제 중 하나는 비즈니스 애플리케이션과 분석 플랫폼을 별도의 팀에서 관리한다는 것입니다.
- 두 팀 모두 동일한 컴퓨팅 자원을 사용하지만, 워크로드의 트래픽 패턴이 다르기 때문에 별도의 플랫폼을 구축해야 합니다.
|
2-2. 클러스터 최적화 : 3단계 레이어 접근법
- 레이어 1
- 라우팅되지 않는 특별한 IP 대역을 사용하며, IPv6를 고려합니다.
- max-CNI를 1로 설정하고, 파드 크기에 따라 동적으로 설정하여 불필요한 IP 낭비를 방지합니다.
- N-dots 설정을 통해 불필요한 쿼리를 최소화하여 성능을 개선합니다.
- 분석 플랫폼에서는 더 빠르고 효율적인 확장이 필요하므로 AWS에서 제공하는 Karpenter를 사용합니다.
- Karpenter는 AWS의 가격 정보를 인식하며, 가장 비용 효율적인 인스턴스를 빠르게 선택하여 노드를 1분 이내로 확장할 수 있습니다.
- 레이어 2
- 목적에 맞는 클러스터 구성을 위해 Spark 및 Flink를 통합합니다.
- 규모가 작은 클러스터(200~300 노드 이하)에서는 동일한 클러스터에서 Spark와 Flink를 실행할 수 있습니다.
- 대규모 클러스터의 경우, 워크로드를 분리하여 각각 별도의 클러스터에서 실행하는 것이 좋습니다.
- Apache Spark Operator는 Spark 작업 관리를 위해 추천하는 도구입니다.
- Apache Yunikorn은 우선순위 큐 또는 갱 스케줄링이 필요한 경우 적합한 스케줄러입니다.
- 워크플로우 엔진으로는 Apache Airflow, Argo Workflows, AWS Step Functions 등이 사용됩니다.
- 레이어 3
- 일부 고객은 팀별로 클러스터를 나누어 사용하지만, 대부분의 고객은 멀티 테넌트 클러스터에서 네임스페이스를 활용하여 테넌트를 격리합니다.
- 문제점으로는 데이터 엔지니어가 AWS 리소스를 생성하려면 종종 티켓을 열어야 하며, 이 과정에서 보안 및 승인 절차를 거쳐야 한다는 것 입니다.
- 해결책은 Kubernetes API를 확장하여 IAM 역할, S3 버킷, RDS 인스턴스와 같은 AWS 리소스를 자동으로 생성하는 인터페이스를 제공합니다.
|

|
|
3. 비용 최적화 및 성능 개선(AppsFlyer의 Spark 워크로드 전환)
3-1. EC2 기반 인프라에서 AWS EKS로 전환
- 성능 향상, 비용 절감, 데이터 관측 가능성을 강화한다는 장점이 있습니다.
|

|
3-2. Karpenter를 활용한 스케일링
- Karpenter는 가장 안정적이고 비용 효율적인 인스턴스를 자동으로 선택합니다.
- Graviton Gen3를 우선적으로 사용하고, 필요 시 Gen2로 백업합니다.
- 베어메탈 인스턴스도 사용하여 하드웨어 자원에 직접 접근하고 고성능을 제공합니다.
- Karpenter는 가장 비용 효율적인 가용 영역에 노드를 배치하여 데이터 전송 비용을 절감합니다.
|
3-3. Spark 작업의 안정성과 비용 효율성
- 그라비톤(Graviton) 및 베어메탈 인스턴스를 활용하여 비용 효율성을 극대화하며 높은 성능을 제공합니다.
- Karpenter와 Spark의 통합을 통해 스팟 인스턴스 중단 시에도 안정성을 유지합니다.
- 스팟 인스턴스가 중단되면 Spark는 중단 신호를 받아 작업 상태를 저장하고 새로운 인스턴스에서 작업을 이어갑니다.
|
3-4. 비용 절감 및 성능 향상
- Karpenter를 사용한 스케일링 전략으로 24시간 동안 1,600회 이상의 노드 생성 및 종료가 이루어져 비용을 60% 절감하고 SLA를 35% 개선합니다.
- 운영 부담을 줄이고 엔지니어링 팀의 생산성을 높입니다.
|
 |
|
4. 관측 가능성(Observability) 강화
- AppsFlyer는 Kubernetes, Spark, Carpenter의 메트릭스를 통합하여 분석 플랫폼의 가시성을 크게 향상시킵니다.
4-1. 데이터 처리 흐름 분석
- AppsFlyer는 Spark와 Kubernetes 메트릭스를 활용하여 각 데이터 세트의 처리 비율과 트렌드를 실시간으로 분석합니다.
- 예) 클릭 데이터 처리가 전체 워크로드의 28%를 차지하며, 특정 시점에 시작되고 종료되는 패턴을 확인합니다.
|
4-2. 비용 분석
- Karpenter 메트릭스를 Spark와 통합하여 데이터 처리 비용을 계산합니다.
- 데이터 처리 비용을 분 단위로 분석하여 실시간으로 비용 최적화가 가능합니다.
- 이 데이터를 기반으로 데이터 파이프라인의 전체 비용을 계산하여 최적화 가능한 부분을 식별할 수 있습니다.
|
 |
|
5. Terraform 및 GitOps를 통한 자동화
- 코드 기반 관리를 위해 Git을 활용한 코드 구조화로 인프라, 애플리케이션, 서드파티 통합을 한곳에서 관리합니다.
- 자동화를 위해 Terraform과 CI/CD 워크플로우를 통해 빠르고 안정적인 배포를 지원합니다.
- 정책 및 모범 사례를 제공하여 기본값을 제공하되, 필요 시 데이터 엔지니어가 이를 조정할 수 있도록 지원합니다.
|
 |
|
6. 마무리
- EKS 기반 분석 플랫폼 최적화를 위해 Karpenter와 Spark의 통합을 통해 성능과 비용 효율성을 극대화합니다.
- 조직 성장 촉진을 위해 표준화된 도구와 프로세스를 통해 팀 간 협업 및 확장성을 지원합니다.
- 데이터 엔지니어를 위한 API를 제공하여 개발자와 데이터 엔지니어가 독립적으로 작업할 수 있도록 자율성을 지원합니다.
|
|
|
|