雲端服務

雲端服務 Cloud Native (1)

教學目標

初步了解雲原生架構的基本概念。

重點概念

首先雲原生的概念最早是在 2015 年由 Pivotal 公司的 Matt Stine 撰寫了一本叫做遷移至雲原生應用架構的文件,我們能夠從官方網站免費下載 PDF 檔,其中探討了雲原生應用架構的主要特性,分別為:

  1. 十二個因素的應用程式 (Twelve-Factor Applications):雲原生應用程式架構的集合,其主要專注於透過宣告性設定來提高速度、安全性和規模橫向擴展,並且提供無狀態和無共享的程序,以及部署環境需要整體鬆散耦合。
  2. 微服務 (Microservices):微服務代表了整體業務的分解,並且將系統轉換為可以獨立部署的服務,並且最小的原子服務單元就是提供商業價值。
  3. 自主式服務的敏捷基礎設施 (Self-Service Agile Infrastructure):開發雲原生應用程式架構的團隊通常也會負責部署和持續運營,所以雲原生架構必須提供團隊自助式的服務平台,也就是快速、重複和一致的提供前端應用環境和後端服務平台。
  4. 基于 API 的協同合作 (API-Based Collaboration):在雲原生應用程式中服務之間的唯一互動模式主要是透過已經發佈和版本化的 API,這些 API 通常是具有 JSON 序列化的 HTTP REST 格式,但是也能夠使用其它協議和序列化格式,以利要團隊能夠部署新功能,以及自主式服務的敏捷基礎設施主要透過 API 請求互動進行提供、縮放和維護應用程式基礎設施的相關操作。
  5. 反脆弱 (Antifragile):所謂反脆弱的概念主要是受到壓力時變得更高品質的系統,像是將隨機讓正式環境產生故障,以利識別和消除架構中的缺陷,並且透過明確的查找出應用程式架構中的弱點,並且強制進行修復,此時架構自然會隨著時間的推移更大程度提供更高品質的系統。

接著雲原生應用程式架構的集合主要有十二個因素,分別為:

  1. 程式碼庫 (Codebase):每個部署的應用程式皆在版本系統中有一個獨立的程式碼庫,並且能夠在不同的環境部署多個實體。
  2. 相依 (Dependencies):每個部署的應用程式皆需要使用適當的工具針對相依關係進行顯式的宣告,而不會在在部署環境中隱式的實現相依關係。
  3. 設定 (Config):設定或其隨著發佈環境而變更的部份應該作為作業系統層級的環境變數進行注入。
  4. 後端服務 (Backing services):主要需要後端服務,並且部署在所有環境中皆相同執行。
  5. 建置、發佈和執行 (Build, release, run):主要需要建立一個能夠部署應用程式元件,並且綁定設定,以及根據元件和設定的組合來啟動一個或多個程序,請注意部署和設定這兩個階段是嚴格分離。
  6. 處理程序 (Processes):每個部署的應用程式執行一個或多個無狀態程序,並且它們之間不需要共享任何東西,至於任何需要的狀態皆會儲存於後端服務。
  7. 連接埠綁定 (Port binding):每個部署的應用程式皆是獨立的,並且透過連接埠綁定導出所有服務。
  8. 平行 (Concurrency):主要透過水平擴展應用程式處理程序來實現平行處理。
  9. 可任意處理 (Disposability):主要透過快速啟動和優雅的終止處理程序,實現最大程度的強建性,以利允許快速彈性縮放、部署更改和從崩潰中恢復。
  10. 開發和正式環境平台 (Dev/prod parity):主要透過保持開發、測試和正式環境盡可能相同的環境來實現持續交付和部署。
  11. 日誌記錄 (Logs):主要將日誌視為事件串流,並且允許執行環境透過集中式服務進行收集、聚合、索引和分析事件。
  12. 管理程序 (Admin processes):主要針對行政或管理類型的任務皆應該與應用程式長期執行的相同環境中一次性完成。

上述十二個因素非常適合快速部署應用程式,因為其不需要針對將要部署的環境進行任何設定,而是採用簡單而一致的機制,以利實現自動化和快速設定新環境的部署應用。

