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

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

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

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

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

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

Sam Huang

May 06, 2022
Tweet

More Decks by Sam Huang

Other Decks in Technology

Transcript

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

    View Slide

  2. Outline
    重點在於經驗及原則分享,再以案例做總結
    Agenda
    ● 講者介紹
    ● 背景介紹:從過往的物聯網經驗談起
    ● 聊聊物聯網開發常碰到的幾個名詞
    ● 物聯網開發要注意什麼:觀念分享
    ● 案例分享:藍牙智能鎖開發
    ● Q&A

    View Slide

  3. 講者介紹

    View Slide

  4. Sam Huang
    軟體開發 / 技術顧問 / 商務營運
    ● 參與超過 10 個領域開發系統
    ● 軟體架構規劃及數位升級、轉型協作
    ● 偶爾會做技術及相關規劃的分享
    ● https://sam-huang.info https://www.revtel.tech
    https://www.eculture.tech/

    View Slide

  5. 忻旅科技
    成立於2016年,提供一站式資訊服務
    ● 顧問諮詢:協助技術佈局及相關規劃
    ● 開發協力:協助產品開發及後續維運
    ● 商模合作:協助擴展及增強商業模式
    顧問服務
    ● https://consult.revtel.tech/

    View Slide

  6. NFC Maker IO
    https://www.nfcmaker.io/

    View Slide

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

    View Slide

  8. 流水十年間 - 軟硬整合漫漫路
    PC → NB → Smart Phone → Tablet → IoT → AIoT → ?
    碩士班 → 創業
    個人經驗的拋磚引玉 / 心得分享
    2008 2018

    View Slide

  9. 學生時代:臺大嵌入式系統暨無線網路實驗室
    Opencsl Why emulate arm board by QEMU ?
    Raspberry Pi (from 2012) / Arduino / …
    openMoko
    meego/moblin/symbian/...

    View Slide

  10. 學生時代:臺大嵌入式系統暨無線網路實驗室
    Projects
    PAC DUO
    • 模擬器
    • virtual NIC QoS control
    中華電信服務不中斷
    • os virtualization
    • queueing theory

    View Slide

  11. 學生時代:臺大嵌入式系統暨無線網路實驗室
    系統程式 / 作業系統 / Compiler / ...
    學到的東西會在某時間點匯流
    processing migration / Virtualization ...
    看技術從其發展歷史看起
    many-core vs. cloud-computing
    對技術應用的想像
    c

    View Slide

  12. Garmin 時期:Android 工程師
    參與專案
    • PND x 2
    • Handheld x 1
    • 車機 x 1

    View Slide

  13. Garmin 時期:Android 工程師
    主要內容圍繞 android / linux
    工作內容
    • sensors: G sensor / M sensor /
    gyroscope / Pressure sensor / UV sensor
    • audio system
    • others: uboot / utility / touch / 開板子 / …

    View Slide

  14. Garmin 時期:Android 工程師
    HAL

    View Slide

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

    View Slide

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

    View Slide

  17. Garmin 時期:Android 工程師
    硬體其實沒那麼簡單
    • const 變數的浮動
    • 超過 4 根 gpio 能表示的硬體版本
    (第八版之後量產!)
    軟體工具很重要
    • 大量的 auto git checkout +
    symbolic link
    • 適度引入 wrapper

    View Slide

  18. 創業時期:技術顧問 / 產品設計 / 產品開發
    做過蠻多不同開發
    ● 逆向工程一個日本設備
    ● 智能鎖 / 智能灑水器 / 智能畫框 / 健康手環 / 智能工廠
    ● 區塊鏈冷錢包
    心得:理論 ≠ 產品 ≠ 專案 ≠ 商務
    https://medium.com/revtel-tech

    View Slide

  19. 聊聊物聯網開發常碰到的名詞

    View Slide

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

    View Slide

  21. 物聯網:不只是軟硬整合,還包含整體環境的設計!
    IDC 預計 2025 年亞太地區物聯網支出將達到 4370 億美元
    ● 年複合成長率為 12.1%
    ● 製造業成為亞太地區物聯網支出的最大來源, 2021 年佔整體市場的三分之一以
    上,其次是消費者和政府
    ● 製造營運 / 生產資產管理 / 全通路營運 / 智慧電網(電力)/ 智慧家居和貨運監控
    工業 4.0 / AIoT:滲透進各種技術及領域

    View Slide

  22. 從拆解幾個重要名詞來認識邊界
    ● 軟體 vs. 硬體 vs. 韌體
    ● 網頁 / 網站
    ● APP
    ● 雲端

    View Slide

  23. 軟體 vs. 硬體 vs. 韌體
    硬體:物理世界
    軟體 / 韌體:根據與硬體的距離
    ● 有視角的差異
    ● 是否有硬體限制及硬體控制
    重要:軟體正在吞噬世界
    ● 想想 Android

    View Slide

  24. 網頁 / 網站:可以做到的事超乎你的想像
    基於 HTML / CSS / Javascript 的文件,可被瀏覽器執行
    ● 開放且可快速部署
    ● 使用者易於取得
    開發要點
    ● 注意框架,如 React / Vue / Angular
    ● 注意差異化,如各家廠商差異及 Webview
    ● 注意實驗性功能,如推播
    → 產品可以盡量先走網頁版本

    View Slide

  25. APP:更深入在各平台的體驗
    單機版軟體,跑在手機或電腦上
    ● 較為封閉,Android / iOS 不能互通
    開發要點
    ● 斟酌是否使用跨平台技術
    ○ Cordova / React Native / Flutter
    ● 注意上架細節
    ● 注意平台規範,如金流
    ● 注意維運成本
    → 要有搭配的行銷資源

    View Slide

  26. 雲端:容易被混淆的概念
    透過網路存取的後端服務,用以提供如資料庫及業務邏輯的服務
    ● 是一個被濫用且神話的名詞
    開發要點
    ● 有時候指的是伺服器,要考慮地端
    ● 有多種樣貌,如抽象化及容器技術
    ● 要好好考慮價格及架構
    ● 架構設計跟公司人員配置有很大關係
    → 以簡單為第一要務

    View Slide

  27. 物聯網開發要注意什麼:觀念分享

    View Slide

  28. 先說在前頭 …
    真實世界的物聯網開發是以下的結合
    ● 商業模式
    ● 領域知識
    ● 開發技術
    ● 成本管理
    ● 內部流程
    此外還有隱性的挑戰
    ● 軟硬開發人員思維方式不同

    View Slide

  29. 理解軟硬開發的時程跟難易度不同
    案例:sensor 位置更改及料件更改該怎麼解決?
    ● 除成本考量之外還有什麼?
    軟體和硬體的差異
    ● 前者容易修改及部署,後者則有較高穩定度
    ● 前者不易規算成本結構,後者較有模組概念
    ● 前者影響範圍更接近全域,後者較易於做切隔

    View Slide

  30. 設計第一步:在硬體軟體中追求正確的功能分工
    案例:灑水器定時要誰做?
    ● 只需要思考韌體開發難易度?
    很多功能其實雙邊都能做該怎辦?
    ● 可以以資源配置思考,但錯誤決策終究會反饋
    ● 穩定度 / 邏輯複雜度 / 是否好維護

    View Slide

  31. 多維度思考:架構設計需要納入資源限制的資訊
    案例:APP 挑什麼技術做?
    ● 你接受只有 Android 沒有 iOS 嗎?
    ● 要考慮商模及資源成本
    開發是一個連續性行為,唯一貫串的是全局資源管理
    ● 組隊 / 需求釐清 / 解法設計 / 開發 / 測試 / 上線 / 維護

    View Slide

  32. 接受不完美:雲及落地的架構差異很大
    案例:同時一套軟體雲端跟地端都要使用?
    ● https / 連線方式 / 備援 / 其他雲端微服務
    不存在最好的架構,只可能有此時此刻最合適的架構
    ● 不要追尋泛用的架構解

    View Slide

  33. 有些成本不能省:資安要提前思考
    案例:MCU 太弱無法使用 https
    資訊安全強調的不完全是技術而是心態
    ● 過往曾經破解過日本產品:任何漏洞都可能被使用
    ● 協議加密 / 應用層加密 / 授權機制設計 / …

    View Slide

  34. 資源配置要注意:不要過早想要省錢
    案例:一開始就在規劃省亞馬遜 (AWS) 雲端費用
    premature optimization is the root of all evil(過早最佳化是萬惡的根源)
    ● 不只是功能也在成本
    ● 會失去對全局的掌握以及改善的可能
    ● 不一定真的有省到!

    View Slide

  35. 案例分享:藍牙智能鎖開發

    View Slide

  36. 背景介紹
    台灣知名鎖廠的數位轉型嘗試,以產品入手為途徑
    → 從零打造一個藍牙電子鎖並搭配 APP 及雲端系統
    → 三方角色:傳產方 / 硬體方 / 軟體方
    → 目標設定在給東南亞貨櫃廠做使用

    View Slide

  37. 產品設計
    • 接近時自動開鎖
    • 支援磁扣
    • 一次設定多組使用者
    • 使用者有權限分別
    • 電源管理
    • 開鎖紀錄管理

    View Slide

  38. 時程規劃:反向推估
    時程規劃才是所有開發中最重要的部分
    ● 「已知的已知」「已知的未知」都好處理,「未知的未知」才難
    ● 考慮當時的組合
    ○ 得先經過 POC 再到 Production
    ○ Waterfall → Scrum (Developing / Operation / Enhancement)
    ● 該走過的路是不會少的,重點在於盡量斬斷相依性
    ○ 斬斷相依性不在於互補而在於獨立運作及負責
    → 軟體 POC
    ● 一個月訪談 / 一個月前置 / 三個月開發 / 一個月測試 / 半個月上線
    ● 每階段可跟次階段部分疊,但每階段的產出要確定

    View Slide

  39. 規格制定
    物聯網:重點在「物」、「聯」還是在「網」
    ● 此案例「物」>「聯」>「網」(其他狀況未必,如小米生態系)
    要能夠很好的整合回生產流程:追求產線不更改
    藍牙為核心:挑選支援度 / 穩定度 / 後續生產便利的元件
    設定關鍵問題,即使產品不成功還是得留下成果
    ● 反向手機控制

    View Slide

  40. 系統概述:用軟體測試貫串一切
    以 React Native 開發(要研究好藍牙模組)。雲端走 AWS 方案
    韌體:物理控制及離線行為
    ● 切分出「硬體層」「邏輯層」及「通訊協定層」
    APP:負責互動控制鎖,重要業務邏輯放在雲端
    ● 切分出「通訊協定層」「用戶互動層」及「雲端介接層」
    雲端:負責重要商務邏輯及資料庫
    ● 好的 Dashboard 很重要

    View Slide

  41. 後續營運
    交棒:重點在於市場驗證及工程的再開發
    ● 行銷:建構團隊及文化
    ● 工程:「維護:開發:優化」=「4:3:3」
    復盤思考:不失敗的前提下會留下什麼
    ● 成功未必能做到,但能追求不失敗

    View Slide

  42. Q&A

    View Slide