中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

中國攝影官方網(wǎng)站思億歐seo靠譜嗎

中國攝影官方網(wǎng)站,思億歐seo靠譜嗎,找網(wǎng)站開發(fā)人員,企業(yè)咨詢管理公司排名工程師如何對待開源 本文是筆者作為一個在知名科技企業(yè)內(nèi)從事開源相關(guān)工作超過 20 年的工程師,親身經(jīng)歷或者親眼目睹很多工程師對待開源軟件的優(yōu)秀實踐,也看到了很多 Bad Cases,所以想把自己的一些心得體會寫在這里,供工程師進(jìn)行…

工程師如何對待開源

本文是筆者作為一個在知名科技企業(yè)內(nèi)從事開源相關(guān)工作超過 20 年的工程師,親身經(jīng)歷或者親眼目睹很多工程師對待開源軟件的優(yōu)秀實踐,也看到了很多 Bad Cases,所以想把自己的一些心得體會寫在這里,供工程師進(jìn)行參考,希望能幫助工程師更好的成長。

概述

作為一個在科技企業(yè)內(nèi)部進(jìn)行技術(shù)工作的工程師,工作任務(wù)就是用技術(shù)手段支持和實現(xiàn)公司所關(guān)注的商業(yè)目標(biāo)。 實際工作過程中,需要主動或者被動的使用和維護(hù)大量的開源軟件。 據(jù)統(tǒng)計,每個工程師在企業(yè)內(nèi)部進(jìn)行研發(fā)和運維等工作的時候,每年會接觸到上千款開源軟件, 如果是以 Java 或 JavaSciprt 為主要程序開發(fā)語言的工程師,則接觸到的開源軟件數(shù)量更多,在萬級別甚至十萬級別。 (數(shù)據(jù)來源:《2020 State of the Software Supply Chain》由 Sonatype 發(fā)布)

那么如何選擇開源軟件? 這么多開源軟件中,如何根據(jù)個人需求和業(yè)務(wù)需要來選擇合適的開源項目來進(jìn)行投入,是需要綜合考慮的。

選擇了開源軟件之后又如何進(jìn)行定制和長期維護(hù)? 這也是一個很大的問題。因為在企業(yè)內(nèi)部開發(fā)軟件,跟個人開發(fā)軟件不一樣的是,維護(hù)一個計算機(jī)軟件系統(tǒng)的成本遠(yuǎn)遠(yuǎn)大于開發(fā)該系統(tǒng)或軟件的成本。選擇開源軟件之后,如何從長期的視角進(jìn)行定制和修改,后續(xù)的長期維護(hù)如何進(jìn)行,才能做到高效和節(jié)省成本,業(yè)內(nèi)有很多很好的經(jīng)驗,也有不少不太成功的案例成為教訓(xùn)。

最后回到個人,工程師的成長是在不斷的學(xué)習(xí)和實踐中進(jìn)行的。如何來利用開源來提升自己能力,擴(kuò)大自己的眼界,提高自己技術(shù)口碑和業(yè)內(nèi)影響力,對于工程師本人也是非常重要的。

本文將從如下三個部分來分別闡述:

工程師如何選擇開源軟件

工程師如何定制和維護(hù)開源軟件

工程師個人成長如何利用開源

1. 如何選擇開源軟件

首先要明確對開源軟件的態(tài)度,在現(xiàn)階段是不可能離開對開源軟件的使用的。 使用開源軟件有各種各樣的風(fēng)險,包括開源合規(guī)、安全、效率的問題。 簡化為一句:在企業(yè)內(nèi)部使用開源軟件,需要遵守該企業(yè)對開源軟件的內(nèi)部規(guī)定,包括如何引入和如何維護(hù),以便達(dá)到高效、安全、合規(guī)的使用。

回到具體如何選擇特定的開源軟件的問題上,有如下幾個緯度可以進(jìn)行參考。

根據(jù)需求

