國立中正大學雲端計算與物聯網數位學習碩士研究所 - 106-2 雲端計算 討論區

國立中正大學雲端計算與物聯網數位學習碩士研究所 - 106-2 雲端計算 討論區

-------------------------------------------------

Week2討論區

簡單來說,雲端運算是透過網路 (也就是「雲端」) 將雲端服務,包括伺服器、儲存體、資料庫、網路、軟體、分析以及更多項目傳遞出去。提供這些雲端運算服務的公司稱作雲端提供者,通常會依照使用量來收取雲端運算服務的費用,類似於家中水電費的計價方式。 

雲端服務類型:IaaS、PaaS、SaaS 
多數雲端運算服務基礎結構落於三項主要類別:基礎結構即服務 (IaaS)、平台即服務 (PaaS) 以及軟體即服務 (Saas)。由於這些項目建置於彼此之上,因此有時也稱作雲端運算堆疊。了解這些項目以及其不同之處能讓您更加輕鬆達成商務目標。 
基礎結構即服務 (IaaS) 
最基本的雲端運算服務類別。若為 IaaS,則您會以隨收隨付制為基礎,向雲端提供者租用 IT 基礎結構,像是伺服器與虛擬機器 (VM)、儲存體、網路以及作業系統。 

平台即服務 (PaaS) 
平台即服務 (PaaS) 代表提供隨選環境的雲端運算服務,供開發、測試、傳遞與管理軟體應用程式所用。PaaS 旨在讓開發人員更輕鬆快速地建立 Web 或行動應用程式,而無須費心設定或管理開發所需伺服器、儲存體、網路與資料庫的基礎結構。 

軟體即服務 (SaaS) 
軟體即服務 (SaaS) 這項方法是透過網際網路傳遞軟體應用程式,形式為隨選且通常是以訂用帳戶為基礎。若為 SaaS,雲端提供者會主控及管理軟體應用程式與基礎結構,並處理任何像是軟體升級與安全性修補的維護。使用者透過網際網路連接至應用程式,使用媒介通常為手機、平板電腦或電腦上的網頁瀏覽器。 

使用雲端運算 
即使尚未察覺到,但您很有可能早已在使用雲端運算。若您使用線上服務傳送電子郵件、編輯文件、觀看電影或電視、聆聽音樂、玩遊戲或儲存圖片及其他檔案,很有可能雲端運算就是幕後功臣。首份雲端運算服務不過是近十年的產物,但如今各類組織都因各項原因而採用這項技術,舉凡小型新興公司與跨國企業,以及政府機構與非營利組織。以下是您可以利用 

雲端進行的項目: 
建立新的應用程式與服務 
儲存、備份與復原資料 
主控網站與部落格 
串流音訊與視訊 
隨選傳遞軟體 
分析資料的模式並做出預測
----------------------------------------------

雲端運算的名詞最早是由Google提出,但此概念並非由Google獨創,目前所熟知的雲端運算也是經由過去一連串如網格運算、公用運算等技術逐漸演進而來。 

Source: IBM;IDC;Forrester;Google;Gartner;IEK (2010/01) 廣義來說,任何網際網路上提供的運算資源和隨選服務都是雲端運算服務的涵蓋範圍,只要滿足彈性使用和可擴充的特性,並不一定需要完全符合分散式電腦運算架構。在多方闡述中,事實上以美國國家標準與技術研究院(NIST)最具權威,其雲端定義為:「雲端運算是一種模式,能方便且隨需求應變地透過連網存取廣大的共享運算資源(如網路、伺服器、儲存、應用程式、服務等),並可透過最少的管理工作及服務供應者互動,快速提供各項服務。」。NIST提出的定義中,也進一步說明雲端運算的四種佈署模式、三類服務模式、以及五項重大特徵以及一般特性,
----------------------------------------------

雲端運算概念可提供資源共享,硬體設備維護費用的減少,針對大數據運算(以分散式運算架構切割多個運算任務),但同時也有資安問題。
----------------------------------------------

心得 
這單元了解了Computing的歷史及許多不同種的計算模式,特別是平行計算的原理,平行計算是使用多種計算資源解決計算問題的過程。為執行平行計算,計算資源應包括一臺配有多處理機(並行處理)的計算機、一個與網路相連的計算機專有編號,或者兩者結合使用。 
平行計算的主要目的是快速解決大型且複雜的計算問題。 平行計算可以劃分成時間並行和空間並行。以程式和演算法設計人員的角度看,平行計算又可分為資料並行和任務並行。資料並行把大的任務化解成若干個相同的子任務,處理起來比任務並行簡單。 

雲端運算對個人來說有以下優點: 
解決個人Computing power的需求,傳統必購買個人電腦並且需要大的記憶體容量和自己安裝硬體,而一但使用雲端服務,可以隨時移動(方便性),只需要一般能夠上網的電腦(立即可上線),而且雲端上得硬體會自動升級,存儲的檔案也會永久保留在雲端上(操作更輕鬆)。 
(一)使用方便性:就是要讓你不必更新、不必花時間來安裝軟體,不必買伺服器,不必做維修,一切都由網路服務幫你搞定。 
(二)立即可上線:只要藉由任何上網平台,就可立即連線、離線存取等功能。 
(三)操作更輕鬆:無需擔心管理和維護任何伺服器基礎架構,即使是應用程式擴充至上千位使用者也一樣。 
(四)程式開發社群:可加速應用程式開發,您可以加入由數千位開發人員所組成的社群,他們和您同樣專注於雲端計算基礎架構的商業應用程式開發。 
另外也補充 
企業使用雲端運算的優點。 
經過驗證的網路服務整合。 
世界級的服務傳遞。 
不需安裝任何硬體和軟體。 
 部署時速度更快,風險更低。 
 適合應用程式開發,支援深入自訂項目。 
加強商業使用者的能力。 
自動升級不影響 IT 資源。
=================================

Week3討論區

雲端計算的三種服務模式各別扮演著不同的角色與功能, 也轉變了傳統 IT 與使用者間對於服務的使用定義與習慣, 不管是 SaaS/PaaS/IaaS 都有著不同的議題與安全問題需要面對. 從課程內容中我們認識了這些模式間的差異與相關定義, 但套用到我們生活中的 IT 環境中可以發現, 目前很多供應商也逐漸轉變型態將 PaaS/SaaS 模糊化,例如這幾年興起的 Docker 便是個例子, 它產生了一個新的運算服務 CaaS ( Container as Service ), 他可以提供 PaaS 與 SaaS 服務, 被界定於在 IaaS 之上, 隨著不斷的演進我們可以發現 IaaS/PaaS/SaaS 間的界線一定會越來越小, 未來相關應用情境與建制方式會更趨簡便.
----------------------------------------------

目前公共雲端主流為強調高效能運算 (HPC: High Performance Computing),泛指透過應用程式平行化機制,而能在有限或較短的時間內可以完成複雜或大量運算工作以大幅提高應用程式的處理能力。通常應用於一般電腦主機所無法處理的大型計算。例如醫學影像計算或是生物的基因分析比對、電腦動畫、能源探勘、氣候模擬、天文科學、太空與各種物理與化學計算。它讓客戶能解決複雜、運算密集的問題。,讓客戶加快研究速度,又能縮短得出結果的時間。透過隨需提供 CPU、GPU 和 FPGA 伺服器,並針對特定應用程式進行優化,而且無須投資大量資本,以協助降低成本。常見的高效能運算系統有: 
1.對稱式多處理器電腦(SMP: Symmetric Multi-Processors) 
2.巨量多處理器電腦(MPP: Massive Parallel Processors) 
3.叢集式高效能運算電腦系統(Cluster HPC Computer System) 
4.GPU運算
----------------------------------------------

雲端訂價策略很靈活,通常都是按用量付費(AWS以時計費,Azure與GCP以分計費)。這樣的彈性讓用戶能輕鬆適應千變萬化的商業需求,可以根據實際需求調整業務,不會因為預測失準而過度佈建或容量不足。GCP鼓勵「長期使用」,為了拉攏客戶,只要連續使用滿一個月就可獲得7折優惠,綁定 1 年與 3 年的用戶最低也可以享受 43 折優惠(承諾使用折扣)。AWS鼓勵「預付」,對於某些服務,如 Amazon EC2、Amazon RDS,用戶可以通過預付來預留容量,預繳1年或3年的方案,就能享有5到7折的折扣。 
----------------------------------------------

關於雲端技術的應用可以說是越來越普遍 
從原本需要PC才可以執行的軟體,變成只要有網路與瀏覽器既可完成 
google excel word等等..... 
並且具有不用安裝、資料移動性、保存性高的優點 
迫使原本的微軟也必須在新版本的office中 也加入雲端的功能
----------------------------------------------

在本章節了解到Iaas/Paas/Saas依據不同的架構提供相關服務功能,雲端對於傳統企業與使用者的使用習慣改變,依據企業所需要功能而去開發降低額外不需要成本,使用者可以更方便不用侷限於地方限制而使用,雲端方便的使用,對於未來會有更大的改變人們生活習慣.
----------------------------------------------

雲端服務通常可按照自己的需要來購買,因為服務有價,所以提供的資源必須是能夠量測的,目前最常見的方式,是可依中央處理器、儲存空間和網路頻寬來計費,那該如何挑選適合的服務,並以最少的成本獲得最大的效益呢?通常可比較「基礎設施」、「機器類型」、「計費方式」及「服務項目」此四項重要的指標。雲端服務供應商會將所需的運算資源,包括了實體和虛擬,統統匯整到一個虛擬化的資源池之中,用戶需要多少資源,就撥出多少資源來供應。
----------------------------------------------

依據NIST(National Institute of Standards and Technology, 美國國家技術標準局)所定義的內容,雲端運算有五大重點特徵: 
1. 隨需應變自助服務(On-demand Self-service) 
消費者可依據使用需求狀況自行使用雲端服務,不需再透過雲端供應者與之互動。 
2. 網路使用無所不在(Broad Network Access) 
網路使用無所不在,亦即雲端供應者服務可隨時在網路取用,且使用者端無論大小,均可透過標準機制使用網路。 
3. 共享資源池(Resouce Pooling) 
資源彙整讓雲端供應者透過多租戶模式(Multi-tenancy)服務消費者,依據消費者要求,來指派或重新指派實體及虛擬資源,在所在地獨立性的概念下,消費者通常不知道所有資源確切位置,只可能掌握國家、州或資料中心等大範圍區域地點。其中資源包括儲存、處理、記憶、網路頻寬和虛擬機等。 
4. 快速重新佈署靈活度(Rapid Elasticity) 
彈性亦即能因應需求彈性且快速調整資源規模大小,對消費者而言,所提供的這種能力似乎是無限的,可以在任何時間被購買任何數量。 
5. 服務可計算(Measured Service) 
計算服務量測中,雲端服務各層次均由雲端供應者掌控與監管,這對於計費、存取控制、資源優化、處理能力規畫及其他工作相當重要,確保資源使用可被監測、被控制和被報告,為供應者和消費者雙方提供透明化服務使用資訊。
----------------------------------------------

透過本章節了解雲端計算的三種服務模型分別為,基礎架構即服務(IaaS)、平台即服務(PaaS)、軟體即服務 (SaaS),更進一步了解這三種服務的啟用技術,像是IaaS啟用技術為Virtualization、PaaS則為Runtime Environment Design,以及SaaS啟用技術為collection of lots of technologies,而藉由本單元從5個特徵、4個佈署、3服務模型及啟用技術的相關知識,並與其相對應之雲端服務代表(如AWS EC2、Google App Engine等)下,了解其差異性。而這些知識,未來選用時可有效率合適的雲端服務。
----------------------------------------------

IaaS、Paas、SaaS的出現,對於中小企業的公司來說無論從硬體層面、軟體層面、應用層面等各方面來看無疑是相當好的選擇。開發人員不需要建置開發環境的硬體系統,只要透過租用雲端服務,可方便的使用虛擬應用程式開發環境,立即撰寫程式,有效降低整個開發時程,並排除建置環境可能發生的問題。
----------------------------------------------

