# 紅綠燈模擬管理系統: 串接Flask + PostgreSQL + Redis
## 介紹
* 利用Flask作為服務窗口,被動接收請求,即時提供紅綠燈設備相關資訊
* 靈感來自前公司的路燈管理系統建置專案(未實際上線)
## 使用工具、版本
* Flask
* PostgreSQL
* Redis
* Heroku
* 詳見[Requirement](https://github.com/kuochuwon/Trafficlight_demo/blob/master/requirements.txt)
## 程式架構
* [Github原始碼](https://github.com/kuochuwon/Trafficlight_demo)
* [範例影片](https://imgur.com/v6L2qZs)
* 簡易架構圖
* ![architecture](https://imgur.com/NzHvkLN.jpg)
## 原理概述
* 這個網頁服務以Flask服務為基礎,透過PostgreSQL存取所有業務相關的基本資料、動態資料;當有存取頻率高的資料,會透過Redis協助;並提供以下服務:
* 使用者相關
* 創建使用者、使用者群組
* 登出、登入
* 紅綠燈相關
* 查詢設備清單
* 查詢設備詳細資料
* 查詢設備群組
* 建立或修改排程(可調整紅燈秒數)
* 有關使用**Redis**與否的效能差異
* 資料結構: (id, name, display_name..., wgs_x, wgsy),一筆資料共23個欄位
* 使用Redis
* **10000筆資料**:828, 823, 831, 848, 797 ms (使用Postman)
* **100000筆資料**: 1.4, 1.54, 1.56, 1.51, 1.55 sec (資料過大無法使用Postman, 純計算在本機的資料獲取時間)
* 不使用Redis
* **10000筆資料**:987, 1179, 973, 1027, 960 ms (使用Postman)
* **100000筆資料**: 2.67, 2.35, 2.3, 2.35, 2,38 sec (資料過大無法使用Postman, 純計算在本機的資料獲取時間)
## 參考資料、連結
* [freecodecamp](https://www.freecodecamp.org/news/structuring-a-flask-restplus-web-service-for-production-builds-c2ec676de563/)
###### tags: `Backend` `python`