Pages

搜尋此網誌

2014年7月12日 星期六

JSDC 華山論壇心得: 一場 upgrade 之旅

JSDC 華山論壇心得: 一場 upgrade 之旅

前言

程式開發就像是一個功夫學習,你可以自學,拜 google 大神,在程式開發的路上,靠自己的努力一步一步朝向大師之路

另一方面,你可以拜師學藝,當然不像古代需要遠度重洋,拔山涉水,與一個有經驗的前輩一起工作學習就是一個很實際的作法。

enter image description here

筆者的經驗,大二才開始接觸程式開發,靠著上了一門 java 程式設計,那是我第一個老師,讓我開始接觸程式開發,啟蒙了我的程式開發之路;剛開始學習時,最主要的學習對象就是學長姊留下來,讓我們繼續發展的系統,對剛學習寫程式的我來說,真的一個很複雜的程式結構,不過因為什麼都不懂,也只能邊看邊學,畢竟半路出家,有些基礎知識還不是很清楚…

因緣際會下,我遇到我的第二位老師,雖說是老師,他其實是我的同學,年紀也比我小,但從國中就開始學習程式開發,在與他工作的過程中,每每他所提出的技術還有程式開發技巧都讓我覺得很值得學習,也都是當下技術或工具的一時之選,也在那時候我從 window 改為使用 ubuntu,那時,ubuntu 還是 8.04 的年代。

程式開發真的是一門藝術工藝,除了努力,有時候也需要天份,但有機會遇到一個好的老師,更可以讓你功力大增,試想,有機會跟經驗比你多的先進學習,可以讓你少走多少冤妄路,就像 「學徒模式:優秀軟體開發者的養成之路」這本書中所說的其中之一:向大師學習,是你專業領域知識躍升的關鍵。

緣由

這次有機會參加 JSDC 所舉辦的 華山論劍 - 程式,架構,開發論壇,該活動請到愛情公寓的研發總監毫不保留地把愛情公寓的高效能架構分享出來,聆聽大師的分享,也著實讓我覺得功力大增。

試想程式開發者要做到同大陸或是世界規模,是有多少其中的佼佼者願意分享其實務上的經驗,對我而言花個幾千塊可以聽到關於大規模的系統架構設計,是多麼的便宜!正所謂時間就是金錢,花時間不停的 try error 才能讓系統達到穩定,並且可以乘載大量使用者的系統架構,只要幾個小時的時間,就可以讓你知道大方向。

雖然很多實作細節很難在短時間了解清楚,不過,有了方向,並且有人驗證過,且實際在線上的架構,就讓你省去程式架構中,摸索以及不安的過程,這就是經驗的傳承,站在巨人的肩膀上。

第二位講者,說明了整個雲端的發展到到一個 service 構成的結構層層分解,讓筆者對與基礎知識更進一步的驗證,甚至也開了另外一道門,在目前雲端服務多元的情狀下,有更多元屬於 ap 內各層負責的任務也可透過雲端的幫忙,減少開發者的麻煩,比如論壇中提到的 DDoS protection cloud service,都是難得的分享。

在此將與大家分享當天的心得,期望與大家共享在巨人的肩膀上所看到的風景。

其一: 高效能架構的外功

enter image description here

這次參加華山論壇,總算一窺世界級的程式架構,不管是在部屬方式,各種資料儲存方式的使用方式,架構一個同時在線人數龐大的系統服務,任何存取都需斤斤計較,善用記憶體儲存、no sql、RMDBS,在一個大型的架構下,已經不是用單一資料儲存的 solution 可以處理,透過這次的論壇,對於使用實機有個概念,相信在往後工作上,心中也有一定的概念,不致於誤用造成慘劇!

在部屬與平行擴展各個 server AP 溝通部分,雖然筆者強項不是使用 php,這次論壇主要是以 php 的觀點來進行技術架構說明,但並非沒有價值!其實,程式開發久了,就會從「見山是山,變為見山不是山」,含意是最根本的事,其形可以在自己熟悉的領域再行摸索。

比如,這次關於部屬架構部分,在程式間的溝通上,單一 worker 的內部溝通,及 AP 內的 workers 的溝通,最後還有各 AP 間的溝通,從微而宏觀每個面相都有其合適的方式,透過講者的分享,也在在讓我對於應用情境豁然開朗。

從變數、AP 的 share memory、到 AP 間透過 MQ 機制的處理,雖然也是大概知道使用時機與方向,但正所謂「師父引進門,修行看個人」,其中的細節,應該也只有等到實際的運用尚能體會,不過,至少其意已了然與胸!

對於 PHPER 強烈推薦去了解一下大師所介紹的 open resty,Lua shared memory 的使用,就像神兵利器,當代的一時之選!

其二: 層層堆疊的內功

enter image description here

聽完了高效能架構分享,尚需時間消化之時,第二位講者給了我們建構一個完整的系統服務,所包含的各個 layer,在資訊相關的產業待久了,多少有些概念,卻很難有個整體的了解,往往我們只會注重於單一 server AP 的運作,同樣也很少了解到多個 AP 平行擴展的結構,還有整個雲端發展的始源與概觀。

在筆者開始學習之際,往往聽到架構的說明,總會一知半解,因為尚未行經相關的 layer 很難體會使用時機,每層堆疊的架構,都有其適合處理的事情,比如安全性層,資料層等,透過講者的說明,讓我對於程式的架構又有更清晰的了解。

你以為你真的懂 AP 的程式運作!?有時候心中還是有點不確定是否真的了解,需要經由一在驗證想法,將資料內化為知識,之後你才算真的擁有,在往後的開發過程中,隨著開發的專案越來越複雜,在你心中就會有一把尺,該是在適當時機使用相關的技術的時候了!

內化

程式開發的慢慢的長路,你可以孤芳自賞,獨孤求敗,也可以尋一明師相互學習,都是你我可以決定的,其實不只是程式,在各種不同的專業領域也是同樣的道理,虛心求教,才能滿載而歸。

能有人給你一些指點,幫助你更快達到不同的境界是幸福的!但是別忘了,「師父引進門,修行看個人」能否有所造化就看個人修為。

懷抱著熱情,心無旁騖的 happy codeing 是幸福的~祝福大家都可以找到心中的 code canaan(所嚮往之地)。感謝一路上成就我的所有老師的分享!心若有餘力之際,禀持分享的精神,若有機會,能成為別人的肩膀,雖然還不算巨人,將會是我的榮幸!

最後感謝 JSDC 開此先例,舉辦一個如此不一樣的論壇,使我獲益良多!

張貼留言