雲端計算中 IaaS、PaaS 可減低公司在建置時的成本,但當公司發展起來後,為了安全性或技術的保護還是會將資料與技術轉回到公司內,像我前公司,公司網站會使用Azure來放網站,但後續的關於商品或金流的資料還是會轉回公司內部的系統處理。
----------------------------------------------

因為Cloud Computing還是正在發展中的新技術,所以它的定義由多個都有定義他的意義,例如美國國家標準局的定義NIST就要包含USER的需球並且可以自助透過網路存取資源,而不需要再向原硬體建構者在而外要求服務等等.
----------------------------------------------

在本章節了解到雲端運算可以想像是將電腦資源集中,像自來水或電力公司,企業使用電腦設備運算就像是我們日常的水、電一樣用多少算多少;而資料儲存與應用程式也不需要企業自己建置龐大的儲存資源,但仍須考慮雲端運算的使用均透過網路,所以只要不能上網就等於所有系統癱瘓就等於嚴 重損失。
----------------------------------------------

第三週我們認識了雲端計算的定義,及五種特徵,三種服務模式,四種建置型態。 
雲端計算因為是發展中的技術,所以有許多不同的定義, 
NIST(美國國家標準與技術研究院)定義雲端運算是一種模式,能方便且隨需求應變地透過連網存取廣大的共享運算資源(如網路、伺服器、儲存、應用程式、服務等),並可透過最少的管理工作及服務供應者互動,快速提供各項服務。」並且也說明雲端運算的四種佈署模式、三類服務模式、以及五項重大特徵以及一般特性。 

部署模式:混合雲。私有雲。社群雲。公有雲。 
服務模式:SaaS,PaaS,IaaS 
重要特徵:隨需應變自助服務。網路無所不在。快速重新部署的靈活度。共享資源。服務可計算。 
基本特徵:大規模。彈性的監控運算。同質性。虛體化。服務導向。進階安全性。低成本軟體。
=================================

Week4討論區

雲端運算並不是一項新技術,而只是一種新概念。使用者只需要透過一台能夠上網的裝置,就可以執行工作,因為大部分的運算都是在遠端伺服器執行,所以使用者的裝置只是作為結果呈現的載具,這種應用對於很多公司而言,可大大降低IT費用,而對於一般使用者而言,也可以降低對硬體設備需求的追逐。
----------------------------------------------

臉部辨識、AI深度學習應用越來越夯,GPU的角色越來越重要,CPU含有數顆核心,為循序處理進行最佳化,GPU則是有大量的小型運算單元,發揮平行運算的快速、海量運算的強大功能。爬文發現蠻多這類介紹影片,有興趣可以去看看。
----------------------------------------------

Google提出的分散式運算技術,讓開發人員很容易開發出全球性的應用服務,雲端運算技術可以自動管理大量標準化(非異質性)電腦間的溝通、任務分配和分散式儲存等。 

雲端源自分散平行運算,但比網格更擅長資料運算 
雲端技術可以算是網格技術的一個子集合,兩者目的相同,都是要把系統的複雜性隱藏起來,讓使用者只要使用而不需要了解系統內部如何運作。 

各方跟進Google推廣雲端服務,但定義不同 
不同業者對於雲端運算的定義各有不同,只有廣義上對於「雲模式」的概念是相通的。凡是透過網際網路提供應用服務,讓使用者透過瀏覽器就能使用,不需要了解伺服器在哪裡,內部如何運作,都被稱為雲端運算的服務。 

Yahoo用Hadoop處理4 PB的網頁 
Yahoo架構工程師Vivek Ratan表示:「目前使用Hadoop框架的雲端運算,任務規模最大的是Yahoo用來建立網頁索引資料庫的運算,同時使用1萬個Linux平臺的處理器核心,處理1兆個網頁連結,從4PB的資料,運算得出300TB的索引數據。」 

趨勢用雲端技術解決大量資料的全球移動難題 
趨勢科技4年前就開始利用平行運算的網格技術,來提供雲端服務。 
使用雲端運平臺後,不論美國或臺灣的研究人員,都可以透過同一套運算平臺,共享病毒分析的資料。
----------------------------------------------

雲端運算(Cloud Computing)的發展,最主要是來實現運算資源的整合。而要達到運算資源的整合,有兩大關鍵技術是必要的-虛擬化技術及分散式計算的技術。 

虛擬化技術是將系統(伺服器、儲存器)資源(處理器、記憶體、網路埠、儲存空間等...)加以整合,並以各虛擬化環境所需的資源,動態及合理的調配適當的資源,達到使用者的當下需求。 
雖然在一台實體系統平台上建立多台虛擬的伺服器供使用者來使用,但卻不會因資源的分配,而感到效能低落或執行應用程式時會與實際有差異。相對來說,虛擬環境更能提供使用者更大的設定彈性與節省更多的設定時間(e.g VM Clone, VM Development, VM Motion, Load Balancing...),在資源擴充或系統更換時,更是不會感到系統執行中斷的情形。 

分散式運算技術,則是利用網路將多臺電腦連結起來,透過管理機制來協調所有電腦之間的運作,以創造高效率的運算。 

分散式運算的執行方式,可以把運算任務切割成多個小型的運算工作,再交給每一臺電腦去執行,最後再把所有執行結果組合起來,如此透過平行執行的方式,以大量電腦創造出的高度效能。在現今網路或雲端社群(FB,IG,Google...)大量請求指令的情況下,分散式運算大大的提高了回應速度,讓使用者不會感到回應延遲,提高服務滿意度。
----------------------------------------------

高效能運算(High Performance Computing,HPC)是指集中一部份的應用運算能力,專門用來解決耗用大量運算資源的問題。多年前,HPC (更常被稱為「超級運算能力」) 通常是以特製大型 (昂貴) 系統為主,而這些系統多半都屬於研究中心所有。不過,隨著小型系統的運算能力日益增強,成本/效能比也跟著改變,而運算工作負載逐漸移往個人電腦等級的系統。 
許多耗用大量運算資源的問題都可以經由平行計算的方式獲得解決;也就是說,特定的計算或作業不見得要依靠其他計算或作業的輸出結果來完成。在這種情況下,龐雜的問題可以利用組合成運算叢集的多個小型系統 (節點)。 
----------------------------------------------

目前CPU運算速度進展已達極限,所以目前許多已往GPU去發展,以往組裝電腦或是購買電腦主機時,當有需要高速運算時,往往最先考慮的是CPU,這兩三年這樣的情況慢慢在轉變,因為CPU所能提供的運算核心數,遠遠不及GPU所能提供的數量,也因為如此,目前有許多廠商也慢慢在推出可擴充多GPU的大型主機,連GPU大廠NVIDIA也有提供類型的雲端服務平台。
----------------------------------------------

現在雲端運算集結了許多技術,例如分散式運算、SaaS、Web Service..等等,隨時可以使用手邊有的裝置去連結,不需要有厲害的效能裝置才可以去使用,也不需要去安裝相關的硬軟體,一方面可減少可以公司電力的使用,另一方面節省設備上的維護成本。 
----------------------------------------------

雲端運算包含許許多多的技術,如High Performance Computing,透過集中某部分運算能力,搭配以平行計算方式處理須大量運算資源問題。在科技時代趨使下,運算能力、效能提升之個人化小型系統亦趨普及,不但讓個人使用更便利,隨處利用裝置連結、管理與應用,不但提升工作效能,也隆低設備維護成本,及減少資源消耗,達到節能減碳效果。
----------------------------------------------

雲端計算中司種服務模式Iaas Paas Saas上網查了一下,感覺還蠻有趣的,而且目前大家比較常使用到的就是Saas,例如電子郵件、行事曆以及Microsoft Office 365,比較偏向軟體應用的方面,這三個模式感覺就像是組一台電腦一樣,Iaas就像是請廠商幫你客製化組一台電腦,其他作業系統和軟體就自己弄,Paas就像是廠商買現成裝好的電腦,作業系統也灌好了,其他軟體你自己安裝,Saas就像是去網咖打電動一樣,廠商都弄好了,你只要使用軟體就行了
----------------------------------------------

這個章節內容很充實, 看了多次對雲端計算的主要運用技術有初步了解, 一開始提到到 HTC 與 HPC的發展的演變,及未來的趨勢對 internal computing 時代帶來的改變. 也說明了網路系統相關技術的發展, 並講解了3種VM的架構及 VM的運作方式, 最後則是介紹分散式系統效能評估方式及系統安全考量
----------------------------------------------

雲端運算可分成採用平行運算或是分散式運算,尤其以採用分散式運算較為常見,而在data center 的建立也分為實體與虛擬伺服器兩種,google使用大量實體伺服器來進行運算任務,而Amazon則卻使用虛擬伺服器來提供服務。
----------------------------------------------

這章說明了平行和分散式系統,在2003年Google提出Google File System,簡稱GFS。GFS可提供大資料的應用程式採用分散式方式儲存資料,致此分散式的儲存架構也愈多發展起來。 
近期因公司的伺服器中毒,也因此尋找其它雲端備援及備份的機制。 

另外在雲端服務架構上:架構即服務(IaaS)、平台即服務(PaaS)以及軟體即服務(SaaS)現亦多廣泛應用於企業服務上,這章的課程也讓我們多了解這些架構的應用。
----------------------------------------------

計算工作本身有多少能交給這些處理器執行,將成為計算效能提升的主要關鍵。GPU採用功能相對簡單的處理器,增加每張GPU介面卡中的核心數,若是GPU核心可處理的計算,則可達到高度平行化,效能自然可大幅提升。Intel的MIC則選用單一執行緒(single thread)的處理器,增加核心的計算能力,以進行更多種類的計算。 
  若以棒球守備來比喻,Intel MIC守備能力強,可以處理的情形較多,不論是高飛球或是滾地球,Intel MIC都能夠處理,只有平飛球要請CPU支援。GPU只會處理滾地球,遇上高飛球或平飛球時,都得讓CPU來處理。此時,Intel MIC的效能會比GPU來的要好。若球場中有許多打擊練習後的球要撿,GPU可以派出比Intel MIC要多出許多核心來撿這些球,處理速度上就比Intel MIC要快上許多。 
  若要有效的提高計算效能,就要視計算工作的類型來選擇適當的方案,若計算工作是大量且為重複的簡單計算,可考慮選用GPU;若計算工作較為複雜且重複計算量較少,可考慮採用Intel MIC。  
-- 參考資料 <中央研究院系統科:高效能計算加速方案介紹>
----------------------------------------------

第四週重點學習到了Scalable computing的趨勢,平台的發展歷史。 

HPC高性能計算(High-Performace Computing) 
HPC系統強調最初的加速性能。HPC系統的速度不斷增加,從1990年代的十億次浮點運算/秒(Gflops)到現在2010年代的Pflops。這一發展主要是科學,工程和制造通訊的需求所驅動。例如,世界Top 500的最強力計算機系統是浮點速度線性測試結果。然而,超級計算機的用戶數量少於所有用戶數量的10%。現在大部分計算機用戶正使用桌面計算機或大服務器,當他們互聯網查詢或市場驅動計算任務時。HPC可讓科學家和工程師解決複雜、運算密集的問題。而HPC 應用程式通常需要高速網路效能、快速儲存、大量記憶體、超強運算能力。 

HTC高吞吐計算(High-Throughput Computing) 
從HPC到HTC。HTC範式更關註高流量計算。高流量計算的主要應用是面向互聯網的查詢服務,數以萬計或更多的用戶同時訪問的時候。因此性能目標也轉為測量高的吞吐量或者單位時間完成的任務數量。HTC技術不僅需要提高批處理速度,同時處理在大量數據和企業計算中心時,成本為難題,耗能保持,安全性,可靠性的問題。這本書將專註於HPC和HTC系統去滿足所有計算機用戶的需求。 
=================================

Week5討論區

這個章節了解到cluster computing 的發展與設計,利用多台電腦節點連結方式而組成的一個super computers 而看作的單一電腦及作業系統且用模組化需求提高效能,比傳統的單一電腦的速度及性能都高出許多,也了解到GPU cluster及資源分享,在每一個年度前500大的super computers也有不同的架構使用分析。
----------------------------------------------

