開發經驗甘苦談分享 let's talk about cloud technology · 撰文 | 叡揚資訊...
TRANSCRIPT
那到底什麼是雲端運算呢?我想試著
總結上述說法簡單地解釋為,雲端
運算就是提供用戶某種網路服務,但與傳
統網路服務的差別在於,用戶可以彈性地
依據需求自助地調配服務,不必了解詳細
技術細節,擔心伺服器負載不足或軟體升
級等等的問題,話說到此,相信大家都能
初步了解什麼是雲端運算了,接下來我們
再來談談雲端服務。
Let's Talk About Cloud Technology
SaaS 開發經驗甘苦談分享
撰文 | 叡揚資訊 雲端事業處 吳昆英產品服務經理、林子翔程式設計師
最近這幾年,似乎只要聽到任何東西扯上“雲端"二字都不足為奇了,就連補習班都要叫
做雲端補習班,房屋建案要叫做雲端住宅,而李家同教授曾經對學生開玩笑地說:「雲端
就是,你死了之後就在雲端」。和沛科技總經理翟本喬在「什麼不是雲端運算?」一文中用逆向思考的方式度提出了簡單的判斷原則:「如果你把一份企劃案上所有的「雲端」兩個
字都改成「網路化」、「電子化」、「e化」、或「m化」,而整份企劃案看起來還是一模一
樣的話,那它就不是一份雲端運算的企劃案」。
Cloud ComputingHaving secure access to all your applications and data from any network device
美國國家標準局(NIST)的解釋則是認為雲端運算會具有以下5個基本特徵
雲端運算定義
On-demand self-service 隨需自助服務
Broad network access 隨時隨地用任何網路裝置存取
Resource pooling 多人共享資源池 Rapid elasticity
快速重新佈署靈活度
Measured service 可被監控與量測的服務
| 叡揚e論壇 第74期 | MARCH 20148
站在巨人的肩膀上
美國國家標準局界定了三種雲端運算的服務模
式:分別為IaaS(架構即服務),PaaS(平台即
服務)及SaaS(軟體即服務),請參見上表。
一般而言,PaaS 及 IaaS 的服務模式,已經有
像是 Amazon、Google、Microsoft 等大規模的
公司在維運了,所以現在我們談的雲端服務開
發,通常指的會是 SaaS 雲端軟體服務的開發,
但是在開發過程中,其實也可以使用既有 IaaS
或 PaaS 的服務來協助我們開發,以節省自行
建置底層架構或平台的時間。
雲端技術漸進式遷移
隨著近年來許多雲端服務的發展,許多雲端
儲存技術因應而生,像是 Redis、MongoDB、
Cassandra、Hadoop 等等,若只是要開發一個
新的雲端服務,那直接採用雲端儲存技術自然
不在話下,但若已經有個一個採用傳統資料庫
的舊系統,想要朝雲端服務的方向邁進,或許
並不建議直接就採用這些新技術來開發,因為
這些新興的雲端儲存技術都有其優缺點,不是
每種服務或資料型態都適合,最好實際使用過
再慢慢採用,建議可以先進行的是將你的舊系
統以 JSON+RESTful Web API 的形式包裝起
服務模式 代表廠商 主要客群
SaaS軟體即服務,提供
雲端軟體應用服務
一般或企業用戶
PaaS平台即服務,提供雲
端軟體的開發平台
軟體開發人員
IaaS架構即服務,提供虛
擬主機,儲存空間及
網路等基礎架構
伺服器管理人員
軟體開發人員
MARCH 2014 | 叡揚e論壇 第74期 | 9
來,再漸進式地將部份資料遷移至新的雲端
儲存技術,同時,這也有利於提供接下來我
們要提到的跨平台與裝置(傳統網站、行動
裝置app )的前端技術開發。許多著名的雲
端服務,例如 Dropbox、Google Drive都有提
供 RESTful WEB API 可以供利用,建議在設
計自已的 RESTful Web API 時也可以觀摩看
看。
在行動裝置上也能使用雲端服務
隨著行動裝置普及率大幅成長,現在幾乎人
手一支智慧型手機,甚至是平板電腦,雲端
服務的使用範圍不再受限於電腦桌前,我們
要讓使用者能隨時隨地透過手機、平板電腦
來使用我們的服務。
最簡單的方式是設計適合行動裝置的網頁,
透過 Responsive Web Design (自適應網頁設
計)使網頁能自動適應不同尺寸的螢幕,使用
者更有效率地用手機瀏覽器閱讀、操作。這個
方式開發成本最低,但是卻不能充分利用手
機照相、錄音等原生功能。另一種方式是開
發 Native app (原生應用程式),可以完整地
使用手機的原生功能,效能最好,而且操作介
面最貼近該平台的使用習慣。但是不同平台間
程式碼不能共用,每當要移植到另外一個平
台的時候,就要為該平台重新寫一次 app。也
就是說,如果想要運行在現今市佔率最高的
Android、iOS 兩大平台上,我們就必須維護兩
份不同的程式碼。
開發跨平台Hybrid app所以我們採用第三種方式,Hybr id app,
用 HTML5 技術開發,然後再包裝成一個
Tips
日益茁壯的RESTful 千萬別以為 RESTful 只是輕量級、中小企業在用的次級品。事實上,眾多 Web 實務案例證明它才是 Web 架構的主流派。
目前的大型雲端運算提供者,如 Amazon Web Services 、Google、IBM 、Microsoft、Sun、GoGrid 等,都支援 RESTful 服務,甚至只提供 RESTful API。
| 叡揚e論壇 第74期 | MARCH 201410
原生的 a p p,透過行動裝置上的瀏覽器引擎
(WebView)來運行,並透過特定框架提供的
API 來呼叫原生功能,最後還能上架到不同平台
的市集上。由於是使用 HTML5 開發,所以開
發出來的app是跨平台的,這樣不但只要維護一
份程式碼,而且有網頁開發經驗的人員能更容
易地上手。Javascript 還有很多現成的函式庫及
框架可以使用,善用這些資源不但能減少重複
製造輪子的時間,還能寫出易維護、有彈性的
程式碼。
我們選擇 PhoneGap 來開發跨平台的 Hybrid
app。PhoneGap 是一個 Open Source 的開發框
架,他提供一系列API讓開發者能用 Javascript
呼叫原生功能, PhoneGap 能將 Webapp 包
裝成不同平台的專案,開發者再用該平台的
SDK 來編譯成原生的 app。此外 PhoneGap 還
有雲端編譯的服務(PhoneGap Build),只要
將 Webapp 上傳,就能自動編譯出不同平台的
app。目前 PhoneGap 支援包括 Android、iOS、
WindowsPhone、Blackberry 等多種主流的平台。
並不能完全消彌不同平台的差異
一切看似很美好,只要寫一份程式碼,而且還
是類似網頁的開發方式,就可以發佈到不同的
平台上,實際開發起來卻沒有那麼順利。由於
每個平台的 WebView 實作不盡相同,所以往往
會發生在 Android 上已經調好的版面,怎麼到
了 iOS 上就跑掉了的狀況。另外,Hybrid app
的效能和 Native app 相較之下是比較差的,尤
其是在 Android 環境下很容易因為太多的特效
或太複雜的畫面而影響 app 的流暢性。這時除
了要熟悉不同平台的特性,更需要耐心地在不
同的裝置做測試及優化。
開發 Hybrid app 不只是寫網頁近來使用者體驗也是很熱門的話題,好的使用
者介面更是決定一個 app 優秀與否的關鍵因
素。雖然 Hybrid app 使用 Web 技術,但是開
發 app 和開發傳統網頁卻有很大的區別,如果
只是單純將傳統網頁包裝成 app,想必使用者
不會給予好的評價。
以下幾種方法可以提供更好的使用者體驗:
• 使用SPA(Single Page app)開發方式
• 消除行動裝置 300毫秒的點擊延遲時間
• 善用 touch 事件做出滑動選單或列表的功能
• 專門為行動裝置螢幕量身訂做的介面
最後,開發者應該要抱持著,我正在開發 app
而不是寫網頁的想法,並以 Native app 的標準
來檢視自己的 app,才能開發出好的 app。
結語
有人比喻軟體開發像是蓋大樓,而開發人員就
像是設計師或工程師,有另一個好比喻說軟體
開發像是園藝設計,而開發人員像是園丁,因
為大樓一旦蓋好就很難變動設計了、而園藝需
要會隨著季節、環境及花草特性等等不同隨之
漸漸地調整設計,如何做個好園丁其實不難、
好好了解你的工具與客戶需求、做好應變彈
性、相信春天來臨時、庭園的花草也能生機勃
勃、枝繁葉茂。
MARCH 2014 | 叡揚e論壇 第74期 | 11