주요 컨텐츠로 이동
솔루션

MHHS를 위한 확장: Octopus Energy가 마진 데이터 엔지니어링에서 50배 비용 절감을 달성한 방법

세 명의 엔지니어 팀이 Octopus Energy의 데이터 파이프라인을 재설계하여 데이터 볼륨을 48배 늘리고 비용을 50배 절감한 방법.

작성자: Saad Ali, David Poulet, Daniel Taylor , Ismail Makhlouf

  • 무엇인가: Octopus Energy가 영국 MHHS 규정을 충족하기 위해 Databricks에서 마진 데이터 파이프라인을 어떻게 재설계했는지.
  • 과제: MHHS는 데이터 볼륨을 48배로 늘립니다(월 가구당 두 번의 미터기 읽기 → 하루 48번). 기존 단일 세분화 아키텍처에서는 파이프라인 비용이 연간 약 100만 달러 추가될 것으로 예상됩니다.
  • 결과: 세 명의 엔지니어가 세 달 만에 파이프라인을 재구축하여 정산일당 비용을 23.63달러에서 0.48달러로 절감했습니다. 이는 MHHS 예상치보다 50배 저렴하고, 데이터는 48배 더 많음에도 불구하고 기존 시스템보다 2배 저렴합니다. Delta Lake 변경 데이터 피드는 처리된 행을 98.8%(250억 → 3억) 줄였고 신선도를 주간에서 일간으로 향상시켰습니다. Databricks Serverless는 빠른 반복 창을 가능하게 했습니다.

에너지 전환의 데이터 문제

영국의 에너지 그리드는 수십 년 만에 가장 큰 구조적 변화를 겪고 있습니다. 풍력, 태양광과 같은 재생 에너지의 전력 생산 점유율이 높아짐에 따라 간헐성이 주요 문제가 됩니다. 즉, 햇빛이 비칠 때는 에너지가 저렴하지만 그렇지 않을 때는 비쌉니다.

월별 계량기 판독값과 평균 소비 프로필을 기반으로 구축된 기존 정산 모델은 이러한 신호를 정확하게 가격 책정할 수 없습니다. 신호를 정확하게 가격 책정할 수 없다면 소비자에게 전달할 수 없으며, 수요는 공급과 일치하도록 절대 바뀌지 않습니다.

시장 전체의 반시간별 정산(MHHS)이 규제 대응책입니다. 영국의 모든 가구는 월 2회 계량기 판독에서 하루 48회 판독으로 전환됩니다. 이는 점진적인 변화가 아닙니다. Octopus Energy와 같이 8백만 명 이상의 고객을 보유한 공급업체에게는 모든 마진 계산, 모든 정산 의무 및 모든 상업적 결정을 내리는 데이터 포인트가 48배 증가하는 것입니다.

데이터 엔지니어링의 직접적인 영향은 다음과 같습니다. 재설계하지 않으면 Octopus Energy의 마진 파이프라인 운영을 위한 인프라 비용이 매년 1백만 달러까지 치솟을 것으로 예상되었습니다.

컴퓨팅 성능을 늘리는 것이 왜 효과가 없는가

데이터 볼륨이 48배 증가하면 인프라를 더 많이 확보하려는 본능이 생깁니다. Octopus Energy의 마진 데이터 팀에게 그 본능은 곧 실행 불가능하다는 것이 입증되었습니다. 기존 아키텍처에서의 정산일당 예상 비용은 23.63달러로, 과거 평균보다 33배 증가한 수치입니다. 이를 정산 기간 전체에 곱하면 비용은 빠르게 누적됩니다.

그러나 더 근본적인 문제는 컴퓨팅 비용이 아니라 아키텍처 불일치였습니다. 기존 파이프라인은 단일 단위인 월별을 중심으로 구축되었습니다. 청구는 월별로 이루어졌습니다. 정산도 월별로 이루어졌습니다. 전체 파이프라인은 설계상 모놀리식(monolithic)이었습니다.

MHHS는 근본적인 분할을 도입했습니다. 산업 비용 데이터는 이제 반시간별 세분화, 즉 고객당 하루 48개의 데이터 포인트로 도착합니다. EV 및 히트 펌프를 사용하는 스마트 요금제 고객은 반시간별 수익 계산이 필요합니다. 표준 요금제 고객은 여전히 월별로 정산합니다. 이 세 가지를 단일 모놀리식 파이프라인으로 실행하면 실제로 변경된 내용에 관계없이 모든 실행에서 전체 데이터 세트를 처리해야 합니다.

Octopus Energy의 마진 데이터 팀 리더인 Saad Ali는 다음과 같이 말했습니다. "이런 문제에 컴퓨팅 성능만 더한다고 해결되지 않습니다. 처음부터 다시 구축하고 로직을 재고해야 합니다."

