如果你們感到疑惑,這是正常的,事實上,我(wǒ)(wǒ)們都會感到疑惑。現在的開(kāi)發者越來越多,科技公司也越來越成功。我(wǒ)(wǒ)們曾經使用“初創公司”來描述那些增長迅速同時有點無所适從的公司,不過即使是這個詞到了現在也有點過時了。
我(wǒ)(wǒ)們現在需要把大(dà)量的信息保存下(xià)來,并從中(zhōng)找出哪些是有用的。我(wǒ)(wǒ)們需要新的數據庫,MySQL、PostgreSQL 這類數據庫已經無法用于存儲 TB 級别的數據了(于是就有了大(dà)數據)。
互聯網巨頭公司時常面臨這樣的挑戰,所以他們就成爲這類技術的先驅。大(dà)多數技術都是在這些公司内部先發展起來,然後再開(kāi)源。
後來出現了 NoSQL,這類數據庫對傳統關系型數據庫的某些部分(fēn)進行了改造,成爲新型數據庫。
Hadoop 可以将數據保存在很多離(lí)散的計算機節點上,并定義了 MapReduce 的數據處理方式。
接着 Cassandra 出現了,它通過鍵和列的方式(而不是表)将數據保存在不同的節點上,還可以保證在部分(fēn)節點離(lí)線時不丢失數據。
還有 MongoDB,一(yī)個十分(fēn)方便用于構建原型的數據庫。在 2017 年,我(wǒ)(wǒ)們對待技術的心态就像在 10 年前對待明星一(yī)樣——有追捧也有痛斥。而 MongoDB 就相當于 10 年前的五分(fēn)錢樂隊(Nickelback)。
像 Netflix 這樣的公司擁有大(dà)量的用戶,他們需要确保他們的服務無時不刻在運行。所以必須管理好服務器,必要的時候甚至需要新增數百台新服務器。
這在傳統的數據中(zhōng)心是很難實現的,Netflix 的工(gōng)程師使用的是虛拟機。亞馬遜于 2006 年推出了 AWS,提供彈性雲計算,也就是 EC2,這樣人們就可以使用亞馬遜數據中(zhōng)心裏的虛拟機。
亞馬遜已經推出了 80 餘種服務,幫助其他公司快速增長。我(wǒ)(wǒ)們稱之爲“雲”,但其實這個名字很難有準确的定義。
亞馬遜提供的雲服務
谷歌和微軟也推出了他們各自的雲服務,搶奪雲服務市場。這些聰明人之間展開(kāi)競争,各種瘋狂的創新舉動開(kāi)始湧現。
首先,我(wǒ)(wǒ)們開(kāi)始考慮如何讓基礎設施看起來更像代碼。以前,我(wǒ)(wǒ)們必須先購買新服務器,接進鍵盤,然後安裝各種依賴項。
而現在,我(wǒ)(wǒ)們使用管理配置工(gōng)具(如 Puppet、Chef 和 Ansible)來實現自動化服務器配置。我(wǒ)(wǒ)們使用編程語言(如 Ruby)編寫代碼,根據配置來分(fēn)配服務器。如果需要做出變更,隻需要修改配置并更新服務器,最多就使用一(yī)下(xià) SSH。
然後容器出現了。EC2 爲我(wǒ)(wǒ)們提供了機器分(fēn)配服務,所以我(wǒ)(wǒ)們的開(kāi)發環境應該盡量與生(shēng)産環境保持一(yī)緻。
剛開(kāi)始,我(wǒ)(wǒ)們使用 Vagrant 啓動虛拟機,後來有了 Linux 容器,最後,Docker 出現了。我(wǒ)(wǒ)們找到了一(yī)種可以在 MacBook 上運行 Linux 的方式,而且不需要安裝完整的虛拟機。
通過使用 Docker,我(wǒ)(wǒ)們可以創建與生(shēng)産環境相似的開(kāi)發環境。開(kāi)發人員(yuán)使用 Docker 鏡像,将應用部署到容器裏。
Windows 10 發布會上有很多人在使用 MacBook
雲廠商(shāng)也緊追不舍,直接在他們的雲上運行容器,并提供了 Marathon 和 Kubernetes 這樣的編配框架。有了這些框架,開(kāi)發人員(yuán)就不需要擔心應用的伸縮、容錯、監控和發現等方面的問題。服務器是可以被收回的,不過這一(yī)次我(wǒ)(wǒ)們不再給它們起什麽好聽(tīng)的名字了。
開(kāi)發人員(yuán)可以創建小(xiǎo)型的應用,叫作微服務,這些微服務獨立運行。又(yòu)因爲微服務對外(wài)部依賴較少,我(wǒ)(wǒ)們開(kāi)始嘗試使用更多新的編程語言來實現微服務,比如 Go 語言和 Java。
我(wǒ)(wǒ)們也可以使用基于 JVM 的 Scala 和 Clojure,以及相關的類庫。Airbnb 就使用了多種不同的語言和數據庫實現數百個微服務。
因爲微服務的出現,我(wǒ)(wǒ)們不得不重新思考編程模型。因爲現在我(wǒ)(wǒ)們需要協調更多、更小(xiǎo)型的應用。于是,Apache Kafka、Google PubSub 和 RabbitMQ 出現了,它們旨在幫助服務器之間進行更好的交互。Kafka 最初由 LinkedIn 開(kāi)發,後來開(kāi)源出來。
越來越多的開(kāi)發者、軟件和創意在湧現,我(wǒ)(wǒ)希望大(dà)家仍然對計算機保持興趣。事實上,我(wǒ)(wǒ)們完全有理由這麽做。