使用 Workflow Engine 來實作 Microservices SAGA pattern

最近離開了領英,比較有空閒讀讀書,想想到底之前在實作上出了那些的問題,跟要怎麼處理這些問題。 先推薦兩本書 SOA Patterns 和 Microservices Patterns ,這兩本書都有提到怎麼在微服務下處理 transaction 的方式,兩本書的方法都是 SAGA pattern + CQRS + idempotent 。 但是如果你有實作過 SAGA Pattern 的話,就會知道使用 Message Driven 的方式在兩個微服務間溝通的話,整個程式碼的可讀性會非常的低,除了原先溝通並實做細節的兩位工程師外,大概不會有第三個人能夠理解整個交易是怎麼完成的。 註:本文圖片取自 https://microservices.io/patterns/data/saga.html 在實作細節上,使用MDA的架構,微服務要提供sync & async API使用,是額外的成本,在領英,所有的微服務預設都是只有提供 sync API 的,你要請對方多開一個 async 的界面,是要求爺爺告奶奶的。 因此,在技術上管理上比較可行的,就是把流程的管理都拉到自己管理的微服務當中,在裡面使用 orchestrator 來管理對外乎叫的狀態記錄處理跟錯誤重送。 當然,這又免不了要寫一大堆 glue code 把所有的東西黏在一起,然後在資料褲裡面又要開一堆的 Table 來記錄運行的狀況,這非常的花功夫,在實作上很花時間又不好進行修改沒有彈性。 今天早上看到 InfoQ 的一則新聞 Experiences Moving from Microservices to Workflows at Jet.com […]

大公司裡面的技術債是怎麼來的?

大公司裡面的技術債是怎麼來的? 就像一個房間一樣,有一個角落積了一些灰塵需要打掃,主動跟主管說要打掃,主管會問你,打掃這個跟其他的事比起來重要嗎?我們先來測量一下這角落有多髒,打掃完有什麼效果,然後再來跟其他的工作事項比比看優先權該放在多高。 當然結論是不重要不需要掃,然後下次換另外一個角落髒了,再來測量一次再來排一次優先權,然後放棄打掃。 以上過程重複數次之後,主管大叫,這房間怎麼這麼髒,我們來制定打掃計劃,把過去的角落清潔計劃全部翻出來更新一次,再來全部重排一次優先權,做個環境整潔總檢討計劃。 然後大老闆跑出來說,你這房間在的髒亂,來跟整棟大樓的整潔比比看髒亂的程度,再來排個優先權,然後我們晚點再開會討論看看要不要納入明年的工作項目。

為什麼我不用 Google 搜尋

還在用 Google 嗎,該轉用 Bing/duckduckgo 了 希拉蕊的郵電門是美國 2016 年的選舉大新聞,理當也是熱門關鍵字,至少跟據 Google 自己的統計, email 是比 emoji 熱度高出十倍,但是 Google 的推薦選項,卻捨去熱門的關鍵字而選了冷門的 emoji 你跟我說 Google 沒有政治偏好,我說你腦袋壞掉   NOTE: 平衡報導一下,連結是谷歌的回應說法,不過我是不清楚 email 算是什麼骯髒的字眼就是了 https://www.fengli.com/news/23211879.html

Grooveshark shuts down after years of legal troubles

舊文重貼,原文寫於 2015/04 事後的發展是,Grooveshark的 co-founder 於 2015/07/19 自殺,只能說 startup 歹路難行,不要挑錯了產業,又投入了十年的青春導致無法自拔退出。 Music streaming service Grooveshark shuts down after years of legal troubles 我在同類型的公司工作過幾年,老實講,Grooveshark 走到這一步,不意外。比較意外的是他能撐這麼久,三年前他們 CEO 就情緒崩潰過一次 ,沒想到還能再多撐個三年。 Grooveshark 成立於 2006 年,當時的市場環境已經跟 Napster 成立的 1999 大不相同,自從 DMCA 數位千喜年法案通過之後,音樂服務已經有不少都走向付售權費合法化的路上,只有 Grooveshark 一家走不同的路。 Grooveshark 是群大學生一起做的,所以大家自己省一省,不用跟 VC 要錢,就可以開業。 也許是一開始走的太順,所以他們就想要這麼一直走下去,不去跟音樂公司談授權問題。 當然這樣造就的結果是,每次他們一要談下一筆增資案,律師信馬上就來,增資的錢跟本就是花在律師費上面。 我常常在想,Grooveshark能活這麼久,說不定是五大音樂公司故意的,反正把 GS 搞倒了也沒用,還會有下一家跳出來做,還不如讓 GS 吃不飽餓不死撐在那邊,擋住潛在中想做非法音樂這塊的人,同時也警告這些人,你做非法音樂是沒錢賺的。 最終搞倒 GS 的,我想除了是創業團隊已經累了之外,另外就是美國工程師行情太好,小本經營的 GS 請不起人了 1 http://mashable.com/2013/04/22/grooveshark-radio/ […]

