應用工程師、資訊新鮮人的學習目標 – 程式設計
從事資訊教育多年,常常聽到期盼進入資訊行業的新鮮人或轉職者說,「我想學習業界使用較夯與具有趨勢的程式語言」,卻甚少聽到一個欲進入資訊行業的新鮮人說,我想學會「資料儲存與管理,以及分析技術」。
學會程式設計的技能,的確是應用工程師第一個門檻,進而能夠提出與完成需求的解決方案,這是職場上對於應用工程師,認可的基本能力。
但我們再想想,這些系統功能處理前與處理後的資料從何處來,最後又儲存在何處?簡單地說,就是一個基本概念的 DFD(Data FlowDiagram) 流程思考,所以任何需求的處理流程,往往需要在這基礎上進行。
所以,一個程式設計師的基本能力,是否需要具備有資料儲存分析與建置與存取的能力。
答案是「必須的」。即使我們看到初階的應用工程師,專注在前端UI與既定的資料模組應用;往往得面對資料模組(API)提供下的 SQL-Pass-Through 或者採用 ORM 軟體工程下存取架構的文件,這些程式設計師往往丈二摸不著頭腦般地仍得請教或閱讀相關的文件,才能完成系統對於資料處理的流程與需求。
即使不直接碰觸資料儲存裝置與規格,仍然得對「資料儲存(Data Storage)」,存著一份戰戰兢兢的恭敬之心,避免在開發系統中提供錯誤或者不完整的資訊。
一個商業模組IoT物聯網自動化設計思考
我來舉一個簡單需求的例子,最近我接受的一個東部的城鄉推廣需求計畫案,一個年輕女子返鄉創業與欲推展她從小到大成長的海灣小村,想在活絡起這一個小村的人文歷史與產業。
於是,單純就從一個小村的咖啡館開始展開…
整合我這邊的團隊,構思一個旅客無須再安裝APP,只要進入小村咖啡廳就被推播一個Line Banner到手機來,邀請他進入這一個具有歷史的小村入口,旅客而不單純只是進入一個古樸的咖啡小館而已。
所以我們構思了結合在人手一機的APP-Line上進行發展,整合物聯網與雲端服務與RWD網站系統設計。,但又需要建立起後台儲存Line好友的資訊與整個小村導覽的村民證與商店平台資訊。
因此採用了幾個部分介面:
- Line Bot
- Line Simple Beacon
- Line LIFF整合自行開發的商務網站,整合Line Login。
如圖一為 Line Simple Beacon架構
單純來看Line Beacon架構,在架構上需要衍生儲存裝置配置。
幾經檢討之後,架構上決定使用Azure SQL Database,目的在於需要收集與Line Beacon後台維護的基準資料,以利推播訊息的動態設定。
收集資訊為:
- Line好友的Profile
- Line Beacon信標hwid,配合後台維護的資料適時性資料。如推播相關資訊的維護。
- Line Beacon回送的訊息歷史資料,進行數據分析用。
考慮資料量逐漸龐大,以及關聯性的資料設計,牽涉到基本資料與歷史資料等。
另外在於維護效能考量,所以使用 Azure Database解決方案進行。
一個前台應用是人機介面Line APP與IoT設備(BLE-Beacon)應用,但整個推播流程與收集與分析,須集中的後端服務(RESTful Service),需要選擇適當的儲存裝置進行。
主要可量是強化異動處裡的效能上,故選擇了「結構式資料庫」進行Beacon WebHook服務系統設計的儲存依據。
一個鄉民證與電商平台與導覽資訊的平台
開發一個RWD網站系統,整合在Line Login與LIFF(Line Front End Framework)上,透過前端Line APP進入系統進行操作,這是一個免APP安裝,免維護APP與整合所有人機介面的前端系統開發。而後台儲存裝置,仍需要進行幾點考量。
如圖二為整合在 Line LIFF 網站系統
功能面上考量:
- 讓使用者透過Line APP進行拍攝之後主動上傳到Lint Bot再傳送到自訂雲端服務進行相片儲存,接下來透過LIFF系統可以檢視自己的旅遊小村莊的相片簿。
- 提供後台編輯小村文青文章儲存與網站公告。
因此我們考量儲存架構為:
- Azure SQL Database
- Azure Blob Storage
- Azure File Storage
其中需要考量結構式與非結構式資料的儲存架構,採用最佳化設計考量,因此進行不同的儲存架構分析。
一個後台系統,是程式邏輯核心
這句後總結一個概念,「資料儲存是整個應用系統的核心與一部分」。
我常常聽到應用系統就是使用程式開發進行系統需求功能的解決方案;不錯,但現今逐步發展成系統UI多型化架構上,我們慢慢體驗到應用系統工程開發,似乎著力在UI設計與溝通上。許多的邏輯與運算,慢慢指向後端服務採用的分散設計架構 。而其中更具有彈性的設計,就是將商業規則與運算的Formular指向儲存裝置,進行參數或者參照資料的設計架構。透過彈性與機動的資料維護,降低系統商業規則改變的維運負擔。
當系統商業規格生命週期越短時,一切趨向動態與敏捷設計規範,儲存裝置解決程序邏輯性的因應,勢在必行。
如圖三,為後台維運 Beacon hwid 雛型設計。
這系統規劃著重在推播資訊客製化維護,避免推播資訊服務程序寫死,另外目的在於資料收集流程,預定透過Azure Data Factory進行彙整與分析資料,最後採用Power BI進行圖解統計分析提供。
我們需要考量儲存裝置的配合,如:
- Power BI整合圖解設計
- Azure Factory整合SSIS資料遷移技術萃取有效資料與分析數據整理
一個系統,萬般儲存裝置
系統往往不是單純透過程式碼構成,既成系統,就是一個整體性架構,這架構構成有:
- 環境
- 平台
- 服務
- 應用系統(程式碼)
- 儲存裝置
- 安全性
- 網路
在這異質環境與多樣化服務的整合驅使下,資料儲存往往是開始與結束點的重中之重;慎選相對的儲存解決方案,學習如何進行系統儲存可行性評估與架構設計,是您進入資訊工程師必須具備的條件。
我們不再面對單純的系統架構的同時,想看看,是否應該讓儲存裝置這樣的認知,不是在單純的儲存,而應用系統架構的核心整合與解決方案必要。