那些年我參與

智慧電網相關專案血淚史

Slide

Outline

  • About me

  • Introduction to Smart Grid in Taiwan

  • Introduction to Demand Response System

    • 被指派去​救火的故事
  • Introduction to CIM (Common Information Model) and Smart Grid

  • Introduction to Load Characteristic Analysis System

  • Someone make the mistakes, but you don't have to

  • Summary

About me

  • Peter

  • GitHub

  • Active open source contributor

  • LaravelConf Taiwan Member

  • An associate engineer

    • ​DevOps

    • Back-end

    • System Architecture Research

    • Web Application Security

    • PHP, Python and JavaScript

  • Smart Grid technology (2017~)

Introduction to Smart Grid in Taiwan

What is Smart Grid?

What is Smart Grid?

  • 一個龐大且複雜的電網整合系統,需要新技術、新設備及資通訊系統的整合。

  • 解決方案是一個漸進而漫長的過程,更是一項龐大的系統整合工程 。

  • 是一整套的技術,各國依其電力系統狀況,發展智慧電網涵蓋不同的重點。

Introduction to Demand Response System

  • 需量競價措施

    • 管理電力需求的一種方式
    • 是指電力系統高載時期
      • 開放用戶把節省下來的電賣回給電力公司
      • 由用戶出價競標,電力公司則採愈低報價者先得標方式決定得標者,若得標者於抑低用電期間確實減少用電量,則可獲得電費扣減
    • 此措施藉由用戶自報需量反應方式,賦與用戶更多自主權,激發抑低用電潛能,以改善系統負載型態
  • 接手需量競價平台

    • 需量反應負載管理措施

2017年

Original Development Team

PM

離職工程師

請長(ㄔㄢˇ)假工程師

有一天呢

  • PM:XXX 要請假,OOO 要離職

  • PM:你要去接需量競價平台

  • 我:恩好

Current Development Team

PM

實習

剛接手的時候......

剛接手的時候

  • 沒有文件,只有程式碼

    • 有Git Repository 託管在 BitBucket 上
    • Official Laravel Framework README?
    • Where are issues?
  • 每天被PM追殺

    • XXX 是不是有問題
    • XXX 是不是沒有傳檔案過去
  • 系統時常不穩定

    • 系統發生問題時,不知道從何找起
  • 系統平台前後端有很多隱藏的Bug

    • 都是PM被用戶追殺,接著我被追殺的時候才知道
  • 連個系統架構圖都沒有

Identify Main Problems

  • Development

    • Issue Tracking

    • Git Workflows Selecting

  • System

    • System Architecture

    • Data Parsing

    • Data Exchanging

    • Database backup

    • System Monitoring

    • System Reliability

    • System Maintainability

Development

Identify Main Problems

  • Development

    • Issue Tracking

    • Git Workflows Selecting

  • System

    • System Architecture

    • Data Parsing

    • Data Exchanging

    • Database backup

    • System Monitoring

    • System Reliability

    • System Maintainability

System Architecture (Network)

System Architecture

(Data Exchanging)

Demand Response System Architecture

(Original Data Exchanging)

用這麼多程式語言目的?

  • 資料解析就是讀檔與解析字串

    • 解析完成之後儲存進資料庫

  • 資料交換就是做一般的HTTP請求

  • 單一程式語言即可將上述所有的事情解決

  • 有些既有的資料交換程式是半殘的

    • Python寫的NBS資料擷取程式只有一半...

    • 沒有用log做交換紀錄

  • 過多程式語言反而是讓系統複雜化

Demand Response System Architecture

(Data Exchanging)

Tricky NBS Data Parsing

NBS, New Billing System

用戶開票系統

DTo_AMR10xMMDD.txt.C

Identify Main Problems

  • Development

    • Issue Tracking

    • Git Workflows Selecting

  • System

    • System Architecture

    • Data Parsing

    • Data Exchanging

    • Database backup

    • System Monitoring

    • System Reliability

    • System Maintainability

Database backup

  • 資料交換後寫不進去

  • df -lh

    • VPS 主機硬碟滿了?

  • du -h /data | sort -g

    • ./backup/databases