這節所討論的 Cluster Computing 讓我回想起之前在設計 HPC 運算系統的過程 , 從早期資源不夠透過計算資源彙整 , 搭配 Myrinet 或是 Infinband 40G 卡來加速結點間的運算溝通速率 , 到後來的 Grid , 與現在從的 Cloud Computing , 在在顯示在運算領域中的變化所注重的資源判斷點是不同的. 但不管如何我們刀可以發現到這部分的演變最重要的還是會在著重於 "可用率“ , 如何降低錯誤率與提升高可用性的 down times 時間一直都是在每個世代間所著重的議題.
----------------------------------------------

在本章節中,除了使我了解Cluster過往的發展及演變,並清楚知道Cluster的設計、目標及基礎建構相關議題,如延展性的效能、SSI、load blancing、節點之間通訊等,另一個很有趣的是,在本章所提及當錯誤發生時,所付出的成本分析,其中,在假設例子中,當節點壞掉時,系統所處理的步驟,如:電源關掉、替換節點換掉等等,並透過此可估算花費時間所付出的成本。而這也讓我想到,在工作中處理事情時,其實它都是有付出成本的,只是沒有真正思考過這個問題。
----------------------------------------------

平行計算是相對於串列計算來說的,所謂平行計算分為時間上的並行和空間上的並行。時間上的並行就是指流水線技術,而空間上的並行則是指用多個處理器併發的執行計算。平行計算的主要目的是快速解決大型且複雜的計算問題。 

電腦集群將一組鬆散集成的電腦軟體或硬體連接起來高度緊密地協作完成計算工作。在某種意義上,他們可以被看作是一台電腦。集群系統中的單個電腦通常稱為節點,通常通過局域網連接,但也有其它的可能連接方式。集群電腦通常用來改進單個電腦的計算速度和/或可靠性。一般情況下集群電腦比單個電腦,比如工作站或超級電腦性價比要高得多。 
----------------------------------------------

Cluster是把許多台電腦放在一起,可能分散在不同地方,但讓人感覺到像是一台電腦. Cluster有幾個好處: high performance, scalability, high throughput, system availability, cost effectively. 此外, 要能方便管理 cluster, meddleware 也是不可或缺的要素。
----------------------------------------------

本章節中,我了解Cluster的設計架構與發展。以及節點壞掉時,系統的處理步驟,與估算分析所付出的成本。許多耗用大量運算資源的問題都可以經由平行計算與電腦叢集的技術獲得解決。
----------------------------------------------

了解MMP與cluster的差別,MMP是由越多規格越好的的CPU所組成的,所以須採用多重指令、分散資料的方式,需要CPU之間互相溝通來完成運算,cluster是一台以上的電腦所組成的,為了特定目的訂製的架構
----------------------------------------------

平行計算對我來說是一種工作的分配,跟上班時處理的事很像,怎麼分配可以讓專案順利完成,而且是快速的,可以同時處理的完成。 

這種工作方式有以下特性: 
Scalability 可擴展性 - 可以加入更多的人來工作,讓速度加快 
High availability 可用性 - 完成的成品是可用的 
Programmability 可程式性 - 每個工作都是可以有邏輯的系統的表達出來 
Single-system image(SSI) 單系統媒體 
fault tolerance 容錯 - 團隊合作的中間發生錯誤是可以補救的,不影響成品
----------------------------------------------

現在打遊戲、各領域也是使用大量的 
類似平行運算的技術(不僅僅侷限於雲端處理) 
像是GPU圖形處理,CUDA加速、深度學習等等 
將資料丟給許多的處理單元做 
在有錢一點的,會把多張顯示卡利用SLI技術串再一起 
讓遊戲達到單一顯示卡無法完成的事情 
https://www.geforce.com.tw/hardware/technology/sli 
----------------------------------------------

在這個周章節中了解到Cluster發展的趨勢目標與架構,在現今有相當多都是使用到平行運算的技術,像是雲端計算亦是需要龐大的運算能力加以支持,利用多台獨立的電腦組建成為一個大型系統達到需要的目的。
----------------------------------------------

「平行計算」 
此方法是改進傳統單一核心電腦執行「高資料量資料融合」的方法,應用「平行計算」改善「高維資料」計算效率,提升運算速度,改良高維資料運算慢的缺點。「平行多核心叢集計算」可以大幅減少所需的計算時間,同時所需的記憶體也分散至其它多核心叢集電腦,大幅降低了每台多核心叢集電腦所需的記憶體用量。採用「平行計算」技術來解決「高維遙測資料」龐大資料運算的問題,有著 1.高效益價格比的優點:由於目前多核心叢集電腦已經接近工作站的速度水準,使用多核心叢集電腦來構建高速「平行計算」系統已成為主流。2.投資分散的優點:由於「平行計算」的多核心叢集電腦系統,計算單元數目可以任意增減,因此可以做部份擴增及汰換,分散投資的風險,是以「平行計算」和「平行化程式」將是未來「高維資料」高速運算的主流。由原來演算法中,推導分割出適合「平行計算」的方法,將演算轉換成多個可以「平行計算」(parallel 
computing)的「子計算」。藉以改善實際操作上的運算效能,找出「最佳化」的「平行計算」出來,探討一個更適合通用型「平行計算」的「高維資料」演算法。
=================================

Week6討論區

主機虛擬化不單單只是有硬體上使用率的節省及提升之外,像在許多企業或是公家單位,都有一些不可汰換更新的特殊系統,例如像是ERP之類的系統,因為此類的特殊系統在使用單位之中,都佔有非常重要的使用,但是透過主機擬化的方式,做系統移轉,增加了系統的使用壽命。
----------------------------------------------

對一般使用者甚至IT人員來說,再安裝應用軟體或程式時,VM的架構與功能其實就像一台一般的電腦主機,是沒有太大的差異。 

但當是用者或應用程式需要更多的運算資源時,VM的架構卻能立即提供一臺虛擬機,而且就像是一臺實體伺服器一樣。然而,實體伺服器卻無法如此快速完成安裝且提供服務。且VM可在幾分鐘內就設定完成,對安裝相關伺服器服務及應用程式而言,幾乎不必為了擴充運算資源而中斷服務,整個資源調整與擴充是非常有彈性的。 

因為虛擬伺服器與實體伺服器的關係是獨立的,虛擬伺服器可以任意在不同的硬體設備之間遷移,因此即使虛擬伺服器所在的實體機器發生故障,虛擬伺服器亦可快速移到其他正常的硬體伺服器,因此使用者就不會感受到運算資源中斷,依然再整個操作上順利的進行。因此,虛擬化可說是雲端運算基礎架構非常關鍵的技術。
----------------------------------------------

虛擬化技術,是將伺服器、儲存空間等運算資源予以統合。一臺採用虛擬化技術的伺服器,可以創造出一個虛擬化的環境,同時執行好幾臺宛如實體伺服器一般的虛擬伺服器。透過虛擬化管理工具,在幾分鐘內就可以建立一臺虛擬伺服器,而其運算資源,如處理器速度、記憶體容量、硬碟儲存空間,則可任意配置。 

對應用程式而言,虛擬伺服器的架構與功能就像是一臺一般的電腦,其實應用程式是分不清其差異的,因此當應用程式需要更多的運算資源時,立即提供一臺虛擬伺服器,就像是趕快安裝一臺實體伺服器一樣。然而,實體伺服器無法快速完成安裝,而虛擬伺服器則可在幾分鐘內就設定完成,對應用程式而言,幾乎不必為了擴充運算資源而中斷服務,看起來就像是有用不完的運算資源。 

透過虛擬化技術,每一臺實體伺服器的運算資源都換成了許多虛擬伺服器,這些虛擬的運算資源可以統整在一起,任意分配運算等級不同的虛擬伺服器,因此運算資源的安排就不再受到實體伺服器的限制,只要使用者對於運算資源有需求,就能在幾分鐘內迅速配置好一臺與實體伺服器功能一模一樣的虛擬伺服器,而且,因為虛擬伺服器與實體伺服器的關係脫勾了,虛擬伺服器可以任意在不同的硬體設備之間遷移,因此即使虛擬伺服器所在的實體機器發生故障,虛擬伺服器亦可快速移到其他正常的硬體伺服器,因此使用者就不會感受到運算資源中斷,依然感受到運算資源是源源不絕的,而這也就代表服務供應商有靈活彈性的調度能力。因此,虛擬化可說是雲端運算基礎架構非常關鍵的技術。
----------------------------------------------

虛擬化在雲端計算技術中扮演著非常重要的角色,通常在雲端計算中,用戶可以像應用程序一樣共享雲端中存在的數據,但實際上在虛擬化的幫助下,用戶共享基礎架構。 
通過使用虛擬化,其他雲端提供商所需的所有服務器和軟件應用程序都由第三方人員維護,而雲端提供商必須每月或每年支付這筆費用。 
虛擬化意味著在一台機器上運行多個操作系統,但共享所有硬件資源。它有助於我們提供IT資源池,以便我們可以共享這些IT資源,從而獲得業務優勢.
----------------------------------------------

透過本章了解到 Real Machine 的硬體組合,作業喜統與三個主要的基本運作程序, 接著了解使用 Virtual Machine 也了解基本不同的等級實現虛擬化技術的方法. 
雲端計算與虛擬化技術是密不可分的, 透過 VM 共享硬體資源, 提升 performance, 也可以讓 VM 之間可以互相 share loaging.
----------------------------------------------

雲端虛擬化把一台主機只能讓一個人使用,變化成一台主機可以虛擬出不同的作業系統,共用此主機的資源,讓多人可以同時且獨立的操作,大大提升了主機的使用效率,減少資源的浪費,而且因為每個虛擬出來的作業系統都是獨立的,所以可以用來做為測試軟體或嘗試調整作業系統之用,並且不用擔心出問題後會影響到別人,只要重新更新就好,我電腦上也有使用VMware軟體來作為安裝linux系統相關作業系統的使用,建置也相當方便簡單,缺點就是用起來的效能感覺就是比較差。
----------------------------------------------

虛擬化技術主要分為以下幾個大類: 
1.平台虛擬化(Platform Virtualization),針對電腦和作業系統的虛擬化。 
2.資源虛擬化(Resource Virtualization),針對特定的系統資源的虛擬化,比如記憶體、存儲、網路資源等。 
3.應用程式虛擬化(Application Virtualization),包括模擬、模擬、解釋技術等。 
我們通常所說的虛擬化主要是指平臺虛擬化技術,通過使用控制程式(Control Program,也被稱為 Virtual Machine Monitor 或 Hypervisor),隱藏特定計算平臺的實際物理特性,為使用者提供抽象的、統一的、模擬的計算環境(稱為虛擬機器)。虛擬機器中運行的作業系統被稱為客戶機作業系統(Guest OS),運行虛擬機器監控器的作業系統被稱為主機作業系統(Host OS),當然某些虛擬機器監控器可以脫離作業系統直接運行在硬體之上(如 VMWARE 的 ESX 產品)。運行虛擬機器的真實系統我們稱之為主機系統。 
而在提供計算資源的伺服器上,裝有可虛擬化計算資源的系統軟體稱之為Hypervisor,Hypervisor受CMS(Cloud Management System)控制而提供虛擬機器(VM)給用戶使用。對用戶來說, 遠端操作虛擬機器就如同操作實體機器一般,著名的Hypervisor有VMware的vSphere、Microsoft的Hyper-V、Linux的KVM等等。因此Hypervisor是實現實體資源虛擬化的關鍵角色,所以其本身也需要佔用一部分的計算資源。
----------------------------------------------

在單一伺服器上虛擬多個系統,就能夠以少數幾台電腦設備完成更多工作,這就是所謂的虛擬化技術。企業可藉由讓一台伺服器當作很多台伺服器來使用,不但可任意分配運算級別,同時整合很多台伺服器的資源,讓企業內部運算資源的運用變得更有彈性、管理上變得更簡單容易,實現提高設備利用率與節省成本之效。
----------------------------------------------