極權主義與環保主張

做個筆記一下,暫時還沒有動力把想法全寫下來。 最近讀到許多東西,與在加州這個極左的地方生活經驗結合起來,才理解到環保主張跟極權主義是分不開的,甚至是反過來說「環保主張」只是「推行極權主義的工具」,為了推銷極權主義才打著環保的旗子,跟環不環保跟本無關。 以最近的「禁用塑膠吸管」來說,因為禁用塑膠吸管後,造成珍珠奶茶的飲用問題,因為替代的紙吸管強度不夠,喝幾口就破了,所以又開發了不鏽鋼吸管來替代,當然不鏽鋼吸管的問題又更多了。 其實,如果「環保主張」、「塑膠吸管對環境有害」真的是那麼被大眾所接受的話,那麼就兩種吸管都提供就好啦,不用禁用塑膠吸管,需要用到塑膠吸管的地方,大眾自然會選用塑膠吸管,當可以使用較環保的方案時,大眾自然會選用環保的方案。 唯一的問題,就是需要時間去推廣「塑膠吸管不環保,而且有替代方案」的觀念,這樣子把環保觀念深化到大眾人身上,雖然時間會拉的較長,但是影響會更深遠,等未來有其他議題時,民眾會更容易接受。 然而環保主義者,確選擇了不相信人性,用大政府的力量去全面禁止使用塑膠吸管,不管某些場合上無法使用替代方案,選擇走了極權的方向,讓我對「環保主張只是推行極權主義的工具」這件事又多了一點認同。

參觀小學

