開發經驗甘苦談分享 let's talk about cloud technology · 撰文 | 叡揚資訊...

4
到底什麼是雲端運算呢?我想試著 總結上述說法簡單地解釋為,雲端 運算就是提供用戶某種網路服務,但與傳 統網路服務的差別在於,用戶可以彈性地 依據需求自助地調配服務,不必了解詳細 技術細節,擔心伺服器負載不足或軟體升 級等等的問題,話說到此,相信大家都能 初步了解什麼是雲端運算了,接下來我們 再來談談雲端服務。 Let's Talk About Cloud Technology SaaS 開發經驗甘苦談分享 撰文 | 叡揚資訊 雲端事業處 吳昆英產品服務經理、林子翔程式設計師 最近這幾年,似乎只要聽到任何東西扯上“雲端"二字都不足為奇了,就連補習班都要叫 做雲端補習班,房屋建案要叫做雲端住宅,而李家同教授曾經對學生開玩笑地說:「雲端 就是,你死了之後就在雲端」。和沛科技總經理翟本喬在「什麼不是雲端運算? 」一文中用 逆向思考的方式度提出了簡單的判斷原則:「如果你把一份企劃案上所有的「雲端」兩個 字都改成「網路化」、「電子化」、「e化」、或「m化」,而整份企劃案看起來還是一模一 樣的話,那它就不是一份雲端運算的企劃案」。 Cloud Computing Having 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 2014 8

Upload: others

Post on 18-Oct-2019

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 開發經驗甘苦談分享 Let's Talk About Cloud Technology · 撰文 | 叡揚資訊 雲端事業處 吳昆英產品服務經理、林子翔程式設計師 最近這幾年,似乎只要聽到任何東西扯上“雲端"二字都不足為奇了,就連補習班都要叫

那到底什麼是雲端運算呢?我想試著

總結上述說法簡單地解釋為,雲端

運算就是提供用戶某種網路服務,但與傳

統網路服務的差別在於,用戶可以彈性地

依據需求自助地調配服務,不必了解詳細

技術細節,擔心伺服器負載不足或軟體升

級等等的問題,話說到此,相信大家都能

初步了解什麼是雲端運算了,接下來我們

再來談談雲端服務。

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

Page 2: 開發經驗甘苦談分享 Let's Talk About Cloud Technology · 撰文 | 叡揚資訊 雲端事業處 吳昆英產品服務經理、林子翔程式設計師 最近這幾年,似乎只要聽到任何東西扯上“雲端"二字都不足為奇了,就連補習班都要叫

站在巨人的肩膀上

美國國家標準局界定了三種雲端運算的服務模

式:分別為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

Page 3: 開發經驗甘苦談分享 Let's Talk About Cloud Technology · 撰文 | 叡揚資訊 雲端事業處 吳昆英產品服務經理、林子翔程式設計師 最近這幾年,似乎只要聽到任何東西扯上“雲端"二字都不足為奇了,就連補習班都要叫

來,再漸進式地將部份資料遷移至新的雲端

儲存技術,同時,這也有利於提供接下來我

們要提到的跨平台與裝置(傳統網站、行動

裝置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

Page 4: 開發經驗甘苦談分享 Let's Talk About Cloud Technology · 撰文 | 叡揚資訊 雲端事業處 吳昆英產品服務經理、林子翔程式設計師 最近這幾年,似乎只要聽到任何東西扯上“雲端"二字都不足為奇了,就連補習班都要叫

原生的 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