Web開發(fā)這十年 二維碼
666
發(fā)表時間:2018-01-02 21:23 Web 開發(fā)這十年都發(fā)生了怎樣的變化?來看看 Ivan Zarea 總結(jié)的 Web 開發(fā)這十年。以下內(nèi)容摘譯自作者的博客,查 親愛的朋友們,希望你們喜歡我們現(xiàn)在的這個新世界。相比 2007 年,它已經(jīng)發(fā)生了翻天覆地的變化。很高興看到大家仍然喜歡電腦。我們現(xiàn)在擁有的電腦比十年前多得多,同時這也帶來了新的挑戰(zhàn)。可穿戴設(shè)備、口袋設(shè)備、家具智能設(shè)備、自動駕駛汽車,它們都是計算機。我們還教會程序玩各種游戲,并打敗了人類。當然,或許也只有喝酒這件事是電腦無法與人類匹敵的。 Web 應(yīng)用 蘋果之所以能夠成為最大、最富有的科技公司,多半是因為 iPhone 和它的操作系統(tǒng) iOS。谷歌也有與之相匹敵的操作系統(tǒng)——安卓,微軟也曾試圖通過 Windows Phone 分得一杯羹,但沒能成功。 2008 年發(fā)布的 iPhone 3GS 和 2017 年發(fā)布的 iPhone X 我們開始管程序叫 App,有些網(wǎng)站稱自己為 Web App。2008 年,谷歌發(fā)布了 Chrome 瀏覽器。9 年之后,Chrome 成為***的瀏覽器之一。 Chrome 團隊花了很多精力在 JavaScript 上,Web App 使用了大量的 JavaScript 代碼。 其他很多公司也在 JavaScript 上投入了大量精力,現(xiàn)在它可以支持類和模塊。一些語言可以被編譯成 JavaScript,如 TypeScript(來自微軟)或 Flow。 現(xiàn)如今,我們更多地使用 JavaScript,因為很少人用 Flash 了。我們甚至在服務(wù)器端使用 JavaScript 替代了 Perl,這個東西叫 Node。 響應(yīng)式設(shè)計 還記得 Swing、SWT 以及 wxWidget 這些東西嗎?我們在瀏覽器上重新發(fā)明了它們,于是出現(xiàn)了一些新的 UI 編程模型,它們主要集中在組件化上。 我們必須想辦法設(shè)計、構(gòu)建和測試響應(yīng)式 App,同時還要保持它們不會太臃腫,雖然人們?nèi)耸忠徊渴謾C,但流量并不寬裕。 于是組件框架出現(xiàn)了,谷歌的 Angular、Facebook 的 React 和來自開源社區(qū)的 Vue。 2007 年,F(xiàn)acebook 開始在美國雄起,到現(xiàn)在已經(jīng)成為一個巨頭公司。除了擁有大量的用戶,F(xiàn)acebook 也是世界上擁有最多代碼的公司之一。 Facebook 的開發(fā)團隊開發(fā)了很多代碼,并將它們開源。他們也有自己的開發(fā)者大會,叫作 F8。大部分巨頭公司都有自己的開發(fā)者大會。 新的 App 需要越來越復(fù)雜的 UI 布局,所以 CSS 也需要有所變化。我們不再使用 table 元素來布局圖像,frame 元素也差不多銷聲匿跡了。我們建立了新的標準,比如 CSS Floats、Flexbox 和 CSS Grid。 人們不斷地對這些標準進行迭代,開發(fā)出了各種框架,比如 Bootstrap、Foundation 等。我們還發(fā)明了一些語言,可以將它們編譯成 CSS。它們彌補了 CSS 的一些不足,如變量和模塊化,但還不夠完美。 迷茫是正常的 如果你們感到疑惑,這是正常的,事實上,我們都會感到疑惑。現(xiàn)在的開發(fā)者越來越多,科技公司也越來越成功。我們曾經(jīng)使用“初創(chuàng)公司”來描述那些增長迅速同時有點無所適從的公司,不過即使是這個詞到了現(xiàn)在也有點過時了。 數(shù)據(jù) 程序員、程序和設(shè)備越來越多,數(shù)據(jù)也越來越多。我們必須不斷提升計算機的處理能力來處理它們,我們也開發(fā)了一些技術(shù)從數(shù)據(jù)中挖掘有用的價值。 首先,出現(xiàn)了數(shù)據(jù)科學(xué),旨在從數(shù)據(jù)中抽取信息。 例如,有個叫作 Waze 的初創(chuàng)公司,他們讓用戶在手機上安裝 App,在用戶開車的時候跟蹤他們的移動軌跡。因為有很多人都安裝了這個 App,所以 Waze 就積累了很多汽車的移動數(shù)據(jù)。他們基于這些數(shù)據(jù)開發(fā)出了可以告知用戶交通擁堵情況的程序。現(xiàn)在,用戶在手機上打開 Waze 的 App,就可以實時地看到哪里發(fā)生了交通堵塞,然后選擇其他路線。 后來 Waze 被谷歌收購了,大部分初創(chuàng)公司都會經(jīng)歷被收購的命運。 一個用戶在使用 Waze,屏幕上同時顯示其他用戶的頭像 數(shù)據(jù)科學(xué)主要面臨三大挑戰(zhàn)——數(shù)據(jù)存儲、數(shù)據(jù)學(xué)習(xí)和數(shù)據(jù)應(yīng)用。 數(shù)據(jù)存儲 我們現(xiàn)在需要把大量的信息保存下來,并從中找出哪些是有用的。我們需要新的數(shù)據(jù)庫,MySQL、PostgreSQL 這類數(shù)據(jù)庫已經(jīng)無法用于存儲 TB 級別的數(shù)據(jù)了(于是就有了大數(shù)據(jù))。 互聯(lián)網(wǎng)巨頭公司時常面臨這樣的挑戰(zhàn),所以他們就成為這類技術(shù)的先驅(qū)。大多數(shù)技術(shù)都是在這些公司內(nèi)部先發(fā)展起來,然后再開源。 后來出現(xiàn)了 NoSQL,這類數(shù)據(jù)庫對傳統(tǒng)關(guān)系型數(shù)據(jù)庫的某些部分進行了改造,成為新型數(shù)據(jù)庫。 Hadoop 可以將數(shù)據(jù)保存在很多離散的計算機節(jié)點上,并定義了 MapReduce 的數(shù)據(jù)處理方式。 接著 Cassandra 出現(xiàn)了,它通過鍵和列的方式(而不是表)將數(shù)據(jù)保存在不同的節(jié)點上,還可以保證在部分節(jié)點離線時不丟失數(shù)據(jù)。 還有 MongoDB,一個十分方便用于構(gòu)建原型的數(shù)據(jù)庫。在 2017 年,我們對待技術(shù)的心態(tài)就像在 10 年前對待明星一樣——有追捧也有痛斥。而 MongoDB 就相當于 10 年前的五分錢樂隊(Nickelback)。 數(shù)據(jù)學(xué)習(xí) 使用機器學(xué)習(xí)技術(shù)將一張普通的小狗圖片變成具有藝術(shù)風格的作品 在數(shù)據(jù)學(xué)習(xí)陣營,人們最為關(guān)注的是機器學(xué)習(xí)。數(shù)據(jù)科學(xué)家的技術(shù)工具箱里有各種各樣的工具,從分類到深度學(xué)習(xí)。他們一般使用 Python,并與開發(fā)人員一起將機器學(xué)習(xí)應(yīng)用到各個領(lǐng)域。 在數(shù)據(jù)科學(xué)家的幫助下,Web App 可以使用 A/B 測試技術(shù)。該技術(shù)使用了兩個不同版本的服務(wù)器為相似的用戶提供服務(wù),看看哪個版本能夠更快地達成預(yù)期目標。 Airbnb、Uber 和 Netflix 等大公司同時運行著成千上萬個 A/B 測試,確保能夠為他們的用戶帶來最好的體驗。 微服務(wù)和云 像 Netflix 這樣的公司擁有大量的用戶,他們需要確保他們的服務(wù)無時不刻在運行。所以必須管理好服務(wù)器,必要的時候甚至需要新增數(shù)百臺新服務(wù)器。 這在傳統(tǒng)的數(shù)據(jù)中心是很難實現(xiàn)的,Netflix 的工程師使用的是虛擬機。亞馬遜于 2006 年推出了 AWS,提供彈性云計算,也就是 EC2,這樣人們就可以使用亞馬遜數(shù)據(jù)中心里的虛擬機。 亞馬遜已經(jīng)推出了 80 余種服務(wù),幫助其他公司快速增長。我們稱之為“云”,但其實這個名字很難有準確的定義。 亞馬遜提供的云服務(wù) 谷歌和微軟也推出了他們各自的云服務(wù),搶奪云服務(wù)市場。這些聰明人之間展開競爭,各種瘋狂的創(chuàng)新舉動開始涌現(xiàn)。 首先,我們開始考慮如何讓基礎(chǔ)設(shè)施看起來更像代碼。以前,我們必須先購買新服務(wù)器,接進鍵盤,然后安裝各種依賴項。 而現(xiàn)在,我們使用管理配置工具(如 Puppet、Chef 和 Ansible)來實現(xiàn)自動化服務(wù)器配置。我們使用編程語言(如 Ruby)編寫代碼,根據(jù)配置來分配服務(wù)器。如果需要做出變更,只需要修改配置并更新服務(wù)器,最多就使用一下 SSH。 然后容器出現(xiàn)了。EC2 為我們提供了機器分配服務(wù),所以我們的開發(fā)環(huán)境應(yīng)該盡量與生產(chǎn)環(huán)境保持一致。 剛開始,我們使用 Vagrant 啟動虛擬機,后來有了 Linux 容器,最后,Docker 出現(xiàn)了。我們找到了一種可以在 MacBook 上運行 Linux 的方式,而且不需要安裝完整的虛擬機。 通過使用 Docker,我們可以創(chuàng)建與生產(chǎn)環(huán)境相似的開發(fā)環(huán)境。開發(fā)人員使用 Docker 鏡像,將應(yīng)用部署到容器里。 Windows 10 發(fā)布會上有很多人在使用 MacBook 云廠商也緊追不舍,直接在他們的云上運行容器,并提供了 Marathon 和 Kubernetes 這樣的編配框架。有了這些框架,開發(fā)人員就不需要擔心應(yīng)用的伸縮、容錯、監(jiān)控和發(fā)現(xiàn)等方面的問題。服務(wù)器是可以被收回的,不過這一次我們不再給它們起什么好聽的名字了。 開發(fā)人員可以創(chuàng)建小型的應(yīng)用,叫作微服務(wù),這些微服務(wù)獨立運行。又因為微服務(wù)對外部依賴較少,我們開始嘗試使用更多新的編程語言來實現(xiàn)微服務(wù),比如 Go 語言和 Java。 我們也可以使用基于 JVM 的 Scala 和 Clojure,以及相關(guān)的類庫。Airbnb 就使用了多種不同的語言和數(shù)據(jù)庫實現(xiàn)數(shù)百個微服務(wù)。 因為微服務(wù)的出現(xiàn),我們不得不重新思考編程模型。因為現(xiàn)在我們需要協(xié)調(diào)更多、更小型的應(yīng)用。 于是,Apache Kafka、Google PubSub 和 RabbitMQ 出現(xiàn)了,它們旨在幫助服務(wù)器之間進行更好的交互。Kafka 最初由 LinkedIn 開發(fā),后來開源出來。 越來越多的開發(fā)者、軟件和創(chuàng)意在涌現(xiàn),我希望大家仍然對計算機保持興趣。事實上,我們完全有理由這么做。 More Twitter上先爆的macOS漏洞?并不是 像魔毯一樣飛快,微博開源的RPC框架Motan如何? 特別推薦 最近發(fā)現(xiàn)一個講 JVM 的專家,一想到咱們聊聊架構(gòu)的同學(xué)們其實有很多都是 Java 系的,所以推薦一下,感興趣的話就了解一下吧。 公眾號名字叫"你假笨"(lovestblog),這是國內(nèi)少有的 JVM 公眾號,作者是阿里 JVM 團隊前 JVM 專家寒泉子,在阿里擁有眾多粉絲,公眾號主要是作者針對工作中碰到的或者網(wǎng)友提出的經(jīng)典 JVM 案例從 JVM 源碼角度出發(fā)進行深度剖析,文章都挺經(jīng)典的。 其它 推薦即將在這周五開幕的 ArchSummit 全球架構(gòu)師峰會。 2017 年在架構(gòu)領(lǐng)域發(fā)生了很多大事,Kubernetes 結(jié)束容器編排之爭、Kafka 發(fā)布 1.0、Serverless 逐漸發(fā)力、邊緣計算要取代云計算、Service Mesh 蓄勢待發(fā)。另外人工智能為業(yè)務(wù)賦能,也給架構(gòu)帶來了新的挑戰(zhàn)。 我們希望用 4 場深度培訓(xùn)和 100+ 分享來總結(jié)過去的實踐,也展望面向未來的架構(gòu),獻給聊聊架構(gòu)的讀者。我們還請來了王堅博士,讓他來分享一下對技術(shù)的思考。 聲明:本站部分信息來源于第三方平臺,轉(zhuǎn)載此文是出于傳遞更多信息之目的。若有來源標注錯誤或侵犯了您的合法權(quán)益,請作者持權(quán)屬證明與本網(wǎng)聯(lián)系,我們將及時更正、刪除,謝謝。 郵箱地址:342346213@qq.com,聯(lián)系電話:0816-2477611 | 熱門信息 社區(qū)生活 |
|