콘텐츠로 이동하기
고객 사례

[Digital Native 고객 사례] 고효율 데이터파이프라인 구현을 위한 Dataflow/BigTable 중심 마이그레이션 사례

2022년 6월 21일
https://storage.googleapis.com/gweb-cloudblog-publish/images/WorkplaceTransformation-01_TjiwJTd.max-1000x1000.png
Google Cloud Korea Team

Google Cloud 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

Google Cloud는 2022년 Google Cloud 와 함께 디지털 혁신을 이뤄낸 Digital Native 기업 사례를 소개합니다. 이번 포스트에서는 Google Cloud와 함께 DR(Demand Response)서서비스 향상에 성공한 엔라이튼을 소개합니다.


기업 소개 및 프로젝트 배경

엔라이튼은 다양한 신재생에너지를 연결해 시장에 없던 새로운 서비스를 만드는 국내 최대 에너지 IT 플랫폼 기업 중 하나입니다. 혁신적인 IT와 금융 역량을 바탕으로 태양광 밸류체인 통합 서비스를 제공할뿐 아니라 태양광 발전소를 원격 관리할 수 있는 '발전왕', 전기차 사용자들의 충전 도우미 '충전왕', 재생에너지 투자 플랫폼 '솔라브리지' 등 다양한 사업영역을 통해 모두가 새로운 에너지 생산과 소비 방식을 누릴 수 있는 미래를 그려나갑니다.

2020년 에너지 스타트업으로 유일하게 과학기술정보통신부 글로벌 ICT 미래 유니콘 기업에 선정됐으며, 같은 해 11월에는 금융위원회 및 과학기술정보통신부가 심사한 ICT 분야 '혁신기업 국가대표 1000'에 선정돼 에너지 효율 향상 관련 IT 기술력과 혁신성을 인정받았습니다. 2022년에는 국내 최초로 RE100과 CF100(24/7 Carbon-Free Energy) 동시 파트너사에 선정되어 지속가능한 사회에 기여하고 있습니다.

엔라이튼은 현재 그  다양한 사업영역 중 한 축으로써 국내 27개 존재하는 수요관리사업자 중 하나로 선정되어, 고객이 에너지를 더 효율적으로 사용할 수 있도록 실시간 전력 사용량을 수집, 분석해 수요 예측을 통하여 최대수요전력을 사전에 확인하고 관리 및 중개하는 ‘빅데이터 수요예측 기반 DR(Demand Response) 서비스’를 제공하고 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image7_06TVZCx.max-1500x1500.jpg
https://storage.googleapis.com/gweb-cloudblog-publish/images/image4_wHu3EMO.max-1700x1700.jpg

이러한 수요반응(Demand Response, 이하 DR)서비스의 핵심 컴포넌트는 다음과 같이 크게 3가지로 나누어지는데, 금번 Google Cloud와의 협업을 통해 해당 DR 서비스를 운영하며 겪고있던 어려움을 개선하고자 하였습니다. 

  • Ingestion (참여고객 전력사용량 계측)
  • Aggregation (수집된 계량값에 대해 특정 시간단위 합산 및 OPENADR report 송신)
  • Notification (참여고객 및 수요관리사업자에 수요 응동이벤트 내용 전달)

기존 서비스 환경 및 프로젝트 목표

기존 DR서비스 환경의 경우, 타사 클라우드와 IDC에 각 컴포넌트가 다음과 같이 분리되어 존재하고 있었습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/image6_dLIp52e.max-500x500.png

이러한 환경을 운영/관리하면서 엔라이튼에서 체감하고 있던 어려운 점은 무엇보다도 Aggregation 영역에 집중되어 있었습니다. 그 이유는 바로 사업이 확장되고 수요반응자원 거래를 위한 참여사가 늘어나게 되면서 수집/처리되어야하는 데이터가 기하급수적으로 늘어나게 되었고, 이로 인해 타사 클라우드 상에서 운영되며 해당 데이터를 주로 저장 및 처리(집계)하고 있는 Managed DB가 지속적인 부하 및 병목을 경험하고 있었다는 점입니다. 

