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