再來從高層次來看,雲原生架構意味著適應許多新的可能性,但與傳統的本地基礎架構相比,雲原生所提供的架構限制條件非常不同,雲原生主要提供非常不同的方式來滿足非功能性需求,如果架構師未能使他們的方法適應這些不同的限制條件,則其設計的系統通常是脆弱、昂貴,並且難以維護,但是架構良好的雲原生架構下的系統理應能夠很大程度的自我修復,具有成本效益,並且可以透過持續整合和持續交付,以利更容易更新和維護。此時雲原生架構有五大原則,這些原則將能夠有助於確保您的設計充分利用雲原生架構,同時避免將舊的方法帶入新平台的陷阱,分別為:

  1. 設計自動化 (Design for automation):自動化一直是軟體系統的最佳實務,自動化流程將能夠比手動更快速的進行修復,擴展和部署系統。
  2. 有效管理狀態 (Be smart with state):管理使用者資料或系統狀態是建構分散式雲原生架構最困難的部份,因此我們應該將針對狀態儲存進行設定,以及如何設計無狀態的元件服務。
  3. 支援託管服務 (Favor managed services):大多數的雲端提供商皆提供豐同的託管服務,以利我們免於管理後端平台或基礎架構的麻煩,因此託管服務通常能夠盡可能的節省組織時間和營運成本。
  4. 深度防禦方法 (Practice defense in depth):雲原生架構需要處理外部攻擊,因此他們透過在每個元件之間應用身份驗證,並且透過深度防禦方法最小化內部和外部元件之間的信任,除了身份驗證之外,更包括速率限制和腳本注入等內容,設計中的每個元件皆應該個保護本身免受其它元件的影響,這不僅使架構具有很強的彈性,並且使得雲端環境中部署服務的結果更加容易
  5. 不斷調整架構 (Always be architecting):雲原生架構的核心特徵之一是它始終在不斷發展,作為一個雲原生的架構師,隨著組織需求的變化,IT 系統的變化和雲端提供商本身的功能發生變化,我們應該始終尋求改進和簡化系統架構,雖然這無疑需要不斷的投資,若是 IT 系統無法迅速使組織陷入停滯,將無法應對新的威脅和機遇。

最後建構雲原生的架構主要測重於如何針對雲原生獨特功能優化系統架構,傳統架構傾向於針對固定的高成本基礎架構進行優化,這需要大量的手動修改,因此傳統架構主要側重於相對較小固定數量的元件彈性和效能。然而在雲原生架構中固定的基礎設施沒有多大意義,因為雲端環境是根據使用情況進行收費,這樣可以減少佔用空間時節省資金,而且自動化也更容易,因此自動放大和縮小要容易得多,所以雲原生架構主要側重於透過水平擴展,分散式處理和自動更換故障元件來實現彈性和擴展,同時我們遵循雲原生的架構原則將能夠更有效的改進和調整系統架構,以利適應下一個環境轉變。

相關資源

雲端服務 Microsoft Planner (1)

教學目標

初步了解 Microsoft Planner 雲端服務基本概念。

重點概念

首先在企業中不論任何工作皆會需要建立工作相關計劃、針對不同工作成立小組、指派工作給特定人員和更新工作的狀態,此時我們可以透過 Microsoft Planner 雲端服務中的簡單步驟完成此需求。

接著當我們開始使用 Microsoft Planner 雲端服務時,主要有三個步驟,分別為:

  1. 登入帳號和建立計劃。
  2. 新增工作和指派給特定人員。
  3. 將工作分成不同階段和更新狀態。

再來當我們開始規劃工作時,每項工作皆會有一份需要追蹤的清單,此時我們就能夠新增工作的檢查清單,以及附加檔案、相片或連結至工作,以利我們隨時了解待辦事項清單的狀況。同時我們也可以透過訂閱功能取得有關工作和計劃變的電子郵件。此外每項工作最好有開始日期和結束日期,同時設定及更新工作進度為尚未開始、進行中和已完成三種狀態,若是工作逾期,則會以紅色顯示到期日。

最後當我們在進行工作的過程中時將能夠檢視計劃的進度,透過圖表的方式查看哪些工作落後、哪些人的工作量過高。此外我們還能夠隨時隨地透過 iPhone 或 Android 手機下載 Planner App 掌握計劃的最新資訊。

總結 Microsoft Planner 雲端服務能夠讓組織團隊的工作以視覺化的方式呈現,其本質就是看板管理,雖然功能看似接近完整,但還是有些限制,個人認為主要有三個限制影響導入使用的意願,分別為:

  1. 沒有日曆檢視的功能。
  2. 沒有訪客存取的功能。
  3. 沒有工作通知的功能。

其中日曆檢視和訪客存取的功能皆會在 2017 年 11 月釋出此功能,那時我們將能夠試著評估導入 Microsoft Planner 至企業中針對不同工作成立小組、指派工作給特定人員和更新工作的狀態的可行性。

相關資源

雲端服務 AWS vs Azure (1)

教學目標

初步了解分析與大數據之應用對應的雲端服務。

重點概念

首先目前許多企業已經開始採用雲端服務,像是 AWS 雲端服務或 Azure 雲端服務,然而不同雲端服務將會不同的服務進行分析和大數據之應用。

接著根據 Azure 官方文件,我們可以了解分析和大數據之應用的雲端服務主要可以分為八大範圍,不同範圍皆有對應的雲端服務,請參考下表。