아키텍처: 세 개의 스트림, 하나의 진실 공급원

팀은 각 스트림을 자연스러운 단위에 맞게 독립적으로 최적화하여 세 개의 전문화된 스트림을 중심으로 재설계했습니다.

정산 - 규제 정산 및 비용 할당을 위한 반시간별 세분화. 산업 요금은 하루 48개의 데이터 포인트이며, 이 스트림은 해당 단위를 정확하게 일치시킵니다.

반시간별 - EV 운전자, 히트 펌프 사용자 및 반시간별 가격 신호가 전체 상업적 제안인 시간별 사용 제품과 같은 스마트 요금제 고객을 위한 반시간별 처리.

월별 - 표준 요금제 고객을 위한 월별 처리. 단위는 변경되지 않았지만 이제 반시간별 데이터와 조정 가능합니다.

"Job of Jobs" 오케스트레이션 패턴은 세 스트림 간의 종속성 및 병렬 실행을 관리합니다. 각 스트림은 독립적으로 조정 가능합니다. 정산에 대한 Spark 최적화가 NHH에 반드시 적합한 것은 아닙니다.

이 세 가지 모두의 기반에는 다운스트림 소비 계층이 있습니다. 이는 계량기 판독값, 스마트 미터 데이터 및 멀티 테라바이트 규모의 산업 흐름을 통합하는 통합된 다중 단위 진실 공급원입니다. 이 계층은 월별 청구와 반시간별 정산 간의 조정 브릿지이며, 프로젝트에서 가장 높은 레버리지 최적화 지점이 되었습니다.

증분 처리: 행 98.8% 감소

업스트림 소비 테이블에 대한 단순한 접근 방식, 즉 매번 전체 멀티 테라바이트 데이터 세트를 다시 처리하는 것은 새로운 볼륨에서 지속 불가능한 컴퓨팅 비용을 의미했을 것입니다.

Delta Lake의 변경 데이터 피드(CDF)를 통해 이 단위에서 진정한 증분 처리가 가능해졌습니다. 전체 덮어쓰기 대신, 파이프라인은 이제 마지막 실행 이후 실제로 변경된 레코드만 읽습니다. 결과: 실행당 처리된 행이 250억 개에서 3억 개로 감소했습니다. 98.8% 감소입니다.

데이터 최신성은 주간에서 일일로 개선되었습니다. 상업 팀에게 이 변화는 가격 결정이 실제로 이루어지는 단위, 즉 매주가 아니라 매일 아침에 마진 가시성을 확보할 수 있음을 의미합니다.

참고: 아래에 언급된 연간 1백만 달러의 절감액은 업스트림 테이블에 대한 증분 처리로의 전환으로 인한 추가 절감액은 제외됩니다. 전체 효율성 향상은 더 큽니다.

Spark 및 Delta 최적화 - 그리고 제거할 것

시스템을 통해 48배 더 많은 데이터가 흐르면서 팀은 네 가지 범주에 걸쳐 측정으로 검증된 대상 최적화를 적용했습니다.

계보 및 I/O 감소

  • 파이프라인 초기에 데이터를 통합하여 계보를 단순화하고 다운스트림 조인 및 셔플 작업을 줄였습니다.
  • 데이터 가지치기: 정산에 엄격하게 필요한 열만 선택하고 가능한 한 빨리 행을 가지치기하여 비용이 많이 드는 변환 전에 I/O 오버헤드를 줄였습니다.

조인 및 파티션 조정

  • 500MB 미만의 참조 테이블에 대한 브로드캐스트 조인을 사용하여 복잡한 다중 키 조인 및 날짜 범위에 대한 비용이 많이 드는 셔플 작업을 제거했습니다.
  • 여러 테이블에 걸쳐 필터 및 조인에 자주 사용되는 열에 대해 Liquid Clustering이 활성화되었습니다. Liquid Clustering은 고정된 파티션 경계를 요구하지 않고 지정된 클러스터링 키에서 관련 레코드를 동적으로 공동 배치합니다. Liquid Clustering은 과도한 파티셔닝으로 인한 작은 파일 문제, 높은 메모리 소비 및 I/O 오버헤드를 방지합니다.

최적화 프로그램 신뢰

  • 여러 경우에 Spark의 적응형 쿼리 실행(AQE)이 수동으로 조정된 로직보다 뛰어난 성능을 보였습니다. 팀은 사용자 지정 최적화 코드를 제거하고 AQE가 작업을 수행하도록 했습니다.

마지막 요점은 강조할 가치가 있습니다. 불필요한 컴퓨팅 작업을 제거하는 것은 새로운 최적화를 추가하는 것만큼 효과적이었습니다. 측정 없이 Z-Ordering 또는 ANALYZE를 실행하는 경우, 절약하는 것보다 더 많은 비용이 들 수 있습니다.

