:::
顯示具有 布丁通信 標籤的文章。 顯示所有文章

對於雲端技術中的PaaS一些看法 / Thinking of PaaS

對於雲端技術中的PaaS一些看法 / Thinking of PaaS

3 levels

(來自於雲端開發測試平台 Cloud Open Lab

最近在研究雲端技術時,開始興起朝PaaS去研究的想法。以下是整理一下最近看的東西,以及對PaaS的一些發想。

I have studied the cloud technology for some time. Recently I was interested in PaaS. The following is some relevant information of PaaS, and my thoughts on PaaS.


雲端服務的三層次 / Three Levels of Cloud Service Structure

目前大家對雲端技術的三層次大概都很明確了。簡單來說,在使用工具的時候,我們只想關注、調整我們需要的重點(層次),而其他更基礎的東西則交給雲端系統去自動化處理,讓後面系統包裝成服務給我們使用。

雲端技術發展到現在,重點層次已經凝聚成共識,目前可以分成三層次:

  1. IaaS 設備即服務:重點在於電腦主機伺服器,而它的架設、管理與使用都可以用雲端系統提供服務的方式操作。這是雲端架構的基礎。
  2. PaaS 平台即服務:重點在於要運作一個系統,類似網頁或是Java程式。系統所需要的運作環境跟資料庫則由雲端系統提供。這是給應用程式開發者使用的層次。
  3. SaaS 軟體即服務:重點在於可以用的工具。現在許多以網站提供的工具都算是SaaS。

為了管理大量伺服器,我一開始踏入的是IaaS。我研究了VirtualBox,也研究Proxmox VE,現在也想用OpenNebula (Ezilla)。但是這些只能說是方便整合那堆放置難以管理的實體伺服器,還不能達到我想要解決的問題。

開發之前還要配置環境的痛苦 / Preparing Development Environment is Very BORING

DSC_0534

到了現在,實驗室許多學生在開發時,他們只需要環境,不需要從整個伺服器開始學起。他們只需要搞懂PHP、JSP跟MySQL、PostgreSQL之間怎麼運作,不想要再學Linux的bash如何操作。

儘管對於ssh的遠端登入、chmod修改權限、設定cron等Linux指令對我們這些習慣管理Linux的人來說駕輕就熟,但對於連PHP跟資料庫要怎麼連線都還在摸索的程式入門學生來說,要如何操作作業系統又會是一大難題。

「現在的學生怎麼這麼不耐操?連這點小事情都不肯學?」

旁觀者肯定會說出這種風涼話,但簡單地想一下就知道:開發能解決研究問題的系統工具,跟搞懂Linux伺服器,哪一個是優先要處理的事情呢?答案當然是前者,而且我寧願學生把搞懂Linux所花的時間全部投注在主要系統的開發,專心做好能跟研究直接相關的工作。

好吧,老實說,這也是我懶啦。每次都在幫人家配置那些環境很煩耶!就算駕輕就熟還是很麻煩啊!身為程式人員的耐心在重複的事情出現第二次之後就會按奈不住了啊!

所以我需要一個方案,能自動幫我把環境配置好。我們只要專心投入在開發工作上即可。

自行架設私有PaaS / PaaS Services

現在提供PaaS服務的公司很多。但是因為我是在學校,我想要長久使用,所以基本上並不考慮收費方案。扣掉這點,能剩下的選擇就很少了。

再來就是要找尋提供我所需要運作環境的平台。Google知名的PaaS Google App Engine在少數流量下可免費使用,勉強納入我的考量,但是他只能用Python跟JAVA開發這點讓我又把它移出了考量清單。同樣的,RedHat的OpenShift也只是支援Java,但它用Git儲存庫來佈署這點我蠻喜歡的。不過上述這些都只有公司提供服務,不能架設在自己的單位。

stackato-by-activestate_1000px

Stackato是架設私有PaaS的另一個選擇,也有免費方案,蠻符合我自行架設的需求。Stackato以ownCloud來佈署開發程式,可以跑Java跟PHP,也能支持許多資料庫。就功能來說我很感興趣,可是這不是開放原始碼,免費版本的Stackato的限制令我卻步。

header-logo.gif

WSO2可真的是開放原始碼的PaaS架構了,而且也支援PHP、MySQL與Tomcat插件。其中提到一個特點:

Traditional, non-cloud-aware application platform containers, such as PHP and MySQL, can be extended into a multi-tenant cloud deployment.

傳統上,非雲端的應用平台程式,像是PHP與MySQL,可以發展成「多用戶雲端佈署應用」。

我想像多重租貸模式會是一個框架,它把應用程式(也就是網站)的對外窗口跟抽象化之後的服務接軌。但是細節的部份我還沒仔細摸,不知道能不能提供我需要的服務,有待研究。

一開始在摸的時候,我一直在想,PaaS不就是很久以前很流行的「免費架站空間」嗎?我們向公司請求一個可以運作PHP的空間、MySQL資料庫與網站連線的網址,然後透過FTP上傳我們的程式碼,然後就能夠正常運作。不過意外的是,這些傳統的架站空間似乎都不被當做是一種PaaS,大概是作法實在是太傳統了吧。

我對PaaS的期許 / My Expectation of PaaS

我是希望未來我的網站可以打包成一個像上面WSO2所講的多用戶模式。這個框架會是標準格式,我只要在我的開發環境做好、將框架打包好,然後就可以透過Git之類的程式碼儲存庫佈署到任意的PaaS當中。

應用程式中的設定將不會在開發時寫成固定值,而是做成需要透過框架去向外面服務請求設定的對外窗口。這些對外窗口包括資料庫連線與建置調整、排程工作的需求(開關機時執行的指令、定期執行的指令)、大量資料的儲存位置。舉例來說,我在本機開發時,對外窗口向本機端請求了MySQL的服務;而移到PaaS上的時候,對外窗口則是向PaaS提供的服務要求MySQL的位置。

而PaaS提供的服務則是可擴充的、可動態分配的架構。當對外窗口要求一個MySQL資料庫的時候,它其實是連到提供MySQL負載平衡的中介伺服器上,然後依照框架設定、背後有複數的MySQL資料庫來提供穩定的資料庫服務。同樣的,資料儲存位置使用的服務背後也可能是整合性的機制,不會因為單一機器毀損而遺失資料。

跟一般把服務全部包在虛擬機器裡面的IaaS比起來,PaaS把服務拆得更細,因此就能夠提供更穩定的服務架構。

從PaaS回到IaaS來看 / Deploy IaaS Like PaaS

PaaS把應用程式與服務拆開來,以提供更穩定的架構。不過反過來說,因為服務拆得更細的關係,在有個標準之前,恐怕常常還是會覺得要做什麼事情都是綁手綁腳的不自由。

舉例來說,我的PHP程式想要用命令列來控制FFmpeg轉檔程式,那我就得在Liunx安裝FFmpeg套件,但是在現在PaaS的架構中這應該是不太可能做得到的事情,必須要在IaaS的層級中才有這般自由。

是的,有權限控制一整台伺服器就是網管人員最開心的事情。我在想,如果我們可以在IaaS層級中使用PaaS的作法,那應該會很方便。我的網站架設在虛擬主機中,預設是以虛擬主機自身提供的服務來運作。不過如果我有需要,我可以透過對外窗口自動將設定改成外部的服務,像是使用另一台虛擬主機架設的資料庫。

因此,IaaS層級的虛擬機器就會分成三種類型:一種是多租貸模式的主機,它必須提供對外的窗口供統一管理與設定,讓管理者不必登入到IaaS的主機中修改設定檔;第二種是專門運作資料庫、檔案伺服器的主機,但是它們並不是直接給多租貸模式的主機使用,而是隸屬於第三種主機底下;第三種類型真正提供服務的中介主機,像是資料庫的負載平衡器、分散式檔案系統的管理器,可將背後大量的實體服務集叢化。

image

以MySQL舉例來說,上圖的(1)是運作Drupal的PHP伺服器,(2)是重複多個的Slave MySQL資料庫伺服器,而(3)則是統一管理這些資料庫伺服器的Master主要MySQL資料庫伺服器。圖片的架構參考自ㄚ忠的MySQL Replication(Master Slave負載平衡),我一直想做做看,可是目前並沒有這個機會。

另一方面,資料庫架構(schema)自動配置的功能目前並沒有統一。我也需要找一些方便來進行資料庫架構配置,像是Database version control這個。

如果這些架構都要以獨立主機來進行開發的話,虛擬化的負載肯定是很令人頭大。因為現今主流的KVM、VMware雖然號稱效能直逼實體主機,但老實說,一台普通的伺服器跑3、4個KVM,能順利運作就謝天謝地了。

800px-OpenVZ-logo

這邊我又再度提到我最喜歡的虛擬化技術OpenVZ。反正每個虛擬機器提供的服務都很單純,根本就不需要像KVM那樣包山包海,那以OpenVZ為基礎建設這些服務不就好了嗎?跟現在主流的KVM、VMware相比,限定運作Linux的OpenVZ檔案小又高效率,非常深得我心。我現在已經把很多應用系統打包成OpenVZ,方便讓實驗室成員輕易建置一個可以用的應用,這包括了DSpace-DLLL

然而IaaS最大的問題:網路,至今依然沒有很好的解法。我們沒有無限的IP可以使用,可是又想要建設大量的虛擬機器並同時提供服務,那就得要倚賴DHCP加上Port Forwarding。如果能夠搭配DNS的話,那就能做到DNS、DHCP與reverse proxy。不過我找到現在,還是沒看到DNS、DHCP與Reverse Proxy能夠完美搭配的組合。所以最近我想要自己來寫就是。


哎呀,我寫到這邊真是令人手癢,可是不行不行,我的本務好像不是在摸這個啊……

(more...)

從散步到跑步

布丁布丁吃布丁

從散步到跑步

Screenshot_2012-12-21-18-22-45

最近回到政大的時候,也想要試著養成每日運動的習慣。今天也是沿著景美溪河岸跑跑看,感覺還不錯。不過跟之前當兵相比,這種程度的跑步量還真是相差很多啊XD

這篇想要記錄一下我對於跑步這件事情的一些想法,純粹閒聊而已。


在山路散步

262671_1771953106347_3676212_n

在政大的期間,由於工作的地方是位於山腰上的百年樓、住的地方又是位於山頂的自強宿舍,所以大部分的時候我都是走路上下山。

政大有校內公車,車資1元,非常受學生歡迎。但是我覺得比起在公車上人擠人,我更喜歡像是烏龜一樣,一步一步地踏著傾斜的山路上山。

DSC_0305

我喜歡悠閒地在路上慢慢地晃著,偶爾抬頭看看天空、夕陽與晚霞,偶爾看看四周綠意盎然的山林,偶爾也可以沉浸於手上的手機、平板電腦或PSP(←不良示範)。

總覺得,這樣子在山路上散步,就已經算是一種運動了。可是在軍中,正常體位如我,徒手三千公尺跑步只是基本要求。

新訓的跑步訓練

剛入伍的時候要經過新兵訓練,簡稱新訓。新訓會格外要求各位阿兵哥的基本體能,對此進行嚴格的訓練。

我聽過許多人為了怕當兵時跑不了三千公尺,在入伍前就開始訓練。但是我進去之後才知道,軍中也不會要你馬上就跑三千公尺,而是從一千二百公尺左右的長度逐漸增長,最後才是跑完整的三千公尺。

嗯?一千兩百公尺大概有多長呢?比較一下今天跑步的地圖,我想一千兩百公尺大概就是從政大前門水平移動到蔣公銅像的後門這麼長吧。儘管政大因為是山路的關係,並沒有像是直接跑在平地那麼輕鬆,但是以前從前門到後門都要騎車的距離,居然新訓時就要做到了!

而且很遺憾的,因為種種誤會,直到我真正跟大家進行跑步訓練的時候,大家已經從兩千公尺起跳了。兩千公尺大概又有多長呢?差不多就跟我今天跑的距離一樣,從百年樓往後門跑、下景美溪河岸、一路跑到道南橋這樣的程度。

平常沒在跑步的我,第一次就跟大家帶隊跑步兩千公尺,實在是非常地吃力。帶隊跑步的意思是,一百二十幾人排成四路隊形,必須腳步劃一地進行跑步訓練。不光是跑步,我們也要藉由大聲喊出口號來維持隊形與統一步伐,以避免跑步時造成混亂、採到別人的腳步。

一邊跑步、一邊跟上大家的腳步、還要一邊喊口號,跑步結束之後走路緩衝的時候,我是直接被班長扶到救護車去休息,整個人完全撐不下去。

 

但是,那的的確確是個新奇的體驗

「加油!撐下去!」

老實說,雖然身體沒辦法完全地跟上大家的腳步,但是我不但不討厭帶隊跑步,反而覺得這是很有趣的一項活動。這麼多人跟你一起跑步,這大概也是只有當兵時才會經歷的體驗了。

新訓時並不特別強調速度,只要大家都能順利跑完,帶隊者也不會刻意刁難。跑個幾天之後,就算不運動如我也逐漸地能夠適應。甚至有種如果不是刻意要求速度的話,似乎不管跑多遠我都做得到的感覺。

更讓我覺得有趣的地方,是在於一起跑步的同袍們。

帶隊跑的用意不僅僅是管理方便,由於大家要彼此配合奔跑,有時候你會有種「被隊伍帶著跑」的感覺,而激勵自己跑得比原本的狀況還要好。

另一種情況不是「被隊伍帶著跑」,而是「在隊伍中往前跑」。儘管帶隊跑會要求隊形,但是跟不上的人終究也只能逐漸脫隊,此時後面的人就會在隊伍中慢慢地往前推進。那種超越別人的瞬間,也算是自己一個鼓勵。

不過,比起超越其他人,「加油,撐下去!」地鼓勵快要撐不下去的同袍是我更常作的事情。

 

我們要一起跨越終點線,加油!

下部隊之後的跑步訓練

新訓之後我又被分發到二階段訓。雖然那時候也是要求每天下午跑步,但是距離大概只有兩千公尺,與新訓時的三千公尺有相當大的差別。

那時候就開始有種不跑一下身體難以舒展的感覺,在跑完基本要求的兩千公尺之後,我偶爾也會自己再去多跑個一陣子。那時候也認識了幾位喜愛跑步的朋友,有人一起跑步、聊天,感覺也不錯。

儘管新訓與二階段訓對於體能要求都是照表抄課,但是下部隊之後的體能訓練,則是端看上面長官的重視程度。

我剛下去的時候剛好遇到體能鑒測,那時候也是下午要求統一集合帶操、跑步。之後的體測要求、聯隊對體能的重視等等,也都會引起一陣跑步訓練的風潮。

不過除此之外,大部分時候在路上跑步的人都是少數。平常工作已經很累了,下班之後更是不會想要訓練體能。因此下部隊之後,不僅帶隊跑的機會不多,種種業務工作纏身的情況下,下班之後要跑步也很困難。

觀賞不同的景色

有陣子,我幾乎覺得自己退回到跑不了三千的程度了。還好,跟我同辦公室的同梯,他是個喜歡運動的人──比起在辦公室工作來說更喜歡運動XD

有一次在他的推薦之下,我跟他一起沿著機場外圍的道路跑步。跟以前繞著固定道路跑個三四圈的情況不同,外圍道路道路寬敞、人車稀少,也不會有種一直在原地打轉的感覺。我們就是只跑一圈,但是是非常大的一圈,光這樣跑下來就已經快要四千公尺了。

我們並沒有刻意在意速度,一邊聊天一邊慢慢跑地跑完全程。

 

「比起跑固定的地方,」同梯他說,「我更喜歡在這邊跑步,可以一邊觀賞不同的景色。」

 

他說的這番話,讓我印象十分深刻。

即使在這個營區中服兵役已過半載,我卻還有許多地方尚未涉足。像是這外圍道路,要不是他找我來這跑步,我自己可能從來不會想要來這邊看看。

經他點醒之後,跑步對我來說,已經不只是一項單純的體能訓練,而包括了擴大視野的這層意義。

找尋政大的景色

退伍之後,我離開了平坦的營區,回到位於山上的政大校園。

我十分質疑自己是否能夠維持軍中跑步運動的習慣。畢竟在當兵時都是跑平地,很少會在傾斜的路上跑步。綜合學院旁操場的人又實在是太多,跑起來也不太順暢的感覺。而適逢寒流與東北季風,這季節台北雨天的日子比晴天還要多。別說在山路上跑步了,甚至是不想出門被雨淋呢。

 

有一次,終於天晴了。

我下定決心,試著走出百年樓跑跑看山路。不過才剛開始跑,就被藝文中心那邊新蓋好的水岸電梯吸引了過去。

DSC_0103

看到新玩意兒當然是先來參觀一下了,二話不說立馬跑過去坐個電梯下樓看看。

DSC_0107

透明外牆的水岸電梯上,可以看到景美溪河岸旁的水岸道路,平坦地綿延到前門。

 

這時候我忽然想起了同梯的話。

對喔,政大並不是只有山路跟操場,它還有像是景美溪河岸這樣的平路呢。

開始每一場冒險

unnamed

剛好,最近又發現到Google推出了Android APP「我的足跡」,可以越來記錄我每次跑步的過程。

Screenshot_2012-12-21-20-36-40

看著APP上寫著「開始記錄您的下一場冒險」,激起了我對於四處跑步的興趣。

今天下午我就開著它,從政大後門沿著景美溪河岸跑到了前門,並上傳到了我的Google地圖。這樣跑下來約2.19公里,花了16分鐘。以當兵時三千公尺要求15分鐘(因年紀而調整)的標準來說,這成績是完全拿不上檯面。但比起跑步訓練體能這件事情,四處觀看不同景色卻能給我帶來更多樂趣。

今天在跑步的時候,我發現景美溪對面似乎也是不錯的一條路線。每次跑步時都能開發出不同的路徑,未來又會有更多的冒險可以進行,真是令人期待啊。


結語:運動的樂趣

如果說當兵讓我學到最重要的東西,我想應該就是「運動的樂趣」吧。

流汗是一種舒爽的感覺、喘氣是一種活著的證明,而在挑戰體能的極限之餘,我又學到了從跑步中欣賞更多周圍景色的樂趣。對我來說,當兵是很有價值的一段經驗。

做運動是很有趣的,希望大家都能多多跑步、或至少散散步,欣賞一下週圍的景色吧。

本週的布丁通信,就到此為止囉。

(more...)