透過虛擬化技術,每一台伺服器都轉換成虛擬伺服器,不受到實體伺服器的限制,只要使用者需要就可以快速配置好一台與實體伺服器一樣的虛擬伺服器,假設某一台虛擬伺服器忽然發生故障,將虛擬伺服器可迅速移到其他的伺服器,使用者不會察覺到資源有被中斷。
----------------------------------------------

虛擬化主機現發展的相當成熟,也讓IT人員能在建構系統前先模擬各種可能性。主要是可快速複制和啟用。而雲端虛擬主機更是能對各種需求來調整分配資源,我想未來應該都使用雲端化的方式來管理應用了。 
本周課程從一般系統介紹到各種虛擬化功能及依不同layer所發展出5種不同VM,讓原本只使用VirtualBox的我也更了解這些VM的差異性。
----------------------------------------------

過去因為工作需要總是使用VM來架設AP Server,這次在課程中才真正了解到VM的架構與運行方式
----------------------------------------------

虛擬化在雲端運算中是非常重要的技術之一,特別是在基礎建設為主的服務中,虛擬化可以建置出安全、客製化和隔離的執行環境,即使它們是不被信任的也不會影響到其他使用者的應用程式。這種技術的基本能力就是可以使用電腦語言或是結合軟體和硬體的能力去模擬一個執行的環境。例如,一個windows的作業系統可以在一個虛擬機上執行,而這個虛擬機本身是在linux作業系統上執行。
----------------------------------------------

記得剛上碩一時,為了使用LINUX作業系統,安裝VirtualBox,是最便於在WINDOWS系統上使用的做法,上過VM課程後,比較了解其中原理,不同架構的優缺點。
=================================

Week7討論區

主要是針對硬體及輔助虛擬化相關的解說,而其中了解實現VMM(Virtual Machine Manager)的兩種類型,主要為Full Virtualization and Para-Virtualization。首先以Full Virtualization來說,它是屬完全虛擬化,而執行某些敏感的、非虛擬化的,例如:帶QEMU的KVM。另一個則為Para-Virtualization可稱準虛擬化,可減低virtualization overhead,並提升performance,其Guest OS需修改時,則需special APIs provided by VMM,例如:KVM with virtio。此外,根據本章節所提及前述兩者之差異,可知Para-Virtualization 比Full Virtualization相對容易使用等。藉由兩者不同之處,可知硬體及輔助虛擬化的特性與運用。
----------------------------------------------

Bare-Metal優點是可以直接執行於電腦硬體上,提供最佳效能及可用性。而Host-based執行於實體主機的作業系統上,提供較佳的相容性,但虛擬機器的執行效能比Bare-Metal差上許多。 
也了解到Para Virtualization對於此方式虛擬化對於硬體資源消耗相對較少和Full Virtualization對於不需要修改作業系統核心,因此可運作大部分的作業系統種類 
----------------------------------------------

虛擬化在企業的導入最重要的重點在於執行效能,對於大多數的使用者而言不管是 VMware、XEN、KVM 或是 Hyper-V 都會面臨到要選擇Type 1 (Bare-Metal hypervisor) 、 Type 2 (Hosted hypervisor)或者是 Paravirtualization,但就實務上來說還是以 Type 1 最為推薦,主要原因還是在於在單個虛擬機崩潰時,不會影響來賓操作系統的其餘部分。 因此,比 Type 2 更安全。由於它們產生的overhead較小,Type 1 虛擬機管理程序運作速度較快。Paravirtualization 因為無法實際模擬底層硬體,因此在運用上的效果較無 Type 1 與 Type 2 這類硬體虛擬化技術來得好
----------------------------------------------

在電腦領域中,二進位翻譯(binary translation)、二進位轉換或二進位重新編譯((binary) recompilation)是以翻譯二進位代碼來仿真另一個指令集。指令按順序從原指令集翻譯為目標指令集。在指令集模擬等某些情況中,目標指令集可能與源指令集是同一指令集,翻譯是為提供指令跟蹤、條件斷點、熱點檢測等測試和偵錯功能。 

二進位翻譯主要分為靜態翻譯與動態翻譯兩種類型。翻譯可以由硬體(例如通過CPU中的電路)或軟體(例如執行時引擎、靜態重編譯、仿真器等)完成。
----------------------------------------------

虛擬機器架構可分二類:bare metal VMM與host-based VMM 
bare metal VMM:VMM直接建構在硬體層上,VMM需要直接與硬體互動管理所有裝置。例如:Xen。 
host-based VMM:VMM執行在宿主作業系統之上,VMM建立的虛擬機器通常做為宿主機作業系統的一個處理程序參與排程。例如:KVM。 

虛擬化的技術大致上分為二種:Full Virtualization、Para-Virtualization。 
Full Virtualization:它虛擬的是現實存在的平台,客戶機作業系統無須進行任何修改即可在其上執行。 
Para-Virtualization:虛擬平台是VMM重新定義的,需要對客戶機作業系統進行修改以適應虛擬環境。 
Full Virtualization的效能則較Para-Virtualization差。 

VMWare初期是Full Virtualization,目前則跨入了Para-Virtualization。 
Xen則一直都是Para-Virtualization。 
KVM一開始也是Full Virtualization ,目前也是跨入了Para-Virtualization。 
----------------------------------------------

完全虛擬化技術透過在虛擬機(Virtual Machine)和主機(Host)底層硬體之間建立 
抽象層 VMM(Type-2),來管理各個虛擬機。通過 VMM 層,完全虛擬化技術模擬出 
多個 BIOS 級的完整虛擬硬體平台,單一硬體平台上可運行多個不同類型 
的 GuestOS 的虛擬機。完全虛擬化的缺點是 VMM 中間層代碼轉換,會給 HostOS 
帶來一定負擔。 
部分虛擬化(Paravirtualization) 透過使用虛擬化應用介面(Application 
Programming Interface, API),客制化 GuestOS 內容,以取代不可虛擬的某些 X86 特 
權指令,使其與 VMM 層協同工作,提升虛擬機性能。部分虛擬化的缺點是需修改 
GuestOS。
----------------------------------------------

現在公司開發時也是使用到VM同時運行 Windows 和 Linux方便跨平台開發。 
虛擬化又分成很多類型:平台虛擬化、應用程式虛擬化、網路虛擬化... 
目前使用到的是VMware,他則是完全虛擬化的範疇 
完全虛擬化結合二進位轉譯與直接執行,虛擬作業系統與基礎的硬體完全分開,虛擬作業系統故不知道它已經被虛擬化。 
但效能不盡理想,因涉及到二進位轉譯,而這是個耗時的作業,虛耗用大量的I/O資源。
----------------------------------------------

Type 1 hypervisors ,沒有透過OS直接在硬體上執行,執行效率好。 
Type 2 hypervisor ,執行在作業系統上所以效率較慢,但是相容性會比較好。 
Monolithic Hypervisor,不需要控制系統,但hypervisor-aware驅動程式必須包含在核心中,彈性較差,必須配合特定硬體.
----------------------------------------------

在程式開發中 
時常有需求會開發到多平台同時執行的程式 
而機器數量時常有限,這時候虛擬化就顯得非常重要 
只要有一台效能夠強的硬體,需要測試多少平台只要由單一硬體執行即可 
大大省去開發經費與時間上的問題 
更方便的是能將整個作業系統無痛移植到其他硬體上 
個人覺得不僅僅是雲端運算,將來越來越多應用也會慢慢倒入虛擬化的技術
----------------------------------------------

VM在現在的工作上十分普及,大至分為兩種 
bare-metal VMM 
 建構在硬體的上層,可控制硬體 
 EX: Xen,VMware ESX server 
host-based VMM 
 建構在Host OS上,就像一個應用軟體 
 EX: KVM
----------------------------------------------

explain Host-Based Virtualization and list advantages and disadvantages of it. 

Advantage: 
VMMs are software applications running within a host OS. 
The host-based architecture will simplify the VM design and ease its deployment. 

Disadvantage: 
Compared to the hypervisor architecture, the performance of the host-based architecture may be 
low. Ex: KVM 
=================================

Week8討論區

現行的 x86 伺服器每次只能執行一個作業系統和應用程式,而此一設計限制也為 IT 部門帶來極大的挑戰。正因如此,就連小型的資料中心都必須部署多個伺服器,且每個伺服器的運作只用到其容量的 5% 到 15%,無論以任何標準來看,都顯得極度缺乏效率。 

虛擬化會使用軟體模擬硬體的存在,並建立一個虛擬電腦系統。這樣一來,企業就能在一個虛擬系統上執行更多工作,並在單一伺服器上執行多個作業系統和應用程式。如此即可實現規模經濟和更高的效率。 

虛擬機 
虛擬電腦系統又稱為「虛擬機」(VM),是完全獨立的軟體容器,且內含一個作業系統與應用程式。每個虛擬機都具備完整的功能且完全獨立。將多個虛擬機放在單一電腦上,就能讓多個作業系統和應用程式在一部實體伺服器或「主機」上執行。稱為「虛擬化管理程序」的精簡型軟體層可讓虛擬機脫離主機,並在必要時將運算資源動態配置到各個虛擬機。 

虛擬機的主要屬性 
虛擬機具備下列特性,可帶來多項優勢。 

分割 
在單一實體機上執行多個作業系統 
區隔虛擬機間的系統資源 

隔離 
提供硬體層級的故障與安全性隔離 
透過進階的資源控制維持效能 

封裝 
將虛擬機的完整狀態儲存在檔案中 
移動和複製虛擬機就像移動和複製檔案一樣輕鬆簡單 

硬體獨立性 
可將任一虛擬機佈建或移轉到任一實體伺服器 

伺服器整合 
透過伺服器虛擬化,公司可將其伺服器資源的使用率提升到最高,並減少所需的伺服器數量。如此一來就能達成伺服器整合,進而提高效率並減少成本。 

虛擬化並非雲端運算 
雲端運算並不等同虛擬化;而是能透過虛擬化進行的作業。雲端運算會透過網際網路,以隨選提供的方式交付共用的運算資源 (軟體和/或資料)。不論您是否在雲端,都可以先從將伺服器虛擬化著手,再轉而進行雲端運算,以獲得更大的靈活性並提升自助能力。
----------------------------------------------

虛擬機器(Virtual Machine)的技術不僅只是被應用在私有雲架構的基礎上,更多的應用其實是在IT工作者自己的電腦上,無論是熟悉Linux作業平台的系統人員、專注於Windows平台開發工作的研發人員,還是極度講究品味的一般Mac資訊工作者,通常只要與IT的工作內容有關,就需要仰賴虛擬機器來達成各種任務。 

大致上有網路架構管理、資訊安全管理、軟體研發設計、軟體測試、系統管理工程、用戶端支援以及電腦教學等等。上述這一些工作類型的人員,若不懂得善用虛擬機器來解決任務上的各種需要,肯定會帶來許多管理上的麻煩,導致任務的執行效率大幅降低。 

像是常見的軟體大量部署,在正式派送到用戶端電腦之前,如果沒有事先在虛擬機器內完成各種Guest OS版本以及不同情境下的派送與執行測試,一旦發生問題,就可能導致整個實體主機的作業系統無法正常運作,讓整個執行計畫進度延宕。
----------------------------------------------

在過去的研究中總是會假設行動裝置具有連線到雲端資料中心的能力。然而,在惡劣的環境中,行動裝置可能因為災難或網路攻擊而失去連線到雲端資料中心的能力。在這些狀況下,使用者無法在存取雲端服務。因此,N.Fernando等人提出了行動雲運算(mobile cloud)的概念,使得行動裝置上的運算可以被卸載到周周其他具有豐富資源的裝置上。 
  行動運算與雲端運算的結合是一個很明顯的發展趨勢。行動裝置也可能在異質階層式雲端架構成為形成雲端運算架構中的一環。因此,發展節能運算卸載方法(energy-efficient computation offloading approach,簡稱ECO)來討論如何在由行動裝置所有成的雲端運算平台中進行運算卸載的最佳化問題。因此整合雲端運算、行動網路、物聯網與邊界運算等技術,構成以虛擬化技術為基礎之物聯網行動雲端運算平台的構想,以因應未來物聯網雲端服務及行動寬頻運作將促使資料流量大幅提升。為改善導致現有網路基礎建設的頻寬不敷使用情況,將具實質效用的物聯網試驗發展價值。 