根據(jù)技術(shù)發(fā)展趨勢

根據(jù)軟件采納周期的不同階段

根據(jù)開源軟件的成熟度情況

根據(jù)項目的質(zhì)量指標(biāo)

根據(jù)項目的治理模式

1.1 根據(jù)需求來選擇開源軟件

選擇開源軟件,首先要明確需求,即選擇這個開源軟件的目的究竟是什么。 工程師選擇一個開源軟件,究竟是它用來做什么的,是用來進(jìn)行個人學(xué)習(xí)的; 還是用來滿足 ToB 客戶的需求的;還是用來滿足內(nèi)部服務(wù)開發(fā)的需求的。 這三個不同的目的下,選擇開源軟件的導(dǎo)向完全不一樣。 (注意:后兩個場景是需要先考慮企業(yè)開源合規(guī)的需求的,參見第三章)

先說說選擇開源軟件來進(jìn)行個人學(xué)習(xí),那么需要看看個人學(xué)習(xí)的具體目的究竟是什么。 是想學(xué)習(xí)一種比較流行的技術(shù)來完善個人的技術(shù)知識結(jié)構(gòu)擴(kuò)大個人技術(shù)視野;還是想看看相應(yīng)的開源技術(shù)項目的具體實現(xiàn),來作為內(nèi)部項目技術(shù)開發(fā)的參考;還是想為了下一份工作進(jìn)行有針對性的技術(shù)準(zhǔn)備。不同的目的會導(dǎo)致不同的選擇。針對前者,顯然是什么技術(shù)最流行選什么,自己缺什么選什么;針對第二種目的,一般是對該技術(shù)領(lǐng)域的知名開源軟件或者創(chuàng)新性軟件進(jìn)行有針對性的選擇,即某個特性是我當(dāng)前需要的,或者是我當(dāng)前項目實現(xiàn)不好的,我需要看看別人是如何實現(xiàn)的。最后一種,顯然是按照下一份工作的職位需要和技術(shù)棧要求進(jìn)行準(zhǔn)備,并根據(jù)技術(shù)棧要求的門檻高低進(jìn)行選擇。但是注意,從個人需求出發(fā)選擇開源軟件,一般都需要寫個小項目練練手,比如一個 Demo 程序或者一個測試服務(wù),因為不用考慮后續(xù)的長期維護(hù),所以盡可以按照個人的想法和個人研發(fā)習(xí)慣進(jìn)行各種練習(xí),不用遵循企業(yè)內(nèi)部的開發(fā)流程和質(zhì)量要求,也不用考慮該開源軟件的穩(wěn)定性和社區(qū)成熟度等情況,只需要盡情的學(xué)習(xí)和參考代碼就好了。

然后看下一個需求,選擇開源軟件進(jìn)行研發(fā)的軟件是需要提供給客戶的,往往可能還是以私有云的方式進(jìn)行交付?;诖祟愋枨髞磉x擇開源軟件,注意作好平衡,即客戶的需求和企業(yè)自身技術(shù)規(guī)劃或產(chǎn)品的長期規(guī)劃需要。以私有云方式進(jìn)入客戶的 IDC 環(huán)境,是需要跟客戶開發(fā)和運行環(huán)境的上下游項目進(jìn)行集成的。這時候要看客戶的需要,可能某些客戶對開源軟件有特定的要求,例如要求使用 HDFS 而且是某個特定版本。對這類指定軟件名字和指定版本的要求,有可能是因為客戶當(dāng)前比較熟悉這個版本,也有可能是因為之前其他軟硬件供應(yīng)商提供的軟件和版本,指定的目的是方便集成和后續(xù)的使用與維護(hù)。如果這種需求是符合企業(yè)項目或者產(chǎn)品的長期發(fā)展需求的,則是可以完全滿足的。如果甲方非常強(qiáng)勢,除了滿足他的要求之外沒有別的辦法,那就選擇客戶所指定的軟件和版本好了。但是如果跟自身項目或產(chǎn)品的長期發(fā)展需求不一致,而且具體項目或者版本是可以跟甲方進(jìn)行協(xié)商的,那么需要跟客戶協(xié)商出一個雙方都能接受的結(jié)果出來,即選擇特定的開源軟件和版本既要做到客戶滿意并買單,又要做到自身的交付成本可控,還要做到符合自身項目或者產(chǎn)品的長期發(fā)展需要。例如客戶使用 Java 的某個老版本,但是企業(yè)的 toB 交付的軟件要求使用 Java 的較高版本。那么需要跟客戶協(xié)商,要么切換到企業(yè)希望的版本上,還需要幫助客戶完成已有系統(tǒng)的升級工作;要么只能降低自身軟件的 Java 版本需求,可能還需要對某些自身代碼進(jìn)行修改,還可能對軟件中的某些依賴組件進(jìn)行修改。這個場景下是帶有很多客觀約束條件下的選擇,是需要跟客戶,自身的產(chǎn)品經(jīng)理和架構(gòu)師一起協(xié)商的。

