《這不是我想要的Serverless》要點:
本文介紹了這不是我想要的Serverless,希望對您有用。如果有疑問,可以聯系我們。
最近,我們在Container Solution平臺上探討了serverless的適用面,更重要的是,我們討論了它可能的走向.之前玩過Lambda,我發現討論遠比實際執行更加有趣,因為它始于我們想要的以及我們所得到的.
我拒絕接受由供應商執掌“serverless”發展軌跡的現狀,大家需要一個標準.我有一個目標,一個基于個人想法的目標.最后一個純粹出于個人嗜好,接受它或是提出你的建議.
在AWS推出Lambda時,我認為這將會造成業界的興奮以及許多情況下的困惑.我不太確定是否每個人都能理解它是如何工作的以及這是否會為大家帶來幫助.此后,Lambda證明了它是一款非常酷的工具,毫無疑問它能夠削減運維的開銷.它同樣助長了我們正在經歷的serverless熱潮.
坦白說,我個人并不喜歡AWS,Azure和GCE對于serverless的描述.我喜歡這些供應商,我認為它們的平臺是令人嘆為觀止的,但我是一個發自內心的純粹主義者.我認為要落實serverless,必須為其開發一個開放標準.
我也認為這些供應商正在尋求能夠滿足顧客需求的最廉價的解決方案.但這通常并不會成為最佳解決方案.
開發標準會拉近大家距離,讓大家說同樣的術語,使工具更具兼容性,這一切完全說得通.
當前的FaaS(Function as a Service)根本沒有做到這些.它們都在其生態中提供了框架,你只需要在此完成工作.
我們需要一個開放標準,但是它應該是怎樣的呢?好吧,首先,我們需要建立關于其如何工作的基本準則.
在現有的產品中,上述內容得不到任何保證.我需要想象一個擁有上述一切的世界.
因此我需要從未來借調一些內容,并且在最后我會帶大家回到過去.
容器是我們將會在Serverless系統中嘗試,并用以實現安全性和速度的技術.當我們談及容器,大多數人馬上就會想到Docker.Docker其實并不能很好地適配Serverless功能,它慢、臃腫且需要一個守護進程.這并不是在挖苦Docker,但他確實并不算是Serverless的一個好選擇.畢竟我們需要一把外科手術刀,而Docker是一把瑞士軍刀.Docker和Rkt均非容器,它們只是用來促進容器化的工具罷了.
這并不意味著我們無法開發一個工具以使我們的工具容器化,使之得以在數毫秒內啟動,并使所有的功能遵循相同的隔離.
或許unikernel才是答案,而非容器,或許僅需一臺經過調整的Linux服務器,使其高效地隔離每個進程,不賦予它們文件訪問權,僅允許向外的TCP連接.
在這個議題上,我想我會讓我的同事不厭其煩,但是至少就使用標準輸入和輸出而言,我成為了一名堅定的信徒.自使用諸如AWS KCL之類的工具之初,我便震驚了,它們提供了一個守護進程,并使用其包裝你的進程,如此你便可以在任意語言中提取Kinesis消息了.我便在Lambda上使用NodeJS的包裝器包裝了我的第一個Go程序.我們可以用不同的語言,使用不同的協議進行通訊,但是STDIN/STDOUT則是普適的.
Serverless方法的理念就是生成、執行和銷毀,對我而言,這是一種獲取數據的好規范.
如果你深究云供應商的FaaS實現,你會發現它們僅提供2個變量.其一是“event”,它們不關心內部有什么.其二便是“context”,它將請求置于上下文中.與可執行程序中通過STDIN發送標記和環境變量相比,這并沒有什么不同.
考慮更加簡單的STDIN/STDOUT確實給了我們很大的自由.它允許我們的方法是語言無關的,并且通過Linux強大的管道命令,我們便可構建非常健壯的功能鏈了.
JSON看起來像是一個事實上的標準,使大家回到通信,但是在云的世界里,我認為需要更進一步.且在道別前花點時間.
當前市場中,我認為存在2種相對理想的格式,Cap’n Proto和Protobuf.前者允許快速傳送大量數據,后者則允許向現存載荷拼接數據.從目前來看,我無法確定哪一個才是更加理想的選擇,抑或是可能會出現更加優秀的方案.但有一點我很清楚,如果我們建立了進程間共享數據的標準,那么完全可以在之后構建可替換的部分(標準).
我并不認為我們當前擁有的“Serverless”基礎設施,就是我們想要的供應商無關的那種.盡管我們擁有能夠很好工作的工具,但是它們僅為服務提供商的利益而工作,這完全能夠理解,然而常止于進一步的開發工作無法為它們帶來利潤時.是時候開始考慮一個開放的框架了,這使我們能夠開發強大而開放的工具.如果我們可以開發一個符合開放標準的平臺,那么第三方服務就可以圍繞我們的標準開發工具.標準開發的目的并不在于鎖定供應商或為迎合你的最高消費顧客.
這是一個正在進行中的思想性項目,我期望收到建議.下一篇文章和一個假想的系統相關,它能夠實現理想的serverless生態系統.
文章來自:DockOne社區-孫科(譯)
原文鏈接:http://container-solutions.com/not-serverless-ordered/