물론 간단하게는 Managed DB의 특성 상 Scale-up을 통해 처리 성능을 높이는 방안을 고민할 수도 있었지만, 기존에도 상당히 작지 않은 규모로 인스턴스를 운영하고 있었던 상황이고, 더불어 향후 사업의 지속적인 확장가능성과 기존 시스템의 효율성을 함께 개선하는 측면에서, Google Cloud Solution Architect 이준호님과 함께 이러한 어려움에 대한 심도있는 논의를 시작하게 되었습니다.

엔라이튼 DR서비스는 중요한 SLI(Service-Level Indicator)/SLO(Service Level Objective) 요소로 크게 다음과 같이 3가지가 존재했고, 이러한 지표가 준수되면서도 성능/비용효율성/관리용이성이 뛰어난 시스템을 구현하고자 하였습니다.

  • 발전소 계측 데이터 수집 이벤트의 정합성 보장
  • 5분 계량값 KPX 로 OPENADR report 송신률 100% 유지
  • 고객 알림(SMS, Email) 100%의 성공률, 5분 이하의 지연시간

https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_NocUwcH.max-2000x2000.jpg

이러한 목표를 달성하기 위해 약 한달 간 3가지 정도의 후보 To-Be 아키텍처가 순차적으로 고려되었지만, 최종적인 구성은 다음과 같이 결론내어졌습니다.

목표 서비스 환경 구성 및 기대효과

https://storage.googleapis.com/gweb-cloudblog-publish/images/image9_waFq4Ca.max-600x600.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_ru2myVO.max-600x600.png

앞서 설명된, 기존 IDC 와 타사 클라우드에 운영되던 3가지 DR서비스 요소(Ingestion, Aggregation, Notification) 중 클라이언트 장비와의 연결 특성상 장기간 이전 작업이 소요될 수 밖에 없는 Ingestion 파트를 제외하고, Aggregation 및 Notification 파트는 Google Cloud로 이전을 완료하였습니다.

고도화된 신규 시스템의 기존 대비 가장 큰 차이점은, Managed DB 에 모두 집중되던 부하를 분산하기 위해 “원본 저장” 및 “ 쿼리된 결과를 저장/조회”할 수 있는 서비스 요소들을 분리한 것이었습니다. 실제 이런 부분을 달성하기 위해 사용한 Google Cloud Product와 각 요소들의 목적은 다음과 같았습니다.

  • Pub/Sub : 타사 클라우드로부터 전달되는 이벤트 메시지의 실시간 수집
  • Dataflow : 계측값 대상으로 특정 시간 단위 별로 적용되어야 하는 Aggregation 로직 담당
  • BigTable :  Aggregated 시계열 데이터저장 및 Backend API 에서의 실시간 참조 목적
  • BigQuery : 참여사 계측값 계산 시 잦은 변경을 요하는 집계 로직 적용 및 빅데이터 분석 목적

Pub/Sub+Dataflow의 경우 실시간 스트리밍 데이터 처리에 최적화 되어있는 데이터 파이프라인 조합이고, 엔라이튼의 SLI/SLO에서 정의하였던 “​​발전소 계측 데이터 수집 이벤트의 정합성 보장” 목표에 알맞게, 특정 시간 단위로 수집되어야 하는 데이터를 지정한 Time window 형식으로 유실없이 수집할 수 있는 구조였습니다. 

더불어 기존 Managed DB에 집중되던 부하의 가장 큰 원인은 운영 목적의 잦은 Raw data 조회 요청(장비 및 데이터 수집상태 모니터링 등), 그리고 Aggregation logic 추가로 인한 전체적인 병목현상이었습니다. 이를 해결하기 위해 Aggregation을 위한 Dataflow, 그리고 Raw 데이터 조회를 위한 BigTable 두 가지 요소로 나누어 운영을 시작하였고 그 결과 전반적인 성능과 확장성이 훨씬 좋아진 것을 체감할 수 있었습니다.