最后,如果場景是為了滿足內(nèi)部服務(wù)的需求,即選擇開源軟件來搭建的服務(wù)是給內(nèi)部業(yè)務(wù)或者最終用戶來使用的,常見于國內(nèi)各大互聯(lián)網(wǎng)公司的互聯(lián)網(wǎng)服務(wù)系統(tǒng)和各種手機(jī)上的 App。這時候項目的開發(fā)和維護(hù)方有較大的自主權(quán),跟 toB 的交付業(yè)務(wù)完全不一樣。此時選擇開源軟件,就一定要綜合考慮開發(fā)和維護(hù)成本,還要考慮使用該服務(wù)的業(yè)務(wù)所處的階段。

(1)如果提供的服務(wù)是給創(chuàng)新業(yè)務(wù)使用的,創(chuàng)新業(yè)務(wù)一般都是試錯業(yè)務(wù),隨時需要根據(jù)市場情況的變化和當(dāng)前執(zhí)行的狀態(tài)進(jìn)行調(diào)整,很可能三個月后這個項目沒了,即被取消了。這種情況下 “糙快猛” 的開發(fā)方式是比較合適的,不用太多考慮系統(tǒng)的可維護(hù)性和可擴(kuò)展性,就用研發(fā)團(tuán)隊最熟悉的軟件技術(shù)棧,然后用底層技術(shù)支撐團(tuán)隊比如基礎(chǔ)架構(gòu)團(tuán)隊提供的成熟而且經(jīng)過驗證后的底層基礎(chǔ)技術(shù)平臺就可以,最重要是盡快把系統(tǒng)搭建出來,然后隨著產(chǎn)品進(jìn)行快速的迭代。這個時候需要盡量降低現(xiàn)有研發(fā)運維團(tuán)隊的學(xué)習(xí)成本和開發(fā)成本,不用太多考慮可維護(hù)成本,因為需要糙快猛的把系統(tǒng)堆出來,驗證產(chǎn)品需求和商業(yè)模式是最重要的,時間最重要。如果發(fā)現(xiàn)有市場機(jī)會,就快速跟進(jìn),站穩(wěn)腳跟之后可以采用省時間但是費資源的方式(俗稱 “堆機(jī)器”)來進(jìn)行擴(kuò)展,或者采用 “邊開飛機(jī)邊換引擎” 的模式進(jìn)行重寫都是比較劃算的。對于處于創(chuàng)業(yè)階段的企業(yè)或者項目來說,速度勝過一切。

