摘要:并不是因為它是閃亮的新事物或者它是一些虛構的最佳實踐,而是因為像亞馬遜或者已經在這上面投入了年的心血,他們告訴了我們如何構建真正有規模的系統。截止目前,我們已經部署了由亞馬遜等提供的重量級虛擬化服務器。
周一時候數人云與大家分享了一篇關于Docker的反方言論——《一份Docker的反方辯論——我還是用Heroku好了》,一周之后,同樣的作者,又為Docker正名,寫了一篇正方言論。Docker的未來在何處?且看下文分解——
之前我寫了一篇《It’s the Future》的文章,點評了容器生態系統,順帶嘲弄了下Docker、Google、CoreOS和一系列其他技術。許多Docker愛好者非常喜歡結尾那個玩笑,但是也有很多人喜歡那句“我告訴你們它們都是渣渣”。
不難理解為什么人們會認為容器生態系統是“渣渣”,尤其是從我上篇的角度來看。畢竟,匆忙的一瞥很難弄清楚Docker到底是什么。容器化有點像虛擬化,但是并不完全一樣。它有一個類似Chef的Dockerfile,但是是和一個和分層相關的文件系統結合的。它和AWS 、Heroku 、 VMware 和Vagrant一樣解決類似的問題,但是又有些不同。它有27個彼此有競爭關系的工具,很難說上來它們具體干嘛用,名字也都非常有意思——比如machine、 swarm 、 flannel 、 weave 、 etcd 、 rkt 、 kubernetes 、 compose 和 flocker等等。它一定程度上和新興的微服務有關聯,但是要去考慮如何讓單一服務首先跑起來又顯得很蠢。
如果仔細看過了Docker和容器,仍然認為它是渣渣,那么也可以理解——除非它不是。
好吧,它確實不是,它是我們搭建應用的未來。
為什么討厭它?許多看了《It’s the Future》的人覺得文章寫的非常準確,并沒有諷刺和夸張,然后質疑了容器這個事物,為什么呢?
Docker和其容器生態系統(之后簡稱“Docker”)正在改變應用開發世界的一些基礎,比如虛擬化、面向服務的架構和操作系統,然后把它們以不同的目標和優勢重新交付。但同時,也觸怒了開發者社區的一些人——守舊而討厭新事物的頑固派。
軟件行業可能與想象中不同,其實充滿了抵制進步的人們——就如同當米開朗琪羅完成了他的創作,那群走進西斯廷教堂的人們卻開始聲稱他們已經有了很好的上帝畫作,他們更喜歡天花板是純白的,米開朗琪羅的壁畫一點都不美好。
同時,大部分的軟件行業像高中學生一樣做著決策:他們著迷地搜索著他們小團體內更酷的東西,看看Instagram和 Facebook上都有什么,然后盲目地追隨著他們的引導者。這些技術形成了各自的派系,精心雕琢著各自的技術——甚至會在筆記本上貼上屬于他們的標志和顏色,并且排斥和抱怨他們陌生或者不同的技術。
而進入的那個世界的Docker——幾乎所有的工作方式都是新的。它拋棄了各種舊規則——包括操作系統、部署、運維、 封裝、防火墻、PaaS等等。一些開發者立刻愛上了它,有時候是因為它有效解決了一些問題,有時候是因為它是閃亮的玩具——讓他們在其他孩子玩到它之前顯得很酷。另一些開發者則討厭它,討厭它大肆的宣傳和炒作,認為它就和其他之前新出的技術一樣,并沒有什么不同,卻被人人談論著。
因此,很多人對于Docker的感受并不是源于技術本身。許多Docker的反感者并不是厭惡Docker在重要和復雜問題上的解決能力。如果他們沒有花足夠的時間去了解大規模系統的擴縮,絕大多數問題他們是沒法理解的。如果不是直觀且深入地了解過,那么關于Docker的很多選項和相關的工具都會看起來很奇怪很嚇人。
正在一統的世界Docker出現在兩個學科的結合點上——Web應用和分布式系統。對于過去的十年,我們在web社區很多時候都在假裝只要知道如何編程就可以搭建web應用。我們寫一些HTML、 JavaScript 、 Rails,然后我們就有了一個網頁。我們加一些窗口、處理程序和一個API,然后我們就完成了它。之后發布產品,就能夠吸引用戶,獲得收入,就改變這個世界了!
而同時,過去的二十年間,分布式系統的家伙一直在做一些相當無聊的東西。他們使用CORBA和SOAP這樣復雜的協議進行試驗,學會了如何處理像CAP定理這樣的問題,了解了時鐘同步是何等重要,認識到Two Generals Problem等主要理論。這些問題和解決方案對于只是想簡單地編程和交付應用的人來說,相當的乏味無聊。
但是之后有趣的事情發生了。Web應用變得非常大,開始變得規模化。很多人進入互聯網,web應用不能只在單一VPS上,或者只是垂直方向擴展。我們開始擴大它的規模,然后我們看到了應用中的各種bug,它們的名字很有趣:像“raceconditions”,“networkpartitions”,“ deadlock”和“Byzantine failures”等。這些問題是分布式系統的那些家伙搞了很久的問題,很多問題的解決方案不只是困難,理論上甚至是不可解的。
在擴展危機的早期,Heroku出來了。Heroku可以使我們很容易地在基礎設施水平層面上進行擴展,讓我們再一次假裝只做簡單web應用。于是那五年,我們花錢買的是自欺欺人的假裝。
我們現在走到了自欺欺人的邊界上,輕輕一腳邁了出來,我們在試圖建立早期的擴展性,重構破碎的事物,了解了單體應用架構的缺點以及為什么單一數據庫不能持續為我們工作。我們提出了一些概念,像不可變架構,“寵物還是放養”,微服務,以及一整套最佳和最差實踐來嘗試讓問題簡單化。
在這個轉變中,Docker入局,嘗試解決很多問題。但是與Heroku那樣告訴我們可以假裝擴展問題不存在、可以繼續按照過去的方式來行事不同,Docker告訴我們分布式系統是我們一直在做的基礎,我們需要接受它并在這個模型下工作。不再像過去的web框架、數據庫和操作系統那樣只處理簡單問題,我們現在使用Swarm、Weave、Kubernetes和etcd等工具,不再假裝一切都很簡單。實際上,我們不再是單純解決問題,而是深入了解我們正在解決的問題。
我們終于有能力構建可伸縮的架構而不是假裝它只是抽象事物了。現在我們需要了解什么是網絡分區并且如何處理它,如何在AP和CP系統中做出選擇,如何構建在現有網絡和機器的約束下仍然可以擴展的架構——有時在弗吉尼亞州發生一場風暴,有時會發生火災,有時鯊魚會咬斷海底電纜,有時會是一個延遲、一個交付失敗、機器死機或者抽象層有了裂縫,意外總是不時發生,不是嗎?
一切都渴望更有彈性、更可靠,作為開發應用的一部分這些都是需要考慮的。并不是因為它是閃亮的新事物、或者它是一些虛構的最佳實踐,而是因為像亞馬遜、Netflix或者Google已經在這上面投入了15年的心血,他們告訴了我們如何構建真正有規模的系統。
真正的問題解決者所以,Docker到底為我們解決了什么問題?我們為搭建web應用而做的每件事都是脆弱而混亂的,Docker正在讓它變得清晰而條理:
截止目前,我們已經部署機器(DevOps中的運維部分)和應用(開發部分)分離,甚至我們有兩個不同的團隊來管理這部分應用的堆棧。然而這很可笑,因為應用像依賴代碼一樣依賴著機器和OS,考慮把它們分開沒有意義。容器在開發者工具的幫助下可以統一管理OS和應用。
截止目前,我們一直在AWS上運行我們的面向服務的體系架構、Heroku、其他PaaS和IaaS,缺乏真正的工具來管理面向服務的架構,而Kubernetes和Swarm管理和編排了這些服務。
截止目前,我們已經使用整個操作系統來部署我們的應用。容器允許我們公開一個非常小的應用程序,只需要一些端口——小到一個靜態二進制。
截止目前,機器上線后我們一直通過使用“配置管理”工具或者在同一臺機器上重新部署應用來擺弄它們。由于容器是通過編排框架來實現規模擴縮,只需不變的鏡像來啟動,跑的機器不會被重復使用,消除了潛在的故障點。
截止目前,很大程度上我們一直在使用單個機器為單體應用設計的語言和框架。在這之前,Rail為面向服務架構設計的路線沒有真正存在過。現在Kubernetes和Compose允許我們在服務之上指定拓撲結構。
截止目前,我們已經部署了由亞馬遜等提供的重量級虛擬化服務器。然而我們不能說“我想要0.1個CPU,和200MB的內存”。我們已經浪費了很多虛擬化的開銷和超出應用所需的資源。而容器可以更少需求地進行部署,并且更好地進行共享。
截止目前,我們已經在多用戶操作系統上部署了應用和服務。多個用戶可以同時跑在Unix上,共享文件、數據庫、文件系統和服務。當我們搭建web服務時,它會與我們的工作完全不匹配。而容器可以保存簡單文件而不是整個操作系統,讓我們減少對于應用和服務的考慮。
要做的事情唯有改變我們的行業發展如此迅速,對于新技術狂熱崇拜并且不會等技術真正落地成熟。Docker正在以不可思議的速度發展著,這也意味著它還沒有接近穩定和成熟。對于容器運行時、鏡像格式、編排工具和主機OS,我們有很多選擇,每一個都有不同的使用水準、范圍、吸引力和社區的支持。
環顧我們的行業,在事物變得又老又無聊之前,它是不會穩定。舉個例子,在我們有REST之前,有多少協議不得不消亡。我們踩在SOAP和CORBA的尸體之上通過經驗和教訓建立了REST 、AJAX和JSON。這是過去十年最主要的兩個技術轉折點。然而我們基于API的REST工具還沒有達到十年前我們為SOAP所做的水平,特別是SOAP尚未完全死亡。
我們都知道Docker還沒有成熟,在嘗試它的時候仍有許多邊界情況和缺陷。問題的浮沉之間,我們一次又一次思考解決的辦法,不斷嘗試不斷失敗,直到探索出最佳實踐的方法。可能幾年以后我們再回顧這段經歷,會發現很多決策上的錯誤或者失敗,但是這就是探索的意義,進步的代價。
或許會花費很多年的時間,了解了它全部的特性,Docker才會真正穩定下來。但是這并不意味著容器是無稽之談。我們總是面對著選擇,是選擇我們已經深刻了解的技術還是嘗試一些新的事物?答案很清楚,只有不斷地學習和適應技術的迭代,才能帶來我們行業的進步和提升。
如果你在尋找我,那么向前看,我就在未來。
(文章轉自:CircleCI blog)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26708.html
摘要:那都是老一套了。已死已經沒有人用了。現在所有的一切都在容器化,它是未來。這是確保它可靠的唯一方式。我現在需要一個是的,為了穩定性。我猜是規模的對,沒錯。我明白了,好吧,我懂了。那我來重復一遍確保我領悟了這些。 這是一篇在國外社區非常火的文章。由CircleCI創始人所寫,追逐熱點新技術的程序員與只想做個簡單web應用的程序員對話,Docker到底能否解決簡單小應用的問題嗎?Herok...
摘要:作為一項在云中部署應用和服務的新技術已成為當下最新的熱門話題。曾熱衷于促進的綜合軟件棧,說該公司對于微服務架構有著很好的定位。 Microservices作為一項在云中部署應用和服務的新技術已成為當下最新的熱門話題。但大部分圍繞microservices的爭論都集中在容器或其他技術是否能很好的實施微服務,而紅帽說API應該是重點。 企業和服務提供商正在尋找更好的方法將應用程序部署在云環...
摘要:如果使用區塊鏈技術則可以降低使用版權的門檻。價值化,藝人利益得到保證高曉松在談到區塊鏈時,也贊成藝人發行來跳過娛樂公司。通過區塊鏈技術藝人可以更加貼合粉絲,創造出更高效的內容推薦和特色化的消費產品與服務體驗。 2019年1月3日,高曉松的《曉說》在朋友圈刷屏了。 這次高曉松沒有談風花雪月、詩與遠方,而是在其母校清華大學的教室里,跟學弟學妹們深入淺出地聊起了區塊鏈在文娛產業的革命。 在傳...
摘要:如果使用區塊鏈技術則可以降低使用版權的門檻。價值化,藝人利益得到保證高曉松在談到區塊鏈時,也贊成藝人發行來跳過娛樂公司。通過區塊鏈技術藝人可以更加貼合粉絲,創造出更高效的內容推薦和特色化的消費產品與服務體驗。 2019年1月3日,高曉松的《曉說》在朋友圈刷屏了。 這次高曉松沒有談風花雪月、詩與遠方,而是在其母校清華大學的教室里,跟學弟學妹們深入淺出地聊起了區塊鏈在文娛產業的革命。 在傳...
摘要:和名聲大噪的云計算相比,剛剛嶄露頭角的霧計算可謂是新生代。在霧計算技術被大規模應用后,通信網絡將實現完全智能化,計算服務將進入新時代。如果說云計算是現在時,那么霧計算就是將來時。當手機提示存儲空間已滿時,你可以選擇把圖片上傳至云端來節省空間;企業無需購置大量實體設備,可選擇購買服務的方式,和其他機構一道共享云平臺的強大計算能力……如今,在日常的生活和工作中,幾乎隨處可見云計算的蹤影。和名聲大...
閱讀 1370·2021-11-25 09:43
閱讀 3582·2021-11-10 11:48
閱讀 5091·2021-09-23 11:21
閱讀 1597·2019-08-30 15:55
閱讀 3508·2019-08-30 13:53
閱讀 1235·2019-08-30 10:51
閱讀 868·2019-08-29 14:20
閱讀 1972·2019-08-29 13:11