또한 엔라이튼에서는 정부 정책사항에 따라 일부 예외적으로 적용되어야 하는, 잦은 변경을 요하는 집계 로직이 존재 했는데 이러한 부분은 BigQuery 상에서 SQL-Like한 구문을 통해 BigTable에 저장된 Raw데이터 기반으로 적용을 하므로써 추가적으로 복잡한 개발없이 Ad-hoc한 집계를 빠르게 적용할 수 있는 발판이 마련되었습니다.

결론 및 향후 계획

엔라이튼은 이러한 DR서비스 개선 과정을 통해 다음과 같은 비즈니스 이점과 Lessons-Learned를 얻었습니다.

  • 비즈니스적 이점

    • 비즈니스 성장에 따라 비용 효율적이면서도 확장 가능한 서비스 환경

    • 변동되는 정부 정책에 기민하게 대응 할 수 있는 시스템 유연성

    • 기존 대비 절감된 서비스 운영 비용

  • Lessons-Learned

    • 시스템 고도화 목표 시, 신속한 trial and error의 중요성 (like Scrum)
      실제 약 3개월간의 프로젝트 진행 중 Google Cloud와 격주로 약 2시간씩의 미팅을 진행하였습니다. 각 미팅 별로 현재 기준에서 알맞게 생각되는 To-Be 아키텍처를 논의하였고 그 다음 미팅 시간 전까지 해당 아키텍처 기준의 small testing을 진행 후 내용을 공유 및 논의함으로써 실질적인 시스템 구성가능성을 점검해 나갔습니다.
      초기에는 내부적으로도 이러한 주요 시스템을 단기간 내에 이전하기가 쉽지 않을 것이라는 의견이 있었는데, 이렇듯 주기적인 스프린트를 가져가며 Agile한 테스팅/결과 논의를 진행하니 3개월 내에 2가지 서비스에 대한 이전을 완료할 수 있었습니다.

    • 비즈니스 성장에 알맞는 아키텍처 및 Managed service 활용의 중요성
      기존에도 관리적인 공수를 줄이기 위해 Managed service를 잘 활용하고 있었지만, 특정 요소들에 대해서는 비즈니스 성장에 따라 유연하게 확장가능한 환경의 고려는 반영되지 않았습니다. 이번 프로젝트를 통해 특별히 비즈니스적으로 확장에 어려움을 겪고있는 서비스 요소들에 대해 무조건 scale-up에만 의존하는 것 보다 가능하다면 목적에 맞게 리아키텍처링을 고려하는 것의 중요성을 다시금 깨달을 수 있었습니다.

현재 DR서비스 구성요소 중 타사 클라우드에 남아있는 Ingestion 파트에 대해서도 향후 클라이언트 장비 업그레이드 계획과 함께 단계적으로 Google Cloud로 이전을 계획하고 있으며, 이러한 부분도 금번 프로젝트 통해 얻은 Lessons-Learned를 기반으로 단기간 내 최적화된 아키텍처로의 이전을 목표하고 있습니다. 이렇게 Google Cloud와 엔라이튼은 DR 서비스의 협업과 디지털 혁신을 이어나가고자 합니다.


본 프로젝트에 적극 참여 및 기여해주신 다음 참여자 분들께 감사의 인사를 드립니다.

  • 김병상 - 엔라이튼, CTO

  • 김승엽 - 엔라이튼, 백엔드 팀장

  • 강대호 - 엔라이튼, DevOps 팀장

  • 이준호 - Google Cloud, Solution Architect

  • 김세휘 - Google Cloud, Customer Engineer

  • 박경미 - Google Cloud, Account Executive

게시 위치