昨天去參觀矽谷本地一間精英小學 Nueva,稱著記憶還在,做個流水帳紀錄,一些個人想法,請大家不要太認真的 🙂 這間有五十年歷史的學校,坐落舊金山南邊的山上,風景優美,從校舍往外看,就可以看到海灣及對面的高山,佔地三十二公頃給八百個學生用,有巨大的活動空間給學生使用。 還沒開到學校,才要準備轉彎進學校停車場,就感到壓力了,在我前面的三台車是 QX60, GLK, Maserati Quattroporte 。 進到學校,先是聽到小學高年級跟中學的學生,在中庭唱歌劇給來賓的家長聽,這年頭學生比較瘋街舞,很少有學生能欣賞精致藝術,只能講學生程度真的不一樣。 為什麼這間小學被稱為精英學校呢?因為入學要考智力測驗,只取智力最前面2%的人口,而且跟大部份的美國精英學校一樣,入學只看智力測驗不看財力,智力測驗通過了之後,如果家長付擔不起學費,就由學校的獎助學金幫忙出了…. 因為我自己念建中苦苦追趕的經驗,所以我知道智力這種事是強逼不來的,去年女兒四歲剛來美國兩年,自己的小孩當然都覺得很棒,但是老實講跟同輩比沒什麼太突出的,但是今年提早一年上小學,在班上程度開始大殺四方,英文也突然變得很溜,雖然還不識字,但是已經開始開竅了,至少她爸我五歲時沒她強,所以今年想來幫她測測智商看看她的資賦如何。 學校行政人員講完辦學理念之後,就把家長分成三組,把家長帶到教室去上課了,精英學校不愧是了解到天材的問題,學校課程之一就是「社會情緒學習」,教導學生怎麼管理情緒、怎麼樣面對衝突、以及怎麼創造雙贏。在這種怪物學校,每個學生在程度上的差異可以到很驚人的,因此情緒管理、調解壓力是很重要的一樣課題。 第二個課程,則是把設計公司 IDEO 的產品開發流程,用實作的方式,讓小朋友去理解需求及設計解決方案,第三個課程,則是寫作課程,把一些最新的英語語言的研究成果,當成課程教給小孩。主要是講,英語的發音規則短短幾頁而以,但是例外規則到是不少,過去的教學是教小朋友硬背,但是新的研究則是說,單字的念法不是看發音規則,發音是跟單字的語意也有關,語意加上發音才可以正確的理解英文單字的念法。 第二、三個課程其實沒什麼,就是把一些新的研究成果,把小孩子當實驗品來研究而已;但是最特別的是老師自己的態度,這間學校的老師都四五十歲年紀一把了,還是一直在進修,把教學當成研究實驗在看,這種求知欲及態度,把每個學生都當個體來教導,才是這間學校最珍貴的一點。 接下來又是一整群人回到大禮堂,學校請來四位家長以及一位高三的學生,講他們自己的經驗,有趣的是,有三個家長都說自己小孩在幼稚園有融入群體的問題,自己一個人在角落挖沙,直到同事提點才知道小朋友的問題,換到這間學校,小朋友就適應正常了。 在社交上面,女兒不像他爸,沒有什麼問題社交問題,比較特別的是,女兒除了早上爬不起來外,她其實很喜歡上學,才上小學不到兩個月,就跟我說小學課程比幼稚園有趣太多的,這麼愛上學,爸爸自然會想操她一下。 這間學校除了上述的三個課程及古典樂外,最特別的就是會花一整年學習一個學程,像是小三還是小二,會花一整年學習古埃及歷史(為什麼是古埃及,因為這年紀的小朋友喜歡古埃及),一整年學習科學史,一整年學一個第二外國語,每一年換一個學科,花一整年的時間深入去學習某一個學科,而不是只是沾沾醬油而已。 在參訪的過程中,有稍為跟其他家長聊聊還有看那些學校,對方是個印度裔第二代,他說還有看用中文教學的中美學校(美國人現在好像很迷中文),跟我女兒念的那一間學校,他問我有什麼差別,我跟他說我女兒的學校不錯,但是這一間是到不同層次上去了,我女兒的學校是教醫生教工程師,教的是生活的規律自律,這間學校是教思想家了。 零零雜雜寫了一堆,其實爸爸對女兒,期望是有,但是沒有給她太多的壓力,控制我自己不要揠苗助長就好,許多事情是我在旁扶她一把,至於未來成就如何,我的期望很低的,只要養得活自己就好

貧富差距

原文寫於 2017/09/29 最近才體會到,貧富差距問題,是左派創造出來的假問題,早點看穿對你的人生越有幫助 econtalk是美國的一個 podcast,主持人是個右派經濟學家,常常邀請不同的經濟學家來講一小時,某一期請到的是法國籍在美國柏克來任教的 經濟學家,談美國的貧富差距。 跟據作者的研究結果,過去 35 年來,經濟成長率的分配很不平均,跟據 勞保的資料,後 20% 收入的人,經過通澎的調整後,這 35 年來收入完 全沒有成長,反過來說,整體的成長率是 1.4% YOY ,而前面 1% 收入的 ,成長率則是 3% YOY 超過 GDP 的成長率。 然後如果算進貧戶補助,後 20% 的人,在 35 年間,收入只增加 20% (0.5% YOY) ,仍是不比前面的。 所以法國經濟學家得出美國貧富不均的答案。 但是,最近有一個更權威的研究結果出來,用不同的角度來研究貧富問題,這個研究是追縱 1987 年起,35-40歲的人,在 20 年間的所得變化,跟據研究結果,所得最低的 20% 在 20 年後,中位數的所得增加了 100% ,次20%的增加了 42%,再次 20% 的增加了 27%,所得越低的增加越多,所以美國仍是還有很多機會的。 其實這兩個研究,反應了左派跟右派的看法不同,左派只在乎結果的均等,所以,只看所得級距的變化,不去看其中有多少人脫貧又有多少人掉入貧戶。至於說為什麼貧戶所得變化跟 CPI 一樣,答案很簡單,因為這群人是不工作領社會補助的或領基本薪資的,這兩者都是跟 CPI […]

保守主義跟進步主義之爭