範圍 AWS 服務 Azure 服務
資料倉儲 Redshift SQL Data Warehouse
資料處理 Elastic MapReduce (EMR) HDInsight
資料整合 Data Pipeline Data Factory
資料分析 Kinesis Analytics Stream Analytics、Data Lake Analytics、Data Lake Store
資料視覺化 QuickSight PowerBI
資料搜尋 Elasticsearch Service、Cloud Search Marketplace-Elasticsearch、Azure Search
機器學習 Machine Learning Machine Learning
資料探索 Amazon Athena Data Catalog

再來為了完成分析和大數據之應用,僅僅靠上述範圍所對應的雲端服務是非常不足夠,此時我們還會針對不同的功能採用適當的雲端服務,根據 Azure 官方文件主要有十三大功能類別,分別為:

  1. 市集
  2. 計算
  3. 儲存
  4. 網路和內容交付
  5. 資料庫
  6. 分析和大數據
  7. 智慧
  8. 物聯網
  9. 管理和監控
  10. 行動服務
  11. 安裝、識別和存取
  12. 開發工具
  13. 企業整合

最後我們針對不同分析和大數據之應用範圍採用對應的雲端服務,同時針對不同功能類別採用適當的雲端服務之外,理應就能夠滿足大部分企業分析與大數據之應用的需求。

總結未來將會是雲端的時代,資訊人員將要學習如何針對企業的需求評估最適當的雲端服務之解決方案,同時許多內部系統之解決方案是否能夠移至雲端進行管理將會是未來的一大挑戰,若是順利移轉成功,將能夠有效為企業節省許多伺服器維護的人力成本,資訊人員將有更多機會透過雲端服務整合應用解決企業所面臨的問題與痛點。

相關資源

雲端服務 App Annie - Advertising Analytics (1)

教學目標

初步了解 App Annie - Advertising Analytics 廣告管理平台。

重點概念

使用目的

App Annie - Advertising Analytics 主要是廣告管理平台,可以匯整不同廣告平台的資訊,包括 Facebook 廣告 (並非 FAN )。

基本操作

簡單三個步驟,建立匯整不同廣告平台的資訊。

  1. 新增廣告來源平台的帳號。
  2. 輸入使用者登入相關資訊。
  3. 進行廣告活動與 App 連結。

成效報表

主要呈現任何時間區間的活動廣告成效資訊。

  • 廣告收益 (Ad Revenue)
  • 每千次曝光成本 (eCPM)
  • 每千次點擊成本 (eCPC)
  • 曝光 (Impressions)
  • 點擊 (Clicks)
  • 廣告供應率 (Fill Rate)

特色說明

App Annie - Advertising Analytics 廣告管理平台主要匯整不同廣告平台資訊,並且透過欄位 (平台、國家、市集、App 和來源) 進行分類的分析,更重要是有提供資料 API 能夠自動取得廣告成效資訊。

相關資源

雲端服務 AdMob Mediation (1)

教學目標

初步了解 AdMob 廣告管理工具。

重點概念

使用目的

AdMob 中介服務主要會向多個聯播網送出廣告請求,以確保透過最合適的聯播網放送廣告,提高廣告供應率和收益。

基本操作

簡單五個步驟,建立廣告活動。

  1. 選擇要宣傳的 App,以進行廣告活動的新增。
  2. 設計廣告的詳細資訊。
    • 文字廣告的名稱
    • 文字廣告的實際連結網址
    • 文字廣告的標題
    • 文字廣告的廣告文字
    • 文字廣告的應用程式圖示
    • 圖片廣告的名稱
    • 圖片廣告的圖片上傳
  3. 選取指定條件。
    • 地理位置
    • 語言
    • 通訊業者和頻寬
    • 裝置和作業系統版本
    • 客層 (年齡層、性別)
    • 目標對象
  4. 選取廣告單元並設定中介服務類型。
    • 有效千次曝光出價
      廣告活動會在第三方廣告聯播網的旁邊放送,廣告來源放送廣告的順序取決於有效千次曝光出價。
    • 曝光目標:
      在中介服務執行期間,系統一律會優先放送設有曝光目標的廣告活動。
  5. 廣告活動進階設定
    • 廣告活動競標 (CPC、CPA)
    • 每日預算
    • 廣告活動開始日期
    • 廣告活動結束日期
    • 廣告活動名稱

成效報表

主要呈現在任何時間區間的活動廣告成效資訊。

  • 請求 (Requests)
  • 曝光 (Impressions)
  • 廣告供應率 (Fill Rate)
  • 點擊 (Clicks)
  • 曝光點擊率 (Impression CTR)
  • 請求每千次曝光的收益 (Request RPM)
  • 請求每千次曝光的收益 (Impression RPM)
  • 評估收益 (Estimated Earnings)
  • 地理位置 (Geo - Map)

特色說明

AdMob 中介服務能夠和 Google Analytics 進行整合分析 App 內部的「使用者行為」,更進一步優化調整 App 。

相關資源