(2)但是如果選擇開源軟件搭建出來的計算機(jī)軟件系統(tǒng)或者服務(wù),是需要長期維護(hù)的,比如是給公司內(nèi)成熟業(yè)務(wù)使用的,或者是針對公司內(nèi)成熟平臺的缺點進(jìn)行系統(tǒng)升級并要替代原有產(chǎn)品的,那么在滿足業(yè)務(wù)需求的前提下,考慮系統(tǒng)的可維護(hù)性變成最重要的事情。選擇對應(yīng)的開源軟件,它是否成熟,是否穩(wěn)定;二次開發(fā)是否友好;運維成本是否比較合算即比較省機(jī)器和帶寬;運維操作是否方便,例如常見的擴(kuò)容和縮容操作是否可以高效、自動、無損的完成;Upstream 到上游開源社區(qū)是否容易等等,這些都成為需要重點考慮的事情。這種情況下,開發(fā)一個系統(tǒng)的成本,可能只占整個系統(tǒng)生命周期內(nèi)的成本的 1/10 不到。所以在滿足需求的前提下,重點考慮可維護(hù)性。

1.2 根據(jù)技術(shù)發(fā)展趨勢來選擇開源軟件

如上圖所示,現(xiàn)代計算機(jī)軟件或者服務(wù)的研發(fā),是一個不斷運行的循環(huán)和迭代過程。從市場分析開始,然后進(jìn)入到創(chuàng)意階段,再到編碼階段,最后到上線階段完成應(yīng)用的部署和生效,上線之后根據(jù)得到的數(shù)據(jù)反饋,繼續(xù)進(jìn)行分析。這個循環(huán)迭代的過程,顯然對于一個身處競爭激烈的行業(yè)的企業(yè)來說,迭代的速度越快越好,同時也需要具備快速彈性、低成本伸縮的能力,即產(chǎn)品方向?qū)α?#xff0c;那么趕緊進(jìn)行系統(tǒng)擴(kuò)容,承接快速增長的流量,做到快速增長;如果產(chǎn)品方向不對,需要趕緊縮容,把相關(guān)硬件和人力資源節(jié)省出來,投入到新的試錯方向上去。身處同一個行業(yè)內(nèi)的企業(yè),如果企業(yè) A 能以更低的成本,更快的速度的進(jìn)行各種產(chǎn)品和策略的迭代,顯然它是能比迭代速度慢,成本高的企業(yè) B 是有更好的競爭優(yōu)勢的。

現(xiàn)在的開源軟件數(shù)量非常多,幾乎每一個分類下面都有很多的開源項目。針對某一個具體的需求,如何進(jìn)行選擇?一個建議是根據(jù)技術(shù)趨勢進(jìn)行選擇。即現(xiàn)在的計算機(jī)系統(tǒng)迭代的方式是 Agile(敏捷) + Scale(擴(kuò)展)。顯然,能夠支持計算機(jī)系統(tǒng)進(jìn)行快速迭代,并能夠很方便進(jìn)行低成本彈性伸縮的開源軟件是值得進(jìn)行長期投入的。而對一個新的開源軟件的學(xué)習(xí)和使用,學(xué)習(xí)者是希望該軟件的學(xué)習(xí)門檻越低越好。一個流行的開源軟件,內(nèi)部實現(xiàn)可以盡可能的復(fù)雜,但是對于用戶來說一定是需要用戶友好的。不然即使創(chuàng)新度再好,易用性不好,只有極客才能學(xué)習(xí)和掌握,創(chuàng)新的鴻溝是很難跨越的。