並透過虛擬化網路技術導入,提供彈性化、高擴充性的新世代組網基礎與應用架構 
  因此整合雲端運算、行動網路、物聯網與行動邊界運算(Mobile Edge Computing, MEC)等技術,構成以虛擬化技術為基礎之物聯網行動雲端運算平台的構想,以因應未來物聯網雲端服務及行動寬頻運作將促使資料流量大幅提升。
----------------------------------------------

第8周 陸教授分享幾點,從VM 虛擬化機器到散熱、能秏問題等等,最後談到雲端與移動裝置的結合。 
這幾周的課程也談到各種VM方式,我也開始試以VM來測試系統和教學使用,同時也嘗試雲端VM等,覺得的確省時省力不少。我可以快速佈署一個虛擬主機,不需要建構這些實體機器,同時也省了許多成本,以及目前我們最困擾的機房溫度和防火牆、防毒等等。 
而且如同陸教授說的,SERVER大部份時間是低運作了,如何做到即時自動調整“機器”的效能,我想也只有用雲端來佈署了。 
最後談到Mobile VS Cloud, 智慧學習及大數據等,目前我司某產品也是利用智慧學習來不斷調整修正,利用更多的數據來把辨識率提高。相信未來的“電腦”也許不叫電腦了,能提供給使用者更便利且精確的資訊,更甚是提供未來更精準的預測。
----------------------------------------------

這章節主要是透過演講來加深我們虛擬襪的概念理解, 而儲存了龐大資料的雲端資料中心, 其能源的管理分配與硬體機器的技術也是特別需要注意的, 最後更探討了新的行動雲端運算議題, 隨著現在手持裝置的發達, 行動雲端服務與資料的整合也成為現今的發展的主要方向之一.
----------------------------------------------

依據虛擬化的演進可以區分成為下面這幾種. 
Emulation 虛擬出來一個與現行完全不同的硬體環境. 
Full Virtualization 使用的是 – Binary Translation. 
Paravirtualization 另一種需要修改作業系統的核心才能支援 
Hardware-assisted virtualization 這也是最新的方式需要有硬體(CPU) 的支援 – Intel VT 或者 AMD-V. 
Application-Level Virtualization 可直接用於原作業系統上, 不需要 VT 或是額外的硬體來支援. 
Continaer 提供類似於作業系統層級的虛擬化 OS-Level Virtualization. 

以上這幾種,隨著硬體技術的日新月異,或者是使用者的需求,都在不同的環境下,持續的發展。 
虛擬化的技術可以讓一般使用者,在目前的OS下安裝其他Guest OS來練功 
-不怕破壞現有的作業系統環境 
-降低硬體需求數量 
-同時模擬多個不同作業平台 
而,虛擬化的技術可以讓企業使用者 
-降低能源成本支出 
-依部門單位不同需求,提高數據安全等級 
-降低硬體購置需求與成本 
-彈性擴充
----------------------------------------------

主機虛擬化這個議題,這兩三年在產業界,不斷的被提出,從一開始只有單純的Server主機的虛擬化,到最近超熱門的超融合系統,從網路設備到儲存設備,三機一體的技術,讓我們可以從實體的多層式架構,變成虛擬化的多層式架構,更可以使用混合式的多層架構,讓我們可以從實體到虛擬,做到層層保護。
----------------------------------------------

硬體虛擬化(hardware virtualiazation)是一種對計算機或作業系統的虛擬,虛擬化隱藏了用戶真實的計算機硬體,表現出另一個抽象計算平台。 
虛擬化的盛行是因為可以節省費用與效率的提升,硬體的虛擬化可以分為以下三種類型: 
1.全虛擬化(full-virtualization) 
虛擬機模擬一個足夠強大的硬體,使客戶機作業系統獨立運行。 
此種方式下客機不需要修改作業系統,採用二進位轉譯(binary translation)技術,在因為虛擬化而降級的作業系統的客機內核可以直接跑在虛擬機上面。 
優點: 
2.半虛擬化(para-virtualization) 
此種方式下必須修改作業系統核心而植入hypercall,才可以使客機順利運行。 
3.硬體輔助虛擬化 
前述”全虛擬化”或”半虛擬化”均有其各自的優缺點,CPU大廠INTEL與AMD從x86架構來改善虛擬化門檻,使用硬體輔助虛擬化之後,半虛擬化不需要修改客機作業系統,全虛擬化不需要做二進位轉譯,且此二種技術採用硬體輔助虛擬化之後,所需花費與性能均差異不大。 

摘錄http://www.netadmin.com.tw/article_content.aspx?sn=1201090002 
----------------------------------------------

讓我加深對虛擬化的理解,如主機虛擬化、安全防護、儲存資料雲、人員及設備維護與管理等等,另外在行動裝置發展日益進步下,促使儲取、管理日顯方便快速,並在多機一體之虛擬主機化趨勢,供應商不論在設備或人員成本大幅降低下,間接讓使用者受惠不少。
----------------------------------------------

VM提供支援手機、平板、筆電裝置與各種作業系統,在每個裝置讀取資料相當方便。但每一臺伺服器、共用服務及不盡相同的作業系統之下,這些軟體元件都有可能因為會接觸到惡意軟體、目標式攻擊,可能因此遭到感染、操控。企業能基於當中建立的層疊式隔離網路環境來進行微分段,重新建立不同伺服器之間的邏輯邊界,限制彼此可溝通的範圍與傳遞的資訊。
----------------------------------------------

虛擬化感覺會是下個世代電腦發展趨勢,未來公司可能都會建立或是租用一套雲端系統,全公司所有員工不再需要個人主機,只需要一台顯示器網路連線至雲端伺服器,登錄進入自己的虛擬化作業系統,即可開始辦公,而且移動方便,不須受限於主機硬體設備的影響,到哪都可以辦公。
----------------------------------------------

在實體伺服器上管理加密金鑰很容易。但是資安工作轉移到虛擬化時,為實體伺服器所設計的加密金鑰管理方式就不管用了,所以在硬體虛擬化的過程中,也要有完整的安控方案。
----------------------------------------------

複習與加深前兩周針對硬體虛擬化知識,針對DataCenter管理與節能技術教學,最後mobile computing與cloud computing結合與未來發展
=================================

Week10討論區

現今資料量是不斷持續增加中,而在這些海量資料中,透過資料分析的運算找尋出有用的資訊,在本章節中,說明Hadoop架構與應用的方式,及安裝等等,而Hadoop則是以MapReduce為基礎的應用程序,並舉例傳統的awk進行資料分析,而awk分析完所費時間過久,以現今的技術來說,若以Hadoop進行運算,所費的時間是為快速及有效率的。
----------------------------------------------

(一)Hadoop起源 
在 2005 年由 Mike Cafarella 和 Doug Cutting 建立 (以他小孩的玩具象命名),最初是針對 Web 相關的搜尋資料而設計。現在是 Apache 軟體基金會裡的一個開放原始碼、社群建置的專案,由各種組織和產業廣為採用。 

(二)Hadoop功能: 
1、能夠快速存儲和處理大量的任何類型的數據。 隨著數據量和品種不斷增加,尤其是來自社交媒體和物聯網(IoT),這是一個關鍵考慮因素。 
2計算能力: Hadoop的分佈式計算模型可以快速處理大數據。 當使用的計算節點越多,處理能力就越強。 
3、容錯:數據和應用程序處理受到保護以防硬體故障。 如果節點關閉,作業會自動重導向到其他節點,以確保分佈式計算不會失敗。 所有數據的多個副本將自動存儲。 
4、靈活性:與傳統的關係數據庫不同,在存儲數據之前,不必預處理數據,可以根據需要存儲盡可能多的數據,然後決定如何使用它。這包括文字,圖像和視頻等非結構化數據。 
5、低成本:開源框架是免費的,並使用商品硬體來存儲大量數據。 
6、可擴展性:只需添加節點的少量管理,就可以輕鬆擴展系統以處理更多數據。
----------------------------------------------

此章節了解到 Hadoop 相關架構與應用。它是apache旗下的一個開源存儲與計算平台。 
Hadoop 透過 HDFS 和 MapReduce 這兩項核心功能,解決了檔案存放的問題、解決了系統擴張的問題、解決了系統備份的問題、解決了資料處理的問題,非常適合應用於大數據儲存和大數據分析,因此被廣泛使用成為主流技術。 
----------------------------------------------

這個章節了解到Hadoop,Hadoop的架構是由Google發表的BigTable及Google File System等文章提出的概念實做而成,經由課程了解到MapReduce和HDFS對於巨集資料的處理,是目前最常見且實際運用在大規模商業環境上的雲端運算平台之一,強大而完整的基礎架構可以減少大量的雲端架構開發的時間,大量部署時也相當迅速,不但有許多重量級的雲端運算服務提供者正在使用及投入開發
----------------------------------------------

本章學習到Hadoop是什麼,Hadoop的架構主要有兩個層次:MapReduce及HDFS。Hadoop的優勢:方便:Hadoop運行在由一般商用機器構成的大型集群上,或者雲計算服務上,比如EC2。健壯:Hadoop致力於在一般商用硬體上運行,其架構假設硬體會頻繁失效,Hadoop可以地處理大多數此類故障。可擴展:Hadoop通過增加節點,可以擴展以處理更大的資料。
----------------------------------------------

一般談到大數據都會直接聯想到 Hadoop 與 Spark 這兩個專案 , 基本上他們都屬於大數據的框架 , 但差別在於要解決的實質問題層面不太一樣, 以 Hadoop 來說 , 它是一個分佈式數據基礎設施 , 將巨大的數據集分派到一個由普通計算機組成的集群中的多個節點進行存儲 , 降低購買和維護昂貴的服務器硬件 , 除此之外還會索引與跟踪這些數據讓大數據處理和分析效率達到前所未有的高度. 而 Spark則是一個專門用來對那些分佈式存儲的大數據進行處理的工具, 它並不會進行分佈式數據的存儲 . 

Spark 因為其處理數據的方式不一樣,會比MapReduce 快上很多。 MapReduce 是分步對數據進行處理的: ”從集群中讀取數據,進行一次處理,將結果寫到集群,從集群中讀取更新後的數據,進行下一次的處理,將結果寫到集群,等等…“ Booz Allen Hamilton 的數據科學家Kirk Borne 如此解析。
----------------------------------------------

目前在工作領域,對於「大數據」系統建立,我們的做法是以Elasticsearch為搜尋引擎,它們存儲著JSON文檔,MongoDB存著 JSON文檔,或者一堆JSON文檔存放在一個Hadoop集群的HDFS中。你可以使用這三種配置完成很多同養的事情。建議架構如附檔。
----------------------------------------------

通常大數據雲端運算的資料檔案大小超過 PC 能夠儲存的容量,那便無法儲存在單一電腦裡,Hadoop不但讓你儲存超過一個伺服器所能容納的超大檔案,還能同時儲存、處理、分析幾千幾萬份這種超大檔案,。 

而MapReduce和HDFS一直是Hadoop最基礎的核心, 

Hadoop 是一個叢集系統(cluster system),也就是由單一伺服器擴充到數以千計的機器,整合應用起來像是一台超級電腦。 

MapReduce 是以 Map 跟 Reduce 為基礎的應用程式。一般我們進行資料分析處理時,是將整個檔案丟進程式軟體中做運算出結果,而面對巨量資料時,Hadoop 的做法是採用分散式計算的技術處理各節點上的資料。
----------------------------------------------

MapReduce的運作模式是先拆解任務,然後分工處理,最後再彙總結果,也就是將待處理的龐大資料切割成很多的小份資料後,由每臺伺服器分別執行Map程式來處理分配到的那一小段資料,再將每一個Map程式分析出來的結果,透過Reduce程式進行合併,彙整出完整的結果。 
MapReduce程式的執行過程如下: 
1.將要執行的MapReduce程式複製到Master與每一個Worker機器中。 
2.Master決定Map程式與Reduce程式,分別由哪些Worker機器執行。 
3.將所有的資料區塊,分配到執行Map程式的Worker機器中進行Map。 
4.將Map後的結果存入Worker機器的本地磁碟。 
5.執行Reduce程式的Worker機器,遠端讀取每一份Map結果,進行彙整與排序,同時執行Reduce程式。 
6.將使用者需要的運算結果輸出。
----------------------------------------------

