안녕하세요, 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를 제공하여 개발자와 데이터 엔지니어가 독립적으로 작업할 수 있도록 자율성을 지원합니다.

​