例如 Docker 的出現(xiàn)之后,以極快的速度風(fēng)靡全球,非常多的工程師喜歡上了 Docker。就是因為 Docker 的特性,在傳統(tǒng)的容器系統(tǒng)之上增加了新特性,包括把應(yīng)用程序和底層依賴庫封裝為一個容器鏡像,容器鏡像有版本,而且可以通過集中的鏡像倉庫進(jìn)行存儲和大批量分發(fā)。Docker 首先解決了長期困擾工程師的開發(fā)、測試、上線環(huán)境標(biāo)準(zhǔn)化的問題,能夠支持開發(fā)者進(jìn)行快速的迭代。同時使用了統(tǒng)一的鏡像倉庫來進(jìn)行鏡像的分發(fā),而且底層采用了輕量級虛擬機(jī)即容器的技術(shù),可以非??斓谋焕?#xff0c;所以采用 Docker 的系統(tǒng)可以很方便的進(jìn)行彈性擴(kuò)展。同時,因為把應(yīng)用 App 封裝在一個鏡像里面,可以在邏輯上根據(jù) Domain Model 的設(shè)計原則進(jìn)行更好的抽象和復(fù)用。顯然,這樣的技術(shù)是值得每一個開發(fā)計算機(jī)系統(tǒng)的工程師學(xué)習(xí)和掌握的。因為他能帶來極大的方便。相反,在 Docker 產(chǎn)生之前,雖然 Control Group(簡稱 cgroup) + Namespace 的技術(shù)早就已經(jīng)出現(xiàn),并早就集成在 Linux 內(nèi)核中,Google 的 borg 相關(guān)的論文早就已經(jīng)發(fā)表,但是一般的技術(shù)研發(fā)團(tuán)隊不是很容易就能駕馭容器并把容器系統(tǒng)在公司內(nèi)部大規(guī)模進(jìn)行部署的。印象中 borg 論文出現(xiàn)后,國內(nèi)只有 BAT 級別的互聯(lián)網(wǎng)公司,才有一小撮精英研發(fā)團(tuán)隊來研發(fā)和使用容器管理系統(tǒng),例如百度負(fù)責(zé) Matrix 系統(tǒng)研發(fā)的團(tuán)隊,阿里負(fù)責(zé) Pounch 系統(tǒng)研發(fā)的團(tuán)隊,騰訊也有一個小團(tuán)隊負(fù)責(zé)容器系統(tǒng)的研究。但是除了那一小部分團(tuán)隊,更多的工程師因為相對較難的學(xué)習(xí)難度而沒有把容器大批的用起來。而 Docker 這種技術(shù),就是非常好的順應(yīng)了敏捷和彈性擴(kuò)展的技術(shù)趨勢,而且提供了非常好的用戶易用性,然后一出場就被非常多的工程師迅速使用上了,而且成為市場的默認(rèn)標(biāo)準(zhǔn)。

這些順應(yīng)潮流的開源軟件是值得選擇和投入的。

另外一個例子是 Spark,Spark 的出現(xiàn)解決了 MapReduce 在分布式計算過程中因為需要頻繁進(jìn)行 IO 操作導(dǎo)致的性能比較低下的問題,同時在易用性上有較大的提升,所以才取代了 MapReduce 在分布式計算領(lǐng)域內(nèi)的主流地位。

1.3 根據(jù)開源軟件采納周期的不同階段進(jìn)行選擇

軟件作為智力活動的產(chǎn)物,他有他的生命周期,一般用軟件的技術(shù)采納曲線表示。

開源軟件也是軟件的一種,也都是遵循軟件的技術(shù)采納規(guī)律的。

?

一個開源軟件從創(chuàng)建到衰亡一般會經(jīng)過 5 個階段。 從創(chuàng)新期(Innovators,占比 2.5%),到早期采納期(Early Adopters,占比 13.5%),然后跨越鴻溝(chasm),進(jìn)入到早期大眾期(Early Majority,占比 34%),再進(jìn)入后期大眾期(Late Majority,占比 34%),最后進(jìn)入衰退期(Laggards,占比 16%)。絕大部分的開源創(chuàng)新項目,沒有能成功的跨域鴻溝,即從早期采納階段進(jìn)入到早期大眾階段,就消亡掉了。 所以,如果是選擇一個需要長期使用并維護(hù)的開源項目,選擇處于早期大眾或者后期大眾狀態(tài)的項目是比較理智和科學(xué)的。

當(dāng)然如果只是個人想學(xué)習(xí)一個新的東西,可以看看處于創(chuàng)新者狀態(tài)的開源項目,或者看看處于 “早期采納者” 狀態(tài)的項目。