Apache Hadoop是一款支援資料密集型分布式應用程式並以Apache 2.0許可協議發布的開源軟體框架。它支援在商品硬體構建的大型集群上運行的應用程式。Hadoop是根據Google公司發表的MapReduce和Google檔案系統的論文自行實作而成。所有的Hadoop模組都有一個基本假設,即硬體故障是常見情況,應該由框架自動處理。 

Hadoop框架透明地為應用提供可靠性和資料移動。它實現了名為MapReduce的編程範式:應用程式被分割成許多小部分,而每個部分都能在集群中的任意節點上執行或重新執行。此外,Hadoop還提供了分布式檔案系統,用以存儲所有計算節點的資料,這為整個集群帶來了非常高的帶寬。MapReduce和分布式檔案系統的設計,使得整個框架能夠自動處理節點故障。它使應用程式與成千上萬的獨立計算的電腦和PB級的資料連線起來。現在普遍認為整個Apache Hadoop「平台」包括Hadoop內核、MapReduce、Hadoop分布式檔案系統(HDFS)以及一些相關項目,有Apache Hive和Apache HBase等等。
----------------------------------------------

Hadoop是源自Google MapReduce技術 
Google發表MapReduce後不久,開源社群在2004年也用Java實作出一套使用MapReduce技術的開發框架Hadoop,讓Java開發者可以很容易寫出雲端運算的應用,Google和Yahoo都有不少工程師參與這項計畫。 
Hadoop內建了一個分散式檔案系統HDFS,也同樣透過Master節點和Slave節點的從集架構來提供分散運算,核心設計概念都是來自Google的MapReduce模式和分散式檔案架構,等於是Google雲端運算的開源版本,Hadoop也是目前最受歡迎的開源雲端運算框架。許多企業也都開始利用Hadoop來進行大規模的資料分析,例如eBay、中華電信、華碩投資的全球聯訊等。 

額外閱讀:MapReduce可以不斷增加更多伺服器來提高運算能力,增加可承載的運算量。透過Map程式將資料切割成不相關的區塊,分配給大量電腦處理,再透過Reduce程式將結果彙整,輸出開發者需要的結果。 

用一個真實的數錢幣故事來解釋MapReduce: 
有位企業主為了刁難銀行,用50元硬幣和10元硬幣償還316萬元的貸款,數萬枚硬幣重達1公噸,還得找來吊車才能送到銀行,幾位行員七手八腳花了好幾個小時才清點完畢。銀行只要不斷加派人手,就能縮短清點時間,例如能立即找到100個人手,10分鐘內就能完成,不會影響到正常銀行運作。 
就像這個不斷加派人手來清點錢幣的做法一樣,MapReduce可以不斷增加更多伺服器來提高運算能力,增加可承載的運算量。透過Map程式將資料切割成不相關的區塊,分配給大量電腦處理,再透過Reduce程式將結果彙整,輸出開發者需要的結果。 
=================================

Week11討論區

1、Platform as a Service (Paas) 
最大的優勢在於程式開發者可以不用管系統端的所有問題,只要將程式上傳到 PaaS 平台,就不用擔心 CPU、RAM 使用量過大或網路流量突然暴增而造成系統或網路資源不足的問題,也不用自己處理作業系統安全強化的設定。 
2、Google App Engine (GAE) 
是 Google 2009 年推出的 PaaS 應用服務,主要以 Web Service 為主,並提供自動化平台管理能力。而 Google App Engine (GAE) 已可以支援 Python、Java、Go 及 PHP 等程式語言。 
Google App Engine 的入門門檻也很低,它有提供免費的版本,使用者可以先試著使用此種服務,不需支付費用,即使正式開始使用,只要不超過出限定範圍也不需要付出其他費用。
----------------------------------------------

無論在任何產業上,大家都希望雲端計算服務能夠減低資訊建置的成本,其現今已有些廠商提供此服務,如Microsoft、Amazon、IBM 等,而我們所熟悉Google也有推出雲端服務(Google App Engine),它可以讓使用者將自己所寫的網頁、服務等置於Google所提供伺服器上,使用者透過此伺服器之服務,免去自行購買硬體設備及維護成本,另該平台提供python、JAVA等程式語言,讓使用者自行開發設計,又因所提供介面平易近人,讓初次使用者容易上手。
----------------------------------------------

GAE特色: 
1.GAE嘗試去幫助掌管應用程式的生命週期,例如:Dashboard,Log記綠,版本管理,資料庫等等。 
2.應用程式是執行在Google 的infrastructure,在Google File System的架構下,能快速、可靠地運作。 
3.在有限的配額下完全免費。 
4.可以免費使用多種Google API。 
5.支援 Python , JAVA 兩種程式語言開發。 
-Datastore: 
因為GAE使用的是BigTable架構,使用者沒有辦法直接存取資料庫。GAE提供資料庫的操作API供使用者存取資料。 
另外,GAE的Datastore是一種Schema-less Style,也就是使用者並不需要特別去設計資料庫的Schema。而直接用程式語言的類別去設計資料庫。GAE為常見的資料提供不同的種類,例如字串,使用者,日期等等。因為是使用BigTable的架構,資料很可能是分佈在不同的電腦之上。所以在執行join指令的時侯會耗費很多資源。所以GAE不支援join指令。所以在設計Datastore時要特別注意。 
-免費的額度: 
主要是希望讓使用者不會耗盡整個網路資源。不會因為某些過大的流量而影響正常的使用者。
----------------------------------------------

剛開始接觸雲端建置是在Azure及Hinet Cloud上,但對於其它家的服務不是很了解,外面的課程也較少。在本周初步了解GAE功能及架構,也期望在未來能實際操作使用。 
我司近期也採用GOOGLE的雲儲存服務,主要是費用和簡易上手,但我認為應能有更多的服務可開發使用,另外在課程上也建議能多有例子說明,或實際案例建置。 
----------------------------------------------

GAE 在雲端計算中屬於PaaS 
目前支援 Node.js、Java、Ruby、C#、Go、Python 和 PHP 
使用者可以專注在程式碼,其它的基本架構可交由GAE處理 
提供了免費的SSL/TLS 憑證,在web 應用開發上不需要額外的開銷 
還有流量拆分工能,可將連入要求導向不同的應用程式版本、執行 A/B 測試,以及以漸進方式逐步部署功能
----------------------------------------------

Google App Engine是屬於PaaS雲端服務模式。 

