WebAPI

已經進入SaaS / PaaS / IaaS 時代已久,還在用舊時代想法規劃網站嗎?

別急著慌張,說不定您的服務已自然順著潮流成為其中的一份子了呢!

作者: Vincent Ke 更新日期: 2021/08/07

「 以Google為例,透過 GoogleMapAPI,第三方開發者可以輕易的使用 Google Map 所提供的套件,串接Google的地圖資料,並鑲嵌在自己的網路。Twitter 利用 WebAPI 分享他們龐大會員的資訊。Amazon 則提供了一個代管主機的應用介面;微軟更是把傳統的Office變成了雲端服務的Office365 」

從上述案例來看,以雲端服務為導向的商業模式,正在這幾年蓬勃發展。但並非是透過網路就是所謂的雲端服務,從雲端機房到WebAPI,其中的學問可是大不相同,雲端服務的類型如下:

傳統方式:
過去台灣的網路公司,主要都是以傳統方式建置產品和服務,不管是從Server硬體、網路、作業系統、機房等等,都由公司一手包辦。而為因應產品的類型,是否用多少頻寬的網路、作業系統、是否使用虛擬主機VM等…都會影響到產品的效能。這樣的建置方式不僅需要對每個技術環節,都有相當程度的了解和考究,投入的時間和人力成本也更是一大考量。

IaaS(Infrastructure as a Service)

IaaS(Infrastructure as a Service),基礎建設即服務 :

將網路建置及server硬體採買、是否虛擬化過程交給廠商管理,而公司本身只要針對硬體設施以外的項目如作業系統、硬體上所需執行的服務及應用程式即可,或是我們可以解釋成僅和外部廠商租賃雲端機房、伺服器、網路環境等等,而不用像過去需要在公司內部自行建置機房,而大部分提供雲端機房的環境亦提供恆溫、24小時監控外、機房本身又具備高規格的防震等級,可以有效負擔掉企業內部機房的維運成本。(例如Linode, AWS, DigitalOcean…等)

PaaS(Platform as a Service), 平台即服務:

除IaaS的項目之外,更把作業系統、開發程式環境都交給廠商管理,這樣公司只要專注在資料處理及服務(應用程式)的開發項目,就像Microsoft Azure所提供的Paas服務,像IaaS一樣提供包括基礎架構服務器,存儲和網路,而且還包括開發環境、開發工具,商業智能(BI)服務,數據庫管理系統等。以微軟Azure而言,PaaS旨在支援完整的Web應用程序生命週期:構建,測試,部署,管理和更新,並於Paas項目上提供更完善的維護及管理。

(例如AWS, Azure…等,因為PaaS有機會包含IaaS)

PaaS有機會包含IaaS

如果對AWS有興趣而且剛好還是個工程師的話,可以參考我們的課程

Linux雲端伺服器,用AWS暸解Apache與Nginx

不過如果對Linux 和 VPS 等架站必須要知道的基礎名詞解釋都還不熟悉的話,可以參考文章:

Linux是什麼?從網站開發到物聯網無所不在的OS作業系統介紹。

學習VPS的重要性與各大Linux VPS 比較(Linode, DigitalOcean, Vultr, AWS Lightsail)

SaaS(Software as a Service),軟體即服務:

透過提供已經產品化的軟體服務是近年來營利的一大趨勢,使用者不再需要負擔自己的開發成本,只需要向廠商訂購該服務,就可以替企業省下大筆的資金。舉Google為例,它提供免費的電子郵件、日曆等服務給大眾使用外,還針對企業推出服務層級協定(SLA)較高的付費網路郵件服務,企業不需要另外採購應用電子郵件的軟體和硬體設備,只要訂購Google的Gmail服務,就能取代自建的電子郵件系統。

像Google Analysis & Adobe Sitecatalyst,也屬於SaaS的一種,提供以監控平台作為服務,透過Web方式登入並提供資料挖掘和商業數據分析。當然像是社群網站Facebook也可以算是SaaS的一種囉!

(常見的SaaS例如 Gmail郵件、Zendesk線上客服、Codepen 線上程式編輯器)

校對小編補充
這邊的SaaS與在網站開發CSS style 進階技術的Sass唸起來是一模一樣。
如果這口語上聽到這個詞必須要依照內容情境來推論對方在講什麼,
商業上多半是講SaaS,網站開發規格則比較可能是Sass