Serverless를 개발 가속기로 활용

Databricks Serverless 덕분에 3개월의 배포 기간을 달성할 수 있었습니다. 클러스터 시작 시간이 0이어서 팀은 인프라 프로비저닝을 기다리지 않고 신속하게 반복할 수 있었습니다. 즉, 작성, 실행, 측정, 조정이 가능했습니다.

Serverless UI를 통해 실행을 나란히 비교할 수 있었기 때문에 개별 최적화의 효과를 분리하는 것이 실용적이었습니다.

팀의 말에 따르면, "Serverless 없이는 테스트 및 개발 프로세스를 완료할 수 없었습니다. Serverless UI를 사용하여 병목 현상을 식별하고 다양한 실행 간의 쉬운 비교를 할 수 있었습니다."

결과

지표이전이후변경 사항
실행당 처리된 행250억3억98.8% 감소
정산일당 비용(예상 MHHS)23.63달러0.48달러~50배 감소
정산일당 비용(기존 대비)0.71달러0.48달러2배 효율성 향상
월말 실행당 절감액-~83,000달러최적화되지 않은 예상 대비
연간 비용 회피-~1,000,000달러업스트림 절감액 제외
데이터 최신성주간일간7배 향상
빌드 시간-3개월3명 팀

정산일당 0.48달러는 MHHS 예상 비용에서 50배 감소한 것뿐만 아니라, 48배 더 많은 데이터 포인트를 처리함에도 불구하고 기존 시스템보다 2배 저렴합니다. 재설계를 통해 규정 준수를 달성했으며 시스템을 대체한 시스템보다 훨씬 더 효율적으로 만들었습니다.

에너지 산업을 넘어선 의미

MHHS는 영국의 에너지 규제입니다. 그러나 이를 나타내는 패턴, 즉 규제 또는 비즈니스 이벤트가 더 세분화된 단위로 데이터 볼륨을 증폭시키는 것은 에너지 산업에만 국한되지 않습니다. 시스템이 월별에서 일별로, 일별에서 실시간으로, 또는 집계에서 트랜잭션으로 이동하는 모든 경우에 동일한 역학 관계가 적용됩니다.

Octopus Energy 경험에서 얻은 네 가지 이전 가능한 교훈:

  1. 단위 불일치는 숨겨진 비용 동인입니다. 파이프라인이 비즈니스 요구 사항에 관계없이 모든 것을 가장 세분화된 단위로 처리하면 컴퓨팅, 최신성 및 유지 관리 복잡성 측면에서 비용이 발생합니다. 데이터의 자연스러운 단위를 식별하고 처리를 이에 맞추십시오.
  2. 증분 처리는 파이프라인 경제를 변화시킵니다. 98.8%의 행 감소는 Spark 튜닝이 아닌 CDF 기반 증분 로직에서 비롯되었습니다. 거기서부터 시작하십시오. 전체 절감액이 주요 수치보다 크다는 것을 기억하십시오.
  3. 추가하기 전에 제거하십시오. 더 많은 컴퓨팅 성능이 필요하다고 가정하기 전에 기존 최적화 선택 사항을 감사하십시오. 측정 없이 적용된 Z-Ordering, ANALYZE 및 사용자 지정 셔플 로직은 절약하는 것보다 더 많은 비용이 들 수 있습니다.
  4. 최적화 프로그램을 신뢰하세요. AQE는 여러 경우에서 수작업으로 코딩된 로직보다 뛰어난 성능을 보였습니다. 사용자 정의 최적화를 작성하기 전에 Spark가 이미 해당 사례를 처리하는지 테스트하세요.
  5. 더 큰 그림

    Saad의 말에 따르면: "시스템을 더 빠르고 효율적으로 만듦으로써, 고객이 가장 저렴하고 깨끗한 에너지를 사용할 수 있도록 돕는 더 스마트한 요금제를 제공할 수 있습니다."

    비용 절감은 특정 목표를 달성합니다. 고주파 데이터 처리의 경제적 장벽을 제거합니다. 이를 통해 그리드 밸런싱을 제품으로 만들 수 있습니다. 스마트 요금제를 상업적으로 지속 가능하게 만듭니다. 이것이 바로 대규모 데이터 엔지니어링이 에너지 전환과 연결되는 방식입니다. 인프라 오버헤드가 아니라 그 상업적 기반으로서 말입니다.

    MHHS 준수가 의무였습니다. 지속 가능한 에너지를 저렴한 옵션으로 만드는 것이 사명입니다. 데이터 엔지니어링은 이 두 가지를 연결하는 것입니다.

    더 알아보기

    ———

    Saad Ali는 Octopus Energy의 마진 데이터 팀 리더입니다. Ismail Makhlouf, David Poulet, Daniel Taylor는 Databricks의 솔루션 아키텍트입니다.

    (이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.