Database backup

  • VPS 主機硬碟滿了?

    • 每小時MySQLDump指令備份資料庫在此主機
    • 資料庫備份應該採取異地備援

Identify Main Problems

  • Development

    • Issue Tracking

    • Git Workflows Selecting

  • System

    • System Architecture

    • Data Parsing

    • Data Exchanging

    • Database backup

    • System Monitoring

    • System Reliability

    • System Maintainability

Database System Monitoring

有個資料表每小時都會

新增一筆useless資料

Database System Monitoring

我以為是紀錄資料

原來是要檢查MySQL資料庫健康狀態

mysqladmin  -u root -p$PASSWORD status

System Monitoring

Agent

  • 在資料交換工作前後的時間做事情

Identify Main Problems

  • Development

    • Issue Tracking

    • Git Workflows Selecting

  • System

    • System Architecture

    • Data Parsing

    • Data Exchanging

    • Database backup

    • System Monitoring

    • System Reliability

    • System Maintainability

Last Things

  • System Reliability & Maintainability

    • 從程式面的角度

    • Review 3000 行Controller

    • 新的專案進來要做

  • 利用了Agent在既有的Legacy系統架構上進行監控

  • 至少在PM來追殺之前,知道現在有什麼問題

  • 進入維護模式

    • 還沒完全改進完成就被Deprecated

    • 被新版的需量競價平台以打掉重練方式取代

Introduction to CIM and Smart Grid

What's CIM?

  • CIM

    • Common Information Model

    • 通用信息模型

    • 訊息格式與方法可以標準化(Normalization)

    • 是一個開放式標準

    • 定義了IT環境中的受控元素如何被表示為一組通用的對象以及這些對象之間的關係

    • IEC-61970

CIM Meets Smart Grid

IEC

The overview of  IEC Standards

IEC Standards

DR System with no IEC Standards

CIM System Architecture

Containerize SOAP Adapter

IEC-62325 with SOAP

機組六段式機組報價

IEC-62325 with SOAP

日前市場競價結果

IEC-62325 with SOAP

IEC-62325 with SOAP

CIM System DevOps

CIM System DevOps

CIM System & DevOps

Off-line Deployment

內網有Ubuntu鏡像

Introduction to Load Characteristic Analysis System

需量競價負載分析系統

  • 與資料科學家合作

  • 負責把遠端各個要用到的資料做儲存當本地資料庫

  • 系統整合

  • 把系統容器化

需量競價負載分析系統資訊流

需量競價負載分析系統運作流程

需量競價負載分析系統資料擷取問題

  • 無法直接存取用戶服務數據大平台

    • 中間卡個SAS,SAS送資料到FTP Server
  • 資料流監控問題

    • 合作的廠商負責用SAS串接但不做資料監控
    • PM時常追殺:資料倉儲所儲存的原始資料有問題

需量競價負載分析系統資料監控

需量競價負載分析系統資料監控

  • 每日11:15

    • 推播到Slack顯示資料庫中資料表拿到最新的資料日期

有天副理跟我分享ETL

原來我自幹一個ETL

需量競價負載分析系統ETL

需量競價負載分析系統 & DevOps

BitBucket Pipelines

需量競價負載分析系統 & DevOps

Off-line Deployment

需量競價負載分析系統 & DevOps

Off-line Deployment

  • 自動化Shell Script

    • data_processor.sh

    • dbp_data_predictor.service

    • entrypoint.sh

    • project_starter.sh

需量競價負載分析系統 & DevOps

Automated Deployment?

Summary

  • 專案應該要issue化,可追蹤化

    • 掌握專案日程與進度

  • 交換資料還是擷取資料都需要有管線

  • 設計任一系統架構前再想過一遍

    • Thinking Twice

  • 任何系統都要有log和監控

    • 被PM追殺時才可以馬上知道問題

  • 將系統容器化在離線部署上會較方便

References

References

Any Questions?

那些年我參與智慧電網相關專案血淚史

By peter279k

那些年我參與智慧電網相關專案血淚史

MOPCON 2020 talk

  • 1,402