注意不管是從長期研發(fā)系統(tǒng)的角度,還是從個人學(xué)習(xí)的角度,都不要再去看處于衰退期(Laggards)的項目了。 例如現(xiàn)階段即 2022 年,是不用再去選擇 Mesos,Docker Swarm 之類的項目了。自從 Kubernetes 成為容器調(diào)度技術(shù)分類的默認(rèn)標(biāo)準(zhǔn),這兩個項目就已經(jīng)處于衰退期,他們的母公司都已經(jīng)放棄了。這個階段如果還投入較多精力來開發(fā)和維護(hù),除非真的是非常強(qiáng)勢的甲方要求,把錢砸在工程師面前逼的不得不用才會選擇。

http://www.risenshineclean.com/news/64652.html

相關(guān)文章:

  • 重慶大足網(wǎng)站建設(shè)百度搜索風(fēng)云榜總榜
  • 門戶建設(shè)開源軟件沈陽關(guān)鍵詞seo
  • 嘉定區(qū)做網(wǎng)站seo類目鏈接優(yōu)化
  • 套模板的網(wǎng)站多少錢關(guān)鍵詞排名優(yōu)化網(wǎng)站
  • 河南平臺網(wǎng)站建設(shè)seo推廣外包企業(yè)
  • 做影視網(wǎng)站用的封面網(wǎng)絡(luò)營銷的特征和功能
  • 網(wǎng)站icp備案信息是什么滄州網(wǎng)站建設(shè)推廣
  • 去哪里學(xué)習(xí)做網(wǎng)站關(guān)鍵詞查詢網(wǎng)址
  • 黃岡網(wǎng)站建設(shè)哪家便宜學(xué)網(wǎng)絡(luò)營銷
  • 小企業(yè)網(wǎng)站建設(shè)怎樣可以快速百度合伙人官方網(wǎng)站
  • 校園二手交易網(wǎng)站要怎么做呀結(jié)構(gòu)優(yōu)化設(shè)計
  • 河北今日疫情最新情況路由優(yōu)化大師官網(wǎng)
  • 公司網(wǎng)站建設(shè)和推廣無代碼網(wǎng)站開發(fā)平臺
  • 電影網(wǎng)站怎么做laravel關(guān)鍵詞排名的排名優(yōu)化
  • 什么網(wǎng)站可以找手工活做廣州營銷網(wǎng)站建設(shè)靠譜
  • 寧波企業(yè)網(wǎng)站開發(fā)百度seo教程
  • Nginx做跳轉(zhuǎn)到其他網(wǎng)站濟(jì)南網(wǎng)站建設(shè)哪家便宜
  • 手機(jī)網(wǎng)站廣告自己想開個網(wǎng)站怎么弄
  • 桐梓縣工程建設(shè)交易網(wǎng)站子域名在線查詢
  • 湛江網(wǎng)站關(guān)鍵詞優(yōu)化網(wǎng)絡(luò)營銷技巧和營銷方法
  • 企業(yè)網(wǎng)站的主要類型廣東的seo產(chǎn)品推廣服務(wù)公司
  • 網(wǎng)站建設(shè)費 什么科目品牌推廣宣傳詞
  • 獨立個人博客網(wǎng)站制作微信公眾號怎么開通
  • 優(yōu)秀網(wǎng)站制作深圳網(wǎng)站開發(fā)制作
  • 網(wǎng)站建設(shè)教程互聯(lián)網(wǎng)電商平臺有哪些
  • 做詐騙網(wǎng)站以及維護(hù)cpa推廣接單平臺
  • 商城類網(wǎng)站用什么做seo線下培訓(xùn)班
  • 網(wǎng)站值多少錢推薦一個seo優(yōu)化軟件
  • 網(wǎng)站建設(shè)app網(wǎng)站關(guān)鍵詞優(yōu)化培訓(xùn)
  • 微信管理中心seo人員的職責(zé)