最近看了 Jordan Peterson 的書才知道,保守主義跟進步主義爭的是什麼。 進步主義是反對傳統的教條,認為人的理性可以超脫舊制度,提供更好的解決方式,要用理性去抽解去分化問題,透過科學的方法,打破再重造這個社會。 保守主義則是認為,既有的規則都是有其成因的,而其因果關係早隨著時間的流逝而被遺忘掉,留下的只剩下一條條教條而已。因為教條的成因早被遺忘,所以進步主義所做的重頭思考問題的解決方案根本是不可能的,人世間的問題太複雜變數太多,不可能什麼都要革命性的重頭再造。 兩者間目前最大的衝突就在於「家庭在社會上扮演的角色」,進步主義淡化家庭的重要性,冀望政府扮演個人救助體系的角色。用最極段的例子來說,當未成年子女跟父母在意見上有所不同時,政府會站在未成年子女這一邊,必要時會剝脫父母的權力。 保守主義則是認為,家庭是數十萬年來人類演化出的社會體系的基本構成,社會的進步不能躁進,只能在既有的架構上逐步做修改。 也因此大學裡會是左派盛行,因為打破既有觀念,重新建立思想體系,是科學的根本,大學的本質就是在提供不同的思維模式。 然而實際承擔責任的個人,在家庭裡在職場上,就沒有那麼多革命的本錢了,在真實社會中革命可是要死很多很多人的。進步主義在這幾年,可是想把家庭的地位整個拔掉的,這個潘朵拉盒子打開,沒有人知道會發生什麼事,所以保守主義一直在反對進步主義的躁進。 寫到這裡,總算知道為什麼我會從進步主義一路走到保守主義,必竟一路上看得太多,了解到人的智力、時間有限,不可能收集齊全一個問題的所有層面,進而提出解決方案。許多時候,我們能夠做到比昨天好一點就夠了。 知乎看來的網路故事,某銀行用的密碼產生器裡面有一行 sleep 1ms 的程式碼。 接手維護的人,因為銀行業務一路從地區小銀行變成全國性的銀行,系統碰上瓶頸,一路追到這一行來,想不通為什麼要這麼做,於是把這一行拿掉,把系統的效能增加了數百倍。 沒想到過了幾個月後,發現有許多客戶的帳號被入侵,問題是什麼呢?問題是 Linux 的 random generator 的最小維度是 ms ,在同微秒內跟 Linux 要亂數,要回來的亂數是有規則的。 沒有文件的老系統,還是不要亂碰為妙。 電腦領域這麼 “小” 的領域都會發生這種問題了,更複雜的社會體系的互動就更複雜了。不是說不能革命,只是絕大多數人都沒智力跟見識來推動革命,但是政府往往會把過大的權力給這些革命家進行社會研究….

下個十年

十一二年前,我第一次接觸到 Lucene 這個文字搜索的軟體,接下來十年的工作,就都是這邊起的頭,先是幫 Verizon 做了搜尋的入口網站,後來自己花了兩年,做了兩個實驗性質的產品,把 Lucene 搬到 AWS 上面,算是幫自己入了雲端產業;接著因為這樣,被飛向找去做底層的雲端化,先是把軟體變成可以橫向擴充,並且把整個開發環境用 Opsworks / Chef 實現,接著飛向被領英買去,花了兩年的時間,總算在領英裡面推動出來一個新的 enterprise integration pattern ,實做出來一個未來能讓後人遵循的 B2B data ingestion 標準。 不過屈指一數,我的技術大約就停留在五年前的水準,最近又因為一些公司行政上的事情,把我自己心情弄的很毛躁。 無意間看到兩個分享,一個講的是,不能改變的事情就別花心力在上面了,別讓這些事情影響到你,領英這種上萬人的公司,行政上本來就是沒救了,有些公司死的慢,像是 IBM ,有些公司像 Yahoo ,二十年就走完了興衰,許多事不是一兩個底層員工可以改變的。 第二個分享就是這個影片了, AI 這幾年發展下來,可以預見的是,在可見的五到十年的未來中, Level 3~4 的自動駕駛,是會對人類影響最大的,而且也是最快會被實做出來的。 至於怎麼實現出來 geohot 給了一個不同的看法,他認為現在的車商,在產品完成後,因為法律免責條文的種種限制,還要花許多的時間才能上線,所以走自由軟體路線,讓使用者自行安裝軟硬體,可以加快產品上線的時程。 人到中年,還是有一點點的夢想,所以接下來的半年,我會弄台 Honda Pilot 然後開始自幹自動架駛汽車… tensorflow, image recognition, map routing, etc… 都是沒玩過的,但是又是我一直很想入門的汽車產業,這些,應該夠我玩個十年吧… https://www.youtube.com/watch?v=aqdYbwY9vPU