Upgrade to Pro — share decks privately, control downloads, hide ads and more …

從 APP 到雲端:物聯網產品的軟體設計該如何規劃

從 APP 到雲端:物聯網產品的軟體設計該如何規劃

物聯網產品設計本質為跨領域的結合。除了硬體及外觀機構的挑戰之外,考量到用戶媒介(網頁、APP 及雲端等)的多元,如何在有限資源做出最大價值是很困難的議題。

舉幾個過往常碰觸到的問題:
「我該做APP 嗎?該如何挑選技術呢?」
「哪些部分該做在APP 內?哪些該設計在硬體上?」
「軟體跟硬體該如何協同設計?」
「時程規劃要怎麼做才能避免失敗?」
「產品上線之後該怎樣安排開發資源?」
如果沒有好好的規劃,可能會讓整體開發功虧一簣。

講者於此次講座中將以自身過往經歷出發,分享物聯網軟體設計該如何規劃才能降低產品開發風險並順利上線。

Tweet

More Decks by Sam Huang (sailplaneTW)

Other Decks in Technology

Transcript

  1. 從 APP 到雲端 物聯網的軟體該如何規劃 Sam Huang

  2. Outline 重點在於經驗及原則分享,再以案例做總結 Agenda • 講者介紹 • 背景介紹:從過往的物聯網經驗談起 • 聊聊物聯網開發常碰到的幾個名詞 •

    物聯網開發要注意什麼:觀念分享 • 案例分享:藍牙智能鎖開發 • Q&A
  3. 講者介紹

  4. Sam Huang 軟體開發 / 技術顧問 / 商務營運 • 參與超過 10

    個領域開發系統 • 軟體架構規劃及數位升級、轉型協作 • 偶爾會做技術及相關規劃的分享 • https://sam-huang.info https://www.revtel.tech https://www.eculture.tech/
  5. 忻旅科技 成立於2016年,提供一站式資訊服務 • 顧問諮詢:協助技術佈局及相關規劃 • 開發協力:協助產品開發及後續維運 • 商模合作:協助擴展及增強商業模式 顧問服務 •

    https://consult.revtel.tech/
  6. NFC Maker IO https://www.nfcmaker.io/

  7. 背景介紹:從過往的物聯網經驗談起

  8. 流水十年間 - 軟硬整合漫漫路 PC → NB → Smart Phone →

    Tablet → IoT → AIoT → ? 碩士班 → 創業 個人經驗的拋磚引玉 / 心得分享 2008 2018
  9. 學生時代:臺大嵌入式系統暨無線網路實驗室 Opencsl Why emulate arm board by QEMU ? Raspberry

    Pi (from 2012) / Arduino / … openMoko meego/moblin/symbian/...
  10. 學生時代:臺大嵌入式系統暨無線網路實驗室 Projects PAC DUO • 模擬器 • virtual NIC QoS

    control 中華電信服務不中斷 • os virtualization • queueing theory
  11. 學生時代:臺大嵌入式系統暨無線網路實驗室 系統程式 / 作業系統 / Compiler / ... 學到的東西會在某時間點匯流 processing

    migration / Virtualization ... 看技術從其發展歷史看起 many-core vs. cloud-computing 對技術應用的想像 c
  12. Garmin 時期:Android 工程師 參與專案 • PND x 2 • Handheld

    x 1 • 車機 x 1
  13. Garmin 時期:Android 工程師 主要內容圍繞 android / linux 工作內容 • sensors:

    G sensor / M sensor / gyroscope / Pressure sensor / UV sensor • audio system • others: uboot / utility / touch / 開板子 / …
  14. Garmin 時期:Android 工程師 HAL

  15. Garmin 時期:Android 工程師 讀各種 sensor • spec • android sensor

    arch • garmin integration
  16. Garmin 時期:Android 工程師 產品測試的重要性

  17. Garmin 時期:Android 工程師 硬體其實沒那麼簡單 • const 變數的浮動 • 超過 4

    根 gpio 能表示的硬體版本 (第八版之後量產!) 軟體工具很重要 • 大量的 auto git checkout + symbolic link • 適度引入 wrapper
  18. 創業時期:技術顧問 / 產品設計 / 產品開發 做過蠻多不同開發 • 逆向工程一個日本設備 • 智能鎖

    / 智能灑水器 / 智能畫框 / 健康手環 / 智能工廠 • 區塊鏈冷錢包 心得:理論 ≠ 產品 ≠ 專案 ≠ 商務 https://medium.com/revtel-tech
  19. 聊聊物聯網開發常碰到的名詞

  20. 物聯網:不只是軟硬整合,還包含整體環境的設計!

  21. 物聯網:不只是軟硬整合,還包含整體環境的設計! IDC 預計 2025 年亞太地區物聯網支出將達到 4370 億美元 • 年複合成長率為 12.1%

    • 製造業成為亞太地區物聯網支出的最大來源, 2021 年佔整體市場的三分之一以 上,其次是消費者和政府 • 製造營運 / 生產資產管理 / 全通路營運 / 智慧電網(電力)/ 智慧家居和貨運監控 工業 4.0 / AIoT:滲透進各種技術及領域
  22. 從拆解幾個重要名詞來認識邊界 • 軟體 vs. 硬體 vs. 韌體 • 網頁 /

    網站 • APP • 雲端
  23. 軟體 vs. 硬體 vs. 韌體 硬體:物理世界 軟體 / 韌體:根據與硬體的距離 •

    有視角的差異 • 是否有硬體限制及硬體控制 重要:軟體正在吞噬世界 • 想想 Android
  24. 網頁 / 網站:可以做到的事超乎你的想像 基於 HTML / CSS / Javascript 的文件,可被瀏覽器執行

    • 開放且可快速部署 • 使用者易於取得 開發要點 • 注意框架,如 React / Vue / Angular • 注意差異化,如各家廠商差異及 Webview • 注意實驗性功能,如推播 → 產品可以盡量先走網頁版本
  25. APP:更深入在各平台的體驗 單機版軟體,跑在手機或電腦上 • 較為封閉,Android / iOS 不能互通 開發要點 • 斟酌是否使用跨平台技術

    ◦ Cordova / React Native / Flutter • 注意上架細節 • 注意平台規範,如金流 • 注意維運成本 → 要有搭配的行銷資源
  26. 雲端:容易被混淆的概念 透過網路存取的後端服務,用以提供如資料庫及業務邏輯的服務 • 是一個被濫用且神話的名詞 開發要點 • 有時候指的是伺服器,要考慮地端 • 有多種樣貌,如抽象化及容器技術 •

    要好好考慮價格及架構 • 架構設計跟公司人員配置有很大關係 → 以簡單為第一要務
  27. 物聯網開發要注意什麼:觀念分享

  28. 先說在前頭 … 真實世界的物聯網開發是以下的結合 • 商業模式 • 領域知識 • 開發技術 •

    成本管理 • 內部流程 此外還有隱性的挑戰 • 軟硬開發人員思維方式不同
  29. 理解軟硬開發的時程跟難易度不同 案例:sensor 位置更改及料件更改該怎麼解決? • 除成本考量之外還有什麼? 軟體和硬體的差異 • 前者容易修改及部署,後者則有較高穩定度 • 前者不易規算成本結構,後者較有模組概念

    • 前者影響範圍更接近全域,後者較易於做切隔
  30. 設計第一步:在硬體軟體中追求正確的功能分工 案例:灑水器定時要誰做? • 只需要思考韌體開發難易度? 很多功能其實雙邊都能做該怎辦? • 可以以資源配置思考,但錯誤決策終究會反饋 • 穩定度 /

    邏輯複雜度 / 是否好維護
  31. 多維度思考:架構設計需要納入資源限制的資訊 案例:APP 挑什麼技術做? • 你接受只有 Android 沒有 iOS 嗎? •

    要考慮商模及資源成本 開發是一個連續性行為,唯一貫串的是全局資源管理 • 組隊 / 需求釐清 / 解法設計 / 開發 / 測試 / 上線 / 維護
  32. 接受不完美:雲及落地的架構差異很大 案例:同時一套軟體雲端跟地端都要使用? • https / 連線方式 / 備援 / 其他雲端微服務

    不存在最好的架構,只可能有此時此刻最合適的架構 • 不要追尋泛用的架構解
  33. 有些成本不能省:資安要提前思考 案例:MCU 太弱無法使用 https 資訊安全強調的不完全是技術而是心態 • 過往曾經破解過日本產品:任何漏洞都可能被使用 • 協議加密 /

    應用層加密 / 授權機制設計 / …
  34. 資源配置要注意:不要過早想要省錢 案例:一開始就在規劃省亞馬遜 (AWS) 雲端費用 premature optimization is the root of

    all evil(過早最佳化是萬惡的根源) • 不只是功能也在成本 • 會失去對全局的掌握以及改善的可能 • 不一定真的有省到!
  35. 案例分享:藍牙智能鎖開發

  36. 背景介紹 台灣知名鎖廠的數位轉型嘗試,以產品入手為途徑 → 從零打造一個藍牙電子鎖並搭配 APP 及雲端系統 → 三方角色:傳產方 / 硬體方

    / 軟體方 → 目標設定在給東南亞貨櫃廠做使用
  37. 產品設計 • 接近時自動開鎖 • 支援磁扣 • 一次設定多組使用者 • 使用者有權限分別 •

    電源管理 • 開鎖紀錄管理
  38. 時程規劃:反向推估 時程規劃才是所有開發中最重要的部分 • 「已知的已知」「已知的未知」都好處理,「未知的未知」才難 • 考慮當時的組合 ◦ 得先經過 POC 再到

    Production ◦ Waterfall → Scrum (Developing / Operation / Enhancement) • 該走過的路是不會少的,重點在於盡量斬斷相依性 ◦ 斬斷相依性不在於互補而在於獨立運作及負責 → 軟體 POC • 一個月訪談 / 一個月前置 / 三個月開發 / 一個月測試 / 半個月上線 • 每階段可跟次階段部分疊,但每階段的產出要確定
  39. 規格制定 物聯網:重點在「物」、「聯」還是在「網」 • 此案例「物」>「聯」>「網」(其他狀況未必,如小米生態系) 要能夠很好的整合回生產流程:追求產線不更改 藍牙為核心:挑選支援度 / 穩定度 / 後續生產便利的元件

    設定關鍵問題,即使產品不成功還是得留下成果 • 反向手機控制
  40. 系統概述:用軟體測試貫串一切 以 React Native 開發(要研究好藍牙模組)。雲端走 AWS 方案 韌體:物理控制及離線行為 • 切分出「硬體層」「邏輯層」及「通訊協定層」

    APP:負責互動控制鎖,重要業務邏輯放在雲端 • 切分出「通訊協定層」「用戶互動層」及「雲端介接層」 雲端:負責重要商務邏輯及資料庫 • 好的 Dashboard 很重要
  41. 後續營運 交棒:重點在於市場驗證及工程的再開發 • 行銷:建構團隊及文化 • 工程:「維護:開發:優化」=「4:3:3」 復盤思考:不失敗的前提下會留下什麼 • 成功未必能做到,但能追求不失敗

  42. Q&A