技術交流

Web Service 應用的迷思

更新於

現今有許多非常火熱的資訊應用議題,例如:電子商務、工業 4.0、行動通訊、大數據、雲端服務…等。我們從技術的層面來抽絲剝繭,把相關的基礎技術元件一一分離出來檢視,其中非常重要的一項元素就是 Web Service。 Web Service 的應用讓傳統異質系統間的連結與資料交換顯得更簡單與容易;但是,也可能因為廣受推崇,會讓人以為所有的資訊系統或是應用只要跟 SOA/Web Service 沾上邊就是萬能的。所有資訊技術都有其優缺點及應用的適用性,在此並非要討論 Web Service 架構或是應用優缺點,我們只就其架構在應用時可能會遇到的問題 (或是我們曾經處理過的問題)。至於如何避免其缺點,端視讀者應用時的考量。

將問題歸納,可分為三部分:

如何保證交易的一致性,符合 ACID 四個特性

設計 OLTP 系統的人都知道,如何保證交易的一致性(transaction consistent) 是不可違反的「天條」,也就是要符合 ACID 標準。

原子性(Atomicity)

All or Nothing,亦即是在同一交易中(transaction)所有作業要全部完成,只要其中一項失敗,整個交易必需回復到交易前狀態。

一致性(Consistency)

相關聯的資料必須保持一致結果,不可有如同步性(concurrency)問題(e.g.: lost update)等情況造成資料不一致。

隔離性(Isolation)

保證多個同時進行的交易,其結果不得有與各交易單獨連續執行有不同的糾果,亦即是要保證交易的 Serializable (可序列化)。

持久性(Durability)

必須保證已確認的交易資料,即使硬體設備、網路、儲存器的失敗,有可以將其回復。

多個 Web Service 之間基本視為獨立的交易(stateless),如果設計多個 Web service 來處理交易,又未應用 Stateful 的機制,就可能存在交易資料不一致的風險。

XML 格式傳遞資料網路流量太大問題

Web Service 的資料傳遞的格式就是以 XML 標準,它統一了傳統 EDI 資料交換格式紛亂的問題。但是 XML 除了交易資訊本身,還包含了 XML 的標籤(tag)。XML 是純文字型態,資料中的附圖等二進位資料,在傳送前必須經過編碼成文字格式,會造成資料量暴增。

相同資料以不同格式表現的檔案大小
相同資料以不同格式表現的檔案大小

Web Service 安全標準問題

Web Service 大部分都是在 Internet 等開放網路上傳輸,所以就有許多不可測的網路安全風險。日前,在美國的汽車發現有遭受駭客遠端惡意遙控的風險。我們可以預期在網際網路上 Web service 在行動通訊(Mobile)或物聯網(IoT)越普遍應用,其資安風險也越高,是值得系統設計應用者嚴肅對待。

相關汽車大廠遭受訴訟的新聞
閱讀更多