Google App Engine(GAE) 讓使用者可以在Google的基礎架構之上執行網路應用程式。在這個基礎建設之上,可以很容易的建立與維護,以及當流量與儲存需求增加時可以容易擴增規模。在Google APP Engine 的環境中,使用者不需要維護伺服器,只需要將網路應用程式上傳,然後其他的使用者就可以使用該應用程式所提供的服務。對於該應用程式,你可以使用自己的網址 (例如http://www.example.com/) ,或是使用 appspot.com領域之下的免費網址。該網路應用程式可以公開讓所有的人使用,或是限制只有組織內的成員才可以存取。Google App Engine 支援以數種常用之程式語言所開發的app,例如Java, Python, PHP,或GO等。 

Google App Engine 有什麼好處呢?當有大流量使用需求的時候很好用,不用自己管理 load balance 的問題。Google會幫你自動開關 instances,使用多少就付多少,頻寬超高的使用 Google App Engine 幾乎沒有什麼延遲。就個人的觀點,純 app developer 很適合用 Google App Engine。省去自己架設機器部署軟體的麻煩,更不用知道底層系統是怎麼運作的。可以讓開發者專心的開發程式,把產品快速上線,且網頁服務具備scale-in & scale-out的能力。對於有大量的訂單或是搶票系統有需求的真的可以好好考慮使用 App Engine。
----------------------------------------------

GAE(Google App Engine)可以讓一些小型企業或是一般用戶,可以透過簡易的方式使用其平台的應用服務,進行主機代管或是E-mail收發,也可以使其雲端儲存空間,省設備採購,更可以使用其平台的運作機制,加強資料的備援。
----------------------------------------------

Google App Engine(GAE)讓使用者可以在Google的基礎架構之上執行網路應用程式。免費提供主機服務及網址名稱、不用負擔管理硬體及資料庫、對於使用者需要的軟硬體資源採取使用者付費,不需要知道底層程式如何撰寫即可在平台上撰寫應用程式。
----------------------------------------------

藉用GAE來軟體程式設計,讓程式開發對我這種IT新手來說,變得不是那麼遙不可及的事,而且市面上的資訊、教學很多,尤其還支援PYTHON語法,希望這堂課後,自己也來玩玩看。
----------------------------------------------

Google App Engine是屬於PaaS,提供雲端開發平台的服務給Software開發者,使用者只須將網頁或是網路應用程式上傳至平台,不需進行額外的環境設定。 

Google App Engine提供開發者將網頁、網路應用程式服務上傳至平台,讓開發者透過Google的伺服器來提供服務。為了讓網頁與應用程式效能更好,Google App Engine還提供了load balance管理功能,若連線數量或是網路流量過大導致機器無法負荷時就會自動擴充另一台伺服器來分攤目前流量;同時Google App Engine還提供使用者安全的環境執行程式。 

Google App Engine支援Java和Python語言的程式撰寫且提供完整的開發套件,同時其套件亦可使用於Android程式的開發,達成跨平台整合,在雲端平台中佔有重要的開發地位。
----------------------------------------------

透過課程了解GFS這個分散式檔案系統結合GAE這個PaaS架構的服務平台,並且提供多種程式語言來讓使用者可以開發理與進行大量資料的存取運算。
----------------------------------------------

Google App Engine是個可使用多種程式語言建構可擴充的網路和行動後端服務,並且開放且有彈性,可以使用任何資料庫或是架構,在程式診斷與監控上也有專門的服務軟體來執行,非常方便,還有免費試用版可以使用,方便大家初學者試用看看,用到依定程度再依使用狀況付費增強功能
----------------------------------------------

從本章節對 GAE 歷史及整體架構有了基本的了解, 而 Google file system 更是基於 GAE 的 file system 與 distributed file system 技術建立的. 由於 GFS 需要處理大量檔案, 同時讀取寫入, 還有考慮多使用者同時使用的架構, 因此 GFS考慮首要條件就是要有足夠頻寬. 而 GFS 因為在雲端處理要避免傳統電腦的架構, 所以 reliability 並不是使用 data cache, 而是利用 snapshot 還有 recordappend 的作業模式.
----------------------------------------------

Google應用服務引擎的Datastore使用一個與SQL類似的語言,叫做「GQL」。在GQL中,SELECT語句僅可以用於一個表。因為要跨越不只一台機器, GQL不支援效率很低的JOIN語句[5]。欲建立一對多和多對多的關係,可使用ReferenceProperty()[6]。採用這種無共享的方式,即使磁碟壞了,系統也不致癱瘓[7]。 

在GQL中,SELECT語句中的WHERE從句只容許對僅僅一列進行>、>=、<或<=比較。所以,僅僅可以構造簡單的WHERE從句。在資料建模時,要從關聯式資料庫轉換到Datastore,開發者需要轉變觀念。 

App Engine限制每次Datastore請求最多返回1000行資料。大多數Web應用程式,都不會受此影響,因為它們通常並不會在一張頁面上列出超過1000條記錄(可以用分頁和快取機制),只要按順序返回結果就可以了。若有應用程式需要在一次操作中返回更多的記錄,則需自行使用用戶端軟體或者Ajax頁面,按查詢順序提取更多條記錄。 

這個Datastore的API是不關聯的,有別於一般關聯式資料庫——比如IBM DB2、Microsoft SQL Server、MySQL、Oracle資料庫、或者PostgreSQL。 
----------------------------------------------

Google App Engine是一個開發、託管網絡應用程序的平台,使用Google管理的數據中心。 
使用了雲計算技術。它跨越多個服務器和數據中心來虛擬化應用程序。 

Google App Engine支持的編程語言是Python、Java、PHP和Go(通過擴展,可以支持其他JVM語言,諸如Groovy、JRuby、Scala和Clojure)。支持Django、WebOb、PyYAML的有限版本。Google說它準備在未來支持更多的語言,Google App Engine也將會獨立於某種語言。 

其他競爭平台還有Amazon Web Services和微軟的Azure服務平台,紅帽公司的 openshift、微軟的Azure服務平台。 

然而GAE開發者擔心App Engine應用程序不能移植到其他平台上,因而被困在單一種技術之內。
=================================

Week12討論區

Apache Spark 是目前蠻常用於處理大數據工作負載的 Open Source 計畫, Apache Spark 利用記憶體內快取和優化執行以獲得快速效能,且支援一般批次處理、串流分析、機器學習、圖形資料庫及臨機操作查詢。在目前常見的雲端平台例如:Amazon 上的 EMR 就可以支援 Apache Spark 的使用 

Apache Spark 支援使用 Java、Scala or Python來建置相關應用程式, 也提供 Spark SQL 模組來提交 SQL 或 HiveQL 查詢 Apache Spark。除了執行應用程式之外,還可以使用 Apache Spark API 於叢集架構下的 Apache Spark 殼層中與 Python 或 Scala 互動。所以對於需要進行大數據分析運作的使用者而言這是一個十分好的架構
----------------------------------------------

在GAE 了解structured, semi- structured , unstructured 和bigtable的架構key value, row 是按序排列,一定范围的 row 可组成一个集合,称为 tablet,它是分布式存储和资源调度的最小单元;column 会被组合成 column family, Bigtable會將數據持久化成SSTable的格式, Bigtable依賴於Chubby服務來進行分佈式調度和存儲,也了解到在GAE程式上面如何安裝及撰寫程式的基本操作
----------------------------------------------

使用GAE能使開發者,不用每個雲端應用程式或是網頁,都要自行架設一台Server才能工作,大大省去開發成本與時間 

若是傳統的作法,開發者必須要準備一台server,且全天候開啟,且隨時都有服務關閉的可能性
----------------------------------------------

在本章節中,介紹了Bigtable、NOSQL和GAE環境安裝等等,而Bigtable讓我更了解,它的主用應用及觀念,像它可部署在Google的許多服務中,並提供高性能的存儲系統,以及自我管理數千台服務器等。也了解到Bigtable主要用於儲存大規模結構化資料。
----------------------------------------------

Google App Engine 是由 Google 所提供的雲端服務,它可以讓開發者將自己所寫的 
網頁、服務等放到他們的伺服器上,讓使用者透過他們的伺服器來使用。此種方式不 
需要開發者自行購買硬體設備也不需要維護整個服務,只需要到 Google 的使用者管理 
介面裡觀看是否異常並調整繳費等項目即可。 
目前支援的程式語言目前只有 python 和 JAVA,開發者可以藉由這兩種程式語言開 
發。 
Google App Engine 的入門門檻也很低,它有提供免費的版本,使用者可以先試著 
使用此種服務,不需支付費用,即使正式開始使用,只要不超過出限定範圍也不需要 
付出任何費用。並且提供有 1GB 的儲存空間、5GB 的檔案儲存空間、每月 500 萬次網 
頁瀏覽次數、受到限制的網路頻寬等等方案。 
除了免費的部份,Google 也有推出「用多少付多少」的付費服務。目前它所提供 
的付費只能使用信用卡的方式。在付費這部份,Google 將每個項目分的很細,像是 CPU 
時間、儲存空間和上傳和下載的頻寬等等,項目很細。使用者可以由介面設定要增加 
的部份是哪些,並且設定一個扣款的額度,Google 便會自行控制。
----------------------------------------------

Spark在記憶體內執行運算時,最快可以比Hadoop MapReduce快100倍。即使與MapReduceㄧ樣將運算結果儲存在硬碟上,運算速度也可以快上10倍。Spark是一個分散式的運算框架(Framework),由於Spark原始碼是以Scala撰寫,所以在Scala Api的支援相較於其他語言比較完整,其次為Java、Python、R。建議使用Scala撰寫Spark Application 可以使用完整的Spark Api。
----------------------------------------------

Google App Engine是由Google所提供的雲端服務,它可以讓開發者將自己所寫的網頁、服務等放到他們的伺服器上。使用Google App Engine有很多的優點,例如有免費的主機服務及免費的網址名稱,除了免費的部份,Google也有推出「用多少付多少」的付費服務。Google App Engine目前只有支援JAVA和python所開發出來的程式,而所提供給開發者的應用服務則有Cron排程、Task排程、URL擷取服務、記憶體快取、使用者認證機制、Blobstore靜態儲存空間及資料管理等。
----------------------------------------------

GOOGLE APP ENGINE是一個功能強大的平台,無論是要從頭構建一個多層 Web 應用程序還是託管一個靜態網站,都可以在 Google 基礎架構上執行 

且在開放的雲端平台上打造新式網路和行動應用程式:可以自行導入語言執行階段、架構和第三方資料庫。所以說它是是全方位管理的平台,可以靈活配置,透過課程結束後的搜尋,才知道首屈一指的企業都在 App Engine 上執行他們的應用程式。
----------------------------------------------

GAE 是之前課堂上說到的一個PaaS,主要用來開發、託管網路應用程式的平台。 
在web上已經開通服務應用,不需自行架設各種服務的server,更不需要花時間、人力進行維護 
----------------------------------------------

Google App Engine 之前有接觸過,主要是用來開發、代管網路應用程式的平台 
可以快速佈署測試的VM,開練習 OS ,架設小功能上有很棒的體驗。
=================================

Week13討論區

OpenStack採用開放原始碼方式散佈的專案,Apache授權允許廠商修改程式碼以符合自身需求,不必擔心授權感染問題。而成熟的社群,也讓OpenStack專案常見的元件能夠與時俱進,商業營運需要的功能都有。也因為其開放的發展關係,成為公有、私有或者混合架設方案。未來我們想必會在上面看到不少企業應用 OpenStack,應用的規模也將越來越大。
----------------------------------------------

本周的課程跟期末DEMO相關度極高,透過課程講義,跟自己爬文,大概了解Container這樣工具特性,如使用原生硬體的效能、服務可攜式而且可以在不同VM機器跑來跑去,透過實作希望能學會、好好利用這個工具。
----------------------------------------------

Container與傳統虛擬化技術的不同點: 
1.常見的傳統虛擬化技術是以「作業系統」為中心,而Container技術則是一種以「應用程式」為中心的虛擬化技術。傳統虛擬化技術從作業系統層下手,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,習慣以虛擬機器(Virtual Machine)來稱呼。 
2.而Container技術則是直接將一個應用程式所需的相關程式碼、函式庫、環境配置檔都打包起來建立沙箱執行環境,為了和傳統虛擬化技術產生的虛擬機器區分,Container技術產生的環境就稱為Container。 
3.Container技術採取共用Host OS的作法,而不需在每一個Container內執行Guest OS,因此建立Container不需要等待作業系統開機時間,不用1分鐘或幾秒鐘就可以啟用,遠比需要數分鐘甚至數十分鐘才能開啟的傳統虛擬機器來的快。 
----------------------------------------------

首次接觸建置Iaas雲服務,覺得蠻棒的。OpenStack 有好多個跟雲端儲存、運算、網路功能的模組。使用者可以依自己的需求,選擇佈署特定模組。 
課程上說明這六大主要模組: 
Nova:負責運算的元件,為整個 IaaS 系統的核心元件。 
Keystore:OpenStack 的身份認證服務,能夠管理雲端服務的存取權限,並提供開發者多種不同的連接方式 
Swift:負責 OpenStack 雲的物件儲存元件,不同於傳統儲存方式,Swift 將檔案儲存到不同節點,確保錯誤時檔案仍在。 
Cinder:區塊儲存元件,與傳統的電腦硬體運作方式相似,可以確保資料資料存取速度。 
Neutron:OpenStack 的網路管理元件,確保 OpenStack 的各個不同元件能夠順暢購通。 
Glance:OpenStack 的磁碟快照服務,可新增、刪除、複製快照。 

另外,經查找網路相關,還有 
Horizon:OpenStack 的報表系統,提供系統管理員和使用者系統狀況的圖表報表。 
Ceilometer:OpenStack 的監控服務,能夠為有收費機制的公有雲,計算使用量。 
Trove:OpenStack 的資料庫服務。 

愈見其龐大功能與架構。 
----------------------------------------------

Docker容器跟VM虛擬機有何不同? 

正因為初期定位為輕量級虛擬化,所以很多人誤解容器技術的使用方式,其實跟虛擬化技術所要解決的問題是南轅北轍。 

傳統虛擬化技術是從模擬虛擬硬體下手,主要目標是建立一個完全獨立的沙箱式作業系統執行環境,單位是一整台虛擬機(Virtual Machine),所產生出的執行單位稱作實例(instance)。 

而容器技術則純粹只是將應用系統相關的程式碼、函式庫、執行環境配置打包成隔離的可執行沙箱環境,並沒有做任何硬體虛擬化,正因為少了虛擬化的客體作業系統(Guest OS)這一層,所以執行應用系統效率會比虛擬化要好。但容器化技術並不會幫作業系統或硬體加速,單純只是資源利用率比較高。 

什麼是容器(container) 技術 
容器(container) 技術雖然與傳統虛擬化(Virtual Machine) 都是虛擬化技術,但與傳統需要需要安裝作業系統的虛擬化技術不同,容器(container) 技術共用底層 OS 的做法,從 OS 層級的虛擬化轉為應用程式層級的虛擬化,這樣的轉變讓原本所需的資源大為降低、執行速度也快上許多, 

Container技術和伺服器虛擬化是一樣的技術嗎? 

A:不是。兩者雖然都屬於虛擬化的技術,目標都是為了將一套應用程式所需的執行環境打包起來,建立一個孤立環境,方便在不同的硬體中移動,但兩者的運作思維截然不同。簡單來說,常見的傳統虛擬化技術如vSphere或Hyper-V是以作業系統為中心,而Container技術則是一種以應用程式為中心的虛擬化技術。 

傳統虛擬化技術從作業系統層下手,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,習慣以虛擬機器(Virtual Machine)來稱呼。而Container技術則是直接將一個應用程式所需的相關程式碼、函式庫、環境配置檔都打包起來建立沙箱執行環境,為了和傳統虛擬化技術產生的虛擬機器區分,Container技術產生的環境就稱為Container。
----------------------------------------------

在此次雲端實習作業,算是第一次去實際架設Docker和OpenStack這兩種雲方案。 
在整個運用過程中,將以往所看到的資訊化成一個個步驟,並且執行其服務,才慢慢地深入了解並熟悉其運行架構。 
OpenStack在如今的雲方案中脫穎而出,是因為這一運行IT基礎設施的軟體平台是開源的,所以來自全球的開發人員正在補充和改進這項較新的技術。很多擁有大量研發實力的公司也參與其中。 

而OpenStack可能是基礎設施的其中一種方式,但私有雲市場正在發生變化,開發能力越來越受到重視。 因此,技術人員可能需要考慮Cloud Foundry或OpenShift這樣的平台即服務產品,並在OpenStack之上構建。現在很多企業正在使用更多的容器來標準化和加速軟體開發,所以容器標準化也是需要考量的其中因素。
----------------------------------------------

聆聽完本周課程後,明瞭Open Container Project的特性與重要性,於相同標準格式下,開發者可用標準的格式開發應用程式,然而,在安全方面產生關鍵性問題,就跟部署作業系統的安全一樣,於安全生命周期的管理顯得更重要,又因Container具有高移動性,只要是在Linux的範疇內,就可以在任何地方運行,而忽略安全性,也因而容易忽略安全性。
----------------------------------------------

OpenStack是一個開源的雲端管理套件,內部包括了運算模組、網通模組和儲存模組,再搭配一個可以集中管理上述三大類模組的儀表板模組,最後組合而成一套OpenStack共享服務,並且可以提供虛擬機器的方式,對外提供運算資源以便彈性擴充或調度。簡單來說,OpenStack就是一套可以用來打造IaaS服務的開源雲端作業系統。在近幾年竄紅且各大公司爭相導入
----------------------------------------------

本次課程讓我更了解如何使用Openstack,也讓我對期末作業更輕易上手,而在實務上也有許多產業在使用雲端技術時,OpenStack是目前在國際企業中最流行的混合雲架構之一。
----------------------------------------------

OpenStack 是一個採用開放原始碼方式散佈的專案,Apache 授權允許廠商修改程式碼以符合自身需求,不必擔心授權感染問題。OpenStack平台提供了一種敏捷靈活的基礎架構作為服務模型。它包括三個主要服務產品——計算、網路和存儲。
----------------------------------------------

本週的openstack的實作,讓我了解到其整個系統運作過程及操作,也能體會到整個系統的維護,將需要非常大的人力投入,這對於一般企業來講,就可能需要多方考量,也因為如此openstack在台灣一般企業的推行非常的困難,也因為無法普及。
----------------------------------------------

OpenStack部署供了兩種網絡模型架構:Provider Network & Self-Service Network 
* Provider Network 
1. 這是OpenStack最為簡單的網絡架構,主要是提供二層服務(layer-2,以網橋和交換機連接不同網絡)和VLAN劃分。其本質是將虛擬網絡橋接到物理網絡,並依靠物理網絡基礎設施來提供三層服務(layer-3,routing)。 
2. DHCP服務將向實例提供IP地址信息。 
* Self-Service Network 
1. 相當於Provider Network的增強版,在其基礎上,增加了通過諸如VXLAN方式在自服務網絡中提供三層路由服務。其本質是使用NAT的方式將虛擬網絡路由到物理網絡。 
2. 在這種網絡模型下,還可以提供許多高級的服務,比如LBaaS(負載均衡即服務)和FWaaS(防火牆即服務)。
----------------------------------------------

聽完課後上網查詢了一些關於OpenStack的資訊,OpenStack是個非常多套件可以使用的雲端作業系統,網路上也蠻多教學的,安裝完後我也一步一步慢慢做,雖然目前只是試用,但使用介面和設定都還蠻清楚的,蠻容易上手
=================================

Week14討論區

AWS 應該可以堪稱目前 Cloud 平台中整合性與服務最為完整的架構供應者, 從單純的 EC2 到 IoT、Stremaing 服務等無一沒有提供 , 尤其他可以洞悉與提供大部分中小企業與中大型企業對於服務上的需求, 讓各個導入者可以快速的組成所需要的架構與服務內容. Hadoop MapReduce 和 Tez 是 Hadoop 生態系統中的執行引擎,處理工作負載時會使用架構將任務分成數個小工作,以便分發到 Amazon EMR 叢集中的各個節點。在 Amazon EMR 叢集使用 EMR 檔案系統 (EMRFS),服務的需求者可以利用 Amazon S3 作為 Hadoop 的資料層 , S3 的最大優勢在於高度可擴展、低成本且針對持久性所設計,因此成為大數據處理的絕佳資料存放區。將資料存放在 Amazon S3 即可去耦運算層與儲存層,讓您針對工作負載所需的 CPU 和記憶體的數量來調整 Amazon EMR 叢集的大小,而不是在叢集中建立額外的節點來最大化叢集上的儲存。這也是為什麼在大部分企業挑選雲端服務平台會以 AWS 為主要目標, 也是目前 Amazon 獲利最大的主要來源的主因之一
----------------------------------------------

AWS提供非常多的關於雲端需求的相關服務,而且還提供GPU處理器、SSD硬碟等等,讓使用者可以選擇符合自己需求的雲端主機。 

隨然服務很多,但是需多主機的收費價格真的有點高,如果使用量很大的話,對於公司的成本分析來說,很可能自己架設會比較便宜
----------------------------------------------

從課程了解到AWS 提供了Computing, storage, database, analytics, networking, mobile, developer tools, management tools, Internet of Things (IoT), security, and enterprise applications等多樣性相關服務,可以讓企業自行選擇需求的服務 
可以多種彈性搭配加以運用, 利用EC2建置網站或各式各樣的伺服器, 
然後與S3的儲存空間搭配應用,並了解到AWS服務價格不便宜,但入門學習AWS就要注意免費期間時間,如沒有關掉相關服務可能一不注意就被收取昂貴費用 
----------------------------------------------

資料保護令(GDPR)已經上路,VMware與AWS合作的混合雲解決方案VMware Cloud on AWS,近日VMware也宣布,該解決方案已做足準備來因應GDPR。該公司表示,在GDPR規範下,提供VMware Cloud on AWS服務的VMware,其角色是資料處理者(Processor),而使用該服務的企業用戶,若使用資料進行後續應用,在GDPR定義下,則屬資料控制者(Controller)。VMware表示,除符合ISO 27001、ISO 27017、ISO 27018標準,自家服務也獲得雲端安全聯盟(Cloud Security Alliance)認證。 
如果VMware Cloud on AWS出現資安事件,導致隱私資料流出、被非法存取,會馬上通知企業用戶,並且提供事件相關資料。 
----------------------------------------------

亞馬遜網路服務系統(英語:Amazon Web Services,縮寫為AWS),由亞馬遜公司所建立的雲端運算平台,提供許多遠端Web服務。Amazon EC2與Amazon S3都架構在這個平台上。 
無論需要運算能力、資料庫儲存、內容交付或其他功能,AWS 都能提供適合的服務協助您建立高度靈活、具備可擴展性和可靠性的精密應用程式。Amazon Web Services 提供各式各樣的全球雲端產品,包含運算、儲存、資料庫、分析、聯網、行動、開發人員工具、管理工具、物聯網 (IoT) 、安全和企業應用程式。這些服務能協助組織更快速地運作、降低 IT 成本及擴展。最大型的企業和最熱門的新創公司都信任 AWS 為各種工作負載提供技術支援,包括:Web 和行動應用程式、遊戲開發、資料處理和倉儲、儲存、存檔等等。
----------------------------------------------

AWS 於 2006 年創立,和其他平台相比擁有先發優勢,如今提供的運算、儲存、資料庫、分析、應用程式服務超過 70 種,覆蓋面最廣最深也就自然成為大多數用戶的首選。Microsoft Azure 於2010 年成立,擁有 67 項服務並於 30 個區域設立資料中心。GCP 於隔年成立,提供超過 50 項服務,正在積極猛烈地擴張事業版圖、目前在世界各地擁有超過 100 個業務據點。 

有了這些雲端供應商的服務,像 Spotify、Snapchat、Netflix、AirBNB 等企業都搬遷至公有雲(皆在GCP上),將維護網站與數位資源的工作交付給雲端平台去處理;省去自己建置並維護 IT 部門與網路基礎建設的成本,更能將心力放在核心業務上。 

對於新創公司來說,更是缺乏投資這種技術的資源。一般人也因為按用量付費「用多少算多少」的優勢而選擇公有雲,能透過這些雲端供應商使用到世界級的網路基礎設施,進行資料儲存、數據運算、系統管理等。 
----------------------------------------------

AWS近年也有AI方面應用:影像辨識、聊天機器人與語音轉換。Rekognition能辨識照片中影像組成事物,也能有效識別人臉並加以記憶;例如美國電視頻道C-Span就利用該程式自動識別電視節目中演講者面孔。透過蒐集超過9.7萬個人像資料,Rekognition最終成功於C-Span上8個不同的節目片段中辨識出同一指定人物,讓使用者能藉此得知講者身份,並進一步瞭解其曾出現在哪些節目影片中。Amazon Lex與Amazon Polly則是分別為聊天機器人服務及文字轉語音程式,兩者皆應用自然語言理解(NLU)及自動語音辨識(ASR)技術。Lex能廣泛運用於回答消費者問題、應用程式等聊天機器人,也能作為提升企業生產力的自動化機器人及IoT機器人。而Polly則能將文字轉換成生動的語言文字,透過AI技術理解書面文字寓意將其精準轉化為口語表達語句。
----------------------------------------------

在本章節介紹了Amazon Web Services(AWS),以及AWS EC2、AWS S3等,AWS EC2是AWS最大賣點,而EC2可以說像vm一樣,另可透過web server啟動需要的虛擬server且可設定它,可快速擴展及減少運算的能力。此外,Amazon S3是有認證機制,可開放給特定使用存取,在Data的安全性來說,AWS給予它很多的保護機制,可免於軟體和硬體上的損壞,或使用者人為因素,或應用程式等,可以說AWS在資料安全性的防護,是十分完善的。
----------------------------------------------

依 2017全球十大雲端計算平臺市場佔有率排行榜 (https://itw01.com/YBWAEKN.html), AWS 市佔率排名全球第一,提供的服務有 
* Amazon Elastic Block Store (Amazon EBS) 
  適用於 Amazon EC2 的持久性本機儲存,可用於關聯式和 NoSQL 資料庫、資料倉儲、企業應用程式、大數據處理或備份與恢復 
* Amazon Elastic File System (Amazon EFS) 
  一個檔案系統界面與檔案系統存取語意,將資料提供給一或多個 EC2 執行個體,用於內容服務、企業應用程式、媒體處理工作流程、大數據儲存或備份與恢復 
* Amazon Simple Storage Service (Amazon S3) 
  一個可擴展且耐用的平台,讓資料可從任何網際網路位置進行存取,用於使用者產生的內容、作用中存檔、無伺服器運算、大數據儲存或備份與恢復 
* Amazon Glacier 
  價格合理的長期儲存,可取代磁帶以遵守存檔及法律合規 
* AWS Storage Gateway 
  一個可用 Amazon 雲端儲存來擴充現場部署環境的混合式儲存雲端,可用於服務爆量、分層或遷移 

其中 Amazon S3 可以讓使用者可以選擇符合自己需求的雲端主機,並建立服務
----------------------------------------------

Amazon Web Services (AWS) 是雲端服務平台,提供運算能力、資料庫儲存、內容交付等功能,並具備廣泛的安全性認證與資格鑑定、靜態和傳輸中資料加密、硬體安全模組及強式實體安全。AWS 也建立了 IoT 特定的服務,例如 AWS Greengrass 和 AWS IoT Core。AWS IoT Core 是能夠將裝置連接至 AWS 服務和其他裝置、保護資料和互動安全、處理裝置資料並採取行動,以及即使離線也能讓應用程式與裝置互動的平台。而AWS Greengrass 則是一種軟體,可讓使用者以安全的方式在連線裝置執行本機運算、簡訊和資料快取。使用 AWS Greengrass 時,連線裝置可執行 AWS Lambda 函數、保持裝置資料同步,即使沒有連接到網際網路也可以與其他裝置安全的通訊。這些服務有助收集資料和傳送資料到雲端、輕鬆載入和分析該資訊,且提供管理裝置的能力。
----------------------------------------------

從課程中更加了解到AWS提供的雲端服務系統,最近有稍微了解到AWS支援Kubernetes容器的調度。以下是一些特點介紹: 
1. 無須管理控制平面 
Amazon EKS 可跨多個 AWS 可用區域執行 Kubernetes 管理基礎設施、自動偵測和替換運作狀況不佳的控制平面節點,以及提供隨需升級和修補。您只要佈建工作者節點,並將這些節點連接到提供的 Amazon EKS 端點即可。 
2. 預設即安全 
系統會在工作者節點和受管控制平面之間自動設定安全且加密的通訊管道,讓您在 Amazon EKS 上執行的基礎設施預設就很安全。 
3. 與社群一起建置 
AWS 主動與 Kubernetes 社群合作,包含為 Kubernetes 程式碼基底做出貢獻,以協助 Amazon EKS 使用者充分利用 AWS 服務和功能。 
4. 一致且相容 
Amazon EKS 執行上游 Kubernetes 且獲得 Kubernetes 一致性授權,因此 Amazon EKS 管理的應用程式可與任何標準 Kubernetes 環境管理的應用程式完全相容。

留言

熱門文章