而SaaS更是針對一般的使用者有較高的推廣性,僅要付費就可以享受到其產品所提供的服務,而無須花時間去討論中間的細節。

「從SaaS談到API,進入雲端產品的新世代」

以雲端產品為代表的新時代即將到來,大型企業在軟體上的開發、維護與消費上都出現了重大轉變,更代表著程式設計師在未來可以賦予產品上更高的服務價值,

AWS,Facebook,Google,Twitter和數千家其他網路公司,都透過提供WebAPI的方式大打經濟戰,而服務與服務之間的互動,也從過去SaaS的接口,轉移到WebAPI身上,那API是什麼呢?

API全名叫做應用程式介面(英語:Application Programming Interface,簡稱:API),主要的概念就是把各家或是各種軟體系統的「服務」,做成一種可以「互相溝通」的一種介面,透過服務呼叫、串接的方式來進行產品與產品之間的合作與溝通,重點就在「服務」與「互相溝通」這兩個關鍵字上。

校對小編補充
其實很多網路公司在內部討論的時候不用WebAPI,而直接使用API來稱呼網路服務接口,
但API的全名Application program interface只是代表應用程式的使用介面/接口。
遠在網際網路還不純熟的時代就已經存在。無論是C語言系列的header檔,到製作成動態函式庫。
都可以使用這個名稱。因此本文與之後的系列文都以WebAPI來表達一般網站所提供的外部程式接口。
(不過這個在Google好像被微軟綁架了,都是搜到微軟的相同概念的服務)

我們舉例來說吧

當我們要去大賣場買鞋子的時候,找到了心儀的鞋子卻找不到適合的尺寸,這時該怎麼作呢?

當然我們可以翻箱倒櫃的在賣場中去尋尋覓覓,但這通常不是一般人會做出的直覺選擇吧,其中花費的時間與體力都是無形中的一種成本,還未必可以找到想要的東西,所以我們通常都會選擇「請店員來協助我們」做為我們找鞋子的方式吧!

當你在呼喚了店員請他們協助時,無形中就是對「服務」的一種呼叫,而呼叫店員的這動作就是「API」,他提供的是一種服務,透過呼叫的方式來和另外一支服務「協助找尺寸」去做串接。

1.想找到想要的鞋子尺寸:服務的目的

2.呼叫店員請店員協助:與「協助找尺寸」 的服務進行呼叫與溝通

3.跟店員表示自己要的鞋子和尺寸:提出呼叫服務的需求與規格-我要什麼東西

4.拿到鞋子:完成你需要的服務

當然,主要透過Web作為介面的,就是WebAPI囉!

舉一個實際上在網站上的例子吧!

就像Uber中使用GoogleAPI來當作地圖和導航的介面,不僅可以減少Uber團隊開發自己圖台及精算最佳路徑的成本,更可以把團隊的精力投注在優化產品服務及使用者體驗的項目上,無疑是對產品的一大助力。

而在一般我們看到的APP裡面,所有的動態資訊也都是透過WebAPI和後台DB去進行服務串接的,例如:連鎖咖啡店的會員APP,當你希望使用「檢視優惠」的服務時,就會透過WebAPI的方式,把APP後台上架的這些優惠活動、折扣等等,進行串接,而優惠活動更是動態且持續更新的,總不能每次都版本更新之後才把活動進行上架吧,光是Ios上架的那些繁瑣程序就會讓你心力交瘁了

透過上述的例子,我們可以發現,一項集所有服務於一身的大型產品,不僅本身維運上的成本難以想象,其中對於所提供服務的彈性上更是較難突破,不如把服務切分成各種的WebAPI來做串接,不僅可以分散維護風險外,還可以透過「服務」來創造商機。

以產品做接口來說,「電商網站」和「社群網站」就沒有達到有效的連想,但如果把電商網站的「搜索商品」、「推薦商品」做成一隻對外接口的廣告服務WebAPI,和Facebook的廣告WebAPI做對接,這樣不僅可以在瀏覽動態時做置入性行銷,透過社群間的串接後面產生的經濟效益,更是無法預期。

而一項項服務維護的費用,肯定比維護產品來的少許多,也許在產品草創的初期,有效的運用核心資源,把一些不必要的工作外包給這些雲端服務,並把軟體產品的功能「外包」給WebAPI,讓團隊專注在更快地創建和發布新的業務模式,來保持公司的業務彈性與競爭力,也許這也是快速開發的重要法則。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *