公司想把技術研發部的開發機都換成虛擬桌面連接到公司的伺服器上,這事靠譜嗎?

公司最近要從現在的小地方搬遷到一個較大的地方,開發人員的人數要從20人增加到60-70人。領導想直接建立一套桌面虛擬化系統,以後不再購買獨立的開發主機,來新人後直接配一套顯示器加瘦客戶機就行了。
不知道搞程序開發的用這種虛擬系統可能會遇到什麼問題?這個技術成熟嗎?能省錢嗎?每個人使用起來會不會卡?
PS:題主公司是政府領域軟體供應商,平時常做的項目包括windows桌面程序、三維圖形模擬和大計算量的模擬運算等。公司的目的大體上有3個:省錢、數據安全、不用維護(現在還沒有IT部)
聽說華為使用了類似系統,不知道華為的同學感覺怎麼樣?


我不是華為的,不過這事我們原先做過,結果就是一個伺服器帶動不了幾個人的開發,因為幹活的時候一個人能把資源佔滿,一個人編譯一次代碼把八個核心全佔滿也是非常常見的事,小項目編譯要幾秒鐘,中項目要幾分鐘,大項目要數小時。即便對於中等項目而言,這意味著編譯一次代碼的話幾分鐘內所有人就不需要幹活了。調試什麼的還先不提。

考慮到空閑時間的話,平均一個強悍的伺服器(八核16線程32G內存那種)帶四個開發者左右。一個強悍的伺服器在價格上不會比四台普通開發機便宜多少。再考慮到鋪設千兆網路才能保證UI流暢,硬體成本幾乎不會有多少節省。

軟體方面的話,用 Linux 就確實可能有節省,用 Windows 的話應該會更花錢,因為這種支持多人多帳號遠程登錄的 Windows 伺服器需要購買額外的使用許可,你們只有期待微軟不過來查你們水表才敢用盜版的,但其實誰知道呢,被微軟查過水表的公司都知道什麼是痛點。

至於說節省 IT 成本,這個可能性存在,不過呢,維護開發機的成本在個人啊,維護伺服器的 IT 人員工資跟維護桌面機的人可並不一樣。——伺服器不用維護?那是天大的笑話吧。

在我的經驗中,該方案適合3-5人的小團隊。它可以用來解決編譯環境一致性的問題的,經常每個人的環境不一致會導致在一個開發者機器上能編譯的代碼換台機器不能編譯。統一的伺服器搭建好統一的開發環境之後,代碼的編譯問題相對來說要可靠得多。也就是僅此而已。

結論:如果你們能保證足夠的網路帶寬,以及平均每個伺服器控制在三五個人以內的水平(你們70 人的話至少需要配個 20 台伺服器吧),那麼這個方案勉強還是可用的。雖然根本節省不了什麼成本。

===
補充:文聞提到了專業的虛擬桌面的方案。我在這裡聲明一下我的這個回答僅僅針對軟體開發。其他類型的辦公不考慮。——實際上,普通的文書類辦公是可以用虛擬桌面帶動更多的辦公者的。這取決於工作性質,研發類的一般並不能用一台伺服器服務很多員工。


當然會越來越卡,你在VC++上泡一個performance wizard,估計可以讓別人有明顯的感覺。要是所有人都在跑performance wizard,估計連remote desktop都要掉線了。


外包華為員工路過:華為現在叫桌面雲的東西,離岸的外包都用這個,在華為內部沒有取代原來的開發環境。一次配置全司通用,異地(去別人的座位也算)辦公非常方便。


用ssh遠程登入,CLI界面操作應該沒有問題,圖形化界面會很不舒服。
如果題主公司需要大批量的計算,可以配置一套計算伺服器,內插幾個刀片伺服器(預算在一二百萬左右,具體不了解)專門做計算處理,使用qsub之類進行任務調配工作。這樣的話,每次將計算任務扔到伺服器上進行計算(程序弄成純CLI命令行那種得),計算好後直接拿結果就可以了。如果要圖像渲染也一樣,渲染好的文件下載到客戶機里看結果,我現在的工作環境就是這個樣子,還算方便。
問題就是這種ssh遠程登入CLI環境,一般都是*nix環境編程;如果公司里的代碼都是基於windows系統,轉換代碼會比較麻煩。


好的軟體是不需要秀存在感的軟體,那種啟動慢騰騰,運行慢騰騰,幹個什麼死半天的東西,顯然不能提高工作效率。

同理,好的工作環境自然也不能編譯一次出去撇個條回來喝杯水事兒還沒弄完。

員工的時間成本和伺服器網路的組建成本誰更貴?

如果遇到網路問題,大家是集體放假還是座位上聊天?

當然,如果有保密要求等特殊需求,必須類似無盤工作站一樣,那也沒辦法。


10年前阿爾卡特的手機研發就用過這樣的方式,沒有什麼問題,解決方案很成熟,有問題也只是投入的資金問題。


我司就是用的這種桌面雲,把二十個人的虛擬機跑在一個物理機上
首要的感覺就是卡,尤其在開IDE,起個服務什麼的,非常的慢,所以我後來改用編輯器寫代碼了
而且這玩意的成本也不低,我們使用的虛擬機用了FC存儲,成本跟給每個人買電腦相比不一定會低。


我知道的情況採用虛擬桌面很大的用途是保證數據安全和環境部署,其實還是數據安全。


公司90年代的時候用大型機,程序員就是這麼幹活的
壞處就是機器掛掉了,重啟了,所有人都放假了

不過貴公司能夠買得起的windows server的負載能力應該比大型機差遠了


  題主說的這種模式叫「桌面雲解決方案」。我目前從事的正是做這個的,不過很快就要離職了,主要原因之一就是...用雲桌面辦公實在不爽!!!

  逐一分析題主所說的三點原因:「省錢、數據安全、不用維護」。

省錢 這是忽悠客戶的一大噱頭。真的省錢嗎?省!但這得看你一台伺服器要跑多少個桌面了。以我所在部門(技術研究部)為例,平均一個桌面能分配到的資源大概是800MHz雙核的CPU,2G內存。平均成本呢?2W一個桌面。用戶體驗呢?剛用的時候感覺卡,但一個月之後就習慣了,基本的辦公是沒有問題的,如果想播放個視頻或玩個大一點的遊戲基本沒戲。(關於視頻,下文再另行分析)

數據安全 這是大實話。上面提到的2W成本約有四分之一是用於存儲上。方案設計得好的話,數據防盜方面比PC要強得多,數據備份和恢復也是。

不用維護 使用PC的場景下,故障的萬能解決方案是————重啟。桌面雲時代呢?好吧,大多數情況下也是重啟桌面。但是這時候的重啟就不僅僅是長按電源鍵就能解決的了,有些方案會提供遠程重啟的功能,有些方案就沒有,如果沒有遠程重啟的功能的話...不好意思,只能找管理員了。一般情況下,一套完整的桌面雲解決方案會配有一套管理工具,用來管理用戶的桌面,當然功能很多了,分配資源啊,開關機啊,修改網路拓撲什麼的。所以還是需要一個管理員的,而且維護門檻比PC高多了。 上面說的還只是桌面掛掉了的情況,萬一遇上伺服器掛掉了,那就坑爹了,記得剛入職沒多久那會兒有一次機房空調故障,導致伺服器高溫掛掉了,整個研發部一下午沒法工作。

  常見的桌面雲解決方案都是私有雲,也就是在區域網內部搭建的,這樣的情況下通常網路拓撲都比較簡單,帶寬的問題也不是非常大(播放視頻什麼的話帶寬問題就大了)。相對應的,也有公有雲下的桌面雲解決方案,比如阿里雲。當然,國內的公有雲方案基本沒法用,阿里雲用的桌面雲協議是我們公司的Xred V1.0(現在到V2.51了,V3.0很快就要問世了),這個版本還很不成熟,基本沒法兒用。

  關於視頻,有空再更新。


我在一家外包公司任職,在客戶現場上班。甲方是中國建設銀行廈門開發中心。我所在的工作地點正在使用這種方式。就廈門這一地區所使用的虛擬桌面伺服器,保守估計也要為上千人提供服務吧。

具體的方案我不知道是建行自己做的,還是請外包公司做的,但是由於涉及到安全問題,我傾向是建行內部的IT部門和風險部門在做這個項目,他們管這個叫做「雲桌面」。在終端機上可以看到創建虛擬桌面的客戶端是Citrix XenApp。

說說平時的使用感受吧。大部分的時間,響應速度還可以,偶爾會有卡頓,由於是虛擬機,在編譯代碼(我們的項目是基於JAVA開發的)的時候,速度明顯比真實機器慢的多。每個虛擬桌面可使用的運行內存有3G,進行多任務操作還是沒有問題的。虛擬桌面可以訪問外部存儲設備,但是外部的終端機無法取出虛擬桌面內部的文件。這樣在我們溝通問題的時候,原本可以複製的文本內容,也必須使用截圖來進行交流。在關閉虛擬桌面的2個小時內,如果用同一個賬號重新連接,可以回到上次斷開的狀態。

虛擬桌面的好處:
1. 對於人數很多的公司,能夠明顯降低配置電腦的開支。
2. 有效防止資料的外泄。
3. 可以自由的配置員工虛擬桌面所屬的網段,而不用拘泥於他在真實環境中處於什麼位置。
4. 配合VPN,一些關鍵人員可以在任何時做出緊急反應。

不便之處:
1. 開發效率降低。安全和便捷在大部分情況下都是對立的,虛擬桌面也是如此。編譯時間長、運行Weblogic等中間件速度緩慢,且在主觀和客觀上都造成溝通的的不順暢,碰到問題到網路上搜索都要靠手敲實在胃疼。
2. 一但虛擬桌面依賴的伺服器(或集群?)不能正常工作,基本所有的工作都都處於中止的狀態。

事實上,不斷有人在嘗試突破這個系統,拿到虛擬桌面內部的文件。但是這個系統也不斷在升級,最早推廣的時候,虛擬桌面內可以運行FTP服務,管理處反制一切FTP協議的服務都無法正常運行;再後來有人通過區域網通訊軟體如飛鴿傳輸文件,管理處再反制虛擬桌面內的飛鴿無法搜索到虛擬桌面外的IP;再後來有人寫了一個虛擬桌面運行的服務端,通過socket跟虛擬桌面外的客戶端通訊,管理處索性把非必要的斷埠全部封閉...

所以,這一套系統是必須有人不斷在維護的,何況你的公司本身就是搞IT的,會技術的一大把,不及時進化還想難住他們?一旦虛擬桌面失去了「安全」的屬性後,剩下的也基本就是累贅了。


本人對虛擬桌面有一定經驗,題主所描述的案例就是非常典型的虛擬桌面的應用場景。我想說的是,用虛擬桌面非常靠譜,非常靠譜,非常靠譜,三遍。
--------------------------------------------------
簡單說下虛擬桌面的好處:手機打字不同意,見諒!

當開發人員的開發機忽然出現藍屏的我時候,他就會發現虛擬桌面是多麼的偉大!在虛擬桌面環境下,他需要做的就是重新連接一下,一個一摸一樣嶄新的我開發環境加前幾秒的代碼呈現在他面前!

當開發人員在家突然靈感爆發或者公司十萬火急要求fix bug的時候,才會知道虛擬桌面是多麼的方面。打開家裡的客戶端,連上立馬開工!

當老闆要求把200台開發機全部從xp升級到win7或者win7升級到win10的時候,it人員就回體會到什麼叫做一鍵升級!

當200個開發人員提出每人需要用兩小時帶高性能顯卡的機器的,你就會發現虛擬桌面是多麼的方便和省錢!你需要創建一個十來個虛機的資源池,讓他們輪流用就好了!

----------------------------------------------------


前面大部分黑虛擬桌面的回答都是集中在兩點:1.虛擬桌面會卡。2.虛擬桌面不省錢。針對這兩點簡單解釋一下。
1.點贊最多的說會卡,卡一般有兩種原因,計算資源不夠或者網路資源不足。這兩點並不是虛擬桌面導致的,完全可以在系統部署時估計好需要的資源,做好調優來解決。分配好資源有很多種方式,主要就是桌面對照相應的最佳實踐白皮書做好調優,hypervisor層做好性能調優,網路規劃好。就行了!
本人在用dell r730,192g內存,跑過一百個win7桌面,不卡
2.不省錢,這個不好說,一般情況下更好的東西剛開始投入都不省錢,省錢是說給老闆聽的。但是時間放長一點tco也就是總擁有成本會更低。話說回來,想用更少的錢用更好的產品其實不是很現實噢


我會拒絕進入這種方式工作的公司。


就說這三個目的:
1,省錢。省你妹的錢啊!!!!!成本上 @pansz 的說法基本靠譜,我們40多台伺服器,每台動不動就8塊,16塊處理器,還有24和32的,就這樣一到大家都上來的工作的時候還是卡的要死。模擬類運算又是特別吃資源的,保守估計你們一個8塊的伺服器最多給3個人用。就準備好錢燒伺服器吧。
2,數據安全。這才是你們老闆的 目的吧!!!但是說實話,現在終端軟體的剪貼板基本打通了,copy點代碼不是沒辦法,就是麻煩點。同時在終端上做開發起來也不太方便。。。心理滿足而已。。。
3,不用維護。不用維護你妹啊!!!!!你一次幾十台server架起來怎麼也得組個網做個域,能在不同機器上share你的目錄吧,你總得要分散式編譯吧,大家的開發環境要搭建吧。沒有IT部搞這個就是作死。。。

但是有一點我和 @pansz 看法不同,我覺得這種伺服器加終端的方式不是為了小中型團隊的,而是為了超大型團隊的。各個team跨國跨地區,每個team管理的模塊卻相對較小,這樣編一個項目不會佔用大量資源,而不同team卻可以方便的在同一個環境下工作。甚至你可以走到哪干到哪,出差也不怕。你這種幾十人的team反而沒必要


桌面雲的技術其實很早就實現了,Citrix和VMware其實都不錯,華為也有大型的case(他們自己也在用),但是桌面雲的死穴在於網路,網路不強悍,任你分再多運算資源給終端也白搭,好多國內廠商都標榜自己用的什麼什麼特殊協議,其實本質上差別不大。如果是圖形化界面開發,而且還有模擬計算什麼的燒機業務的話我建議就別用這種方案了,浪費錢而且效果也不好,會卡得你想自殺的,除非你有錢上Infiniband。
再者,上了這種系統,是不用你們來運維了,可別忘了這是要付出代價的……廠商或者集成商維護的費用每年也不少(某大廠商的策略是一旦你停止購買維護服務,後續再想請廠商來維護的時候要把之前空檔期的服務費補上……不知道現在是不是還這樣,不過在中標前人家可是不會跟你說明白的呦),甚至於這些廠家的投標策略上可以把部分授權費用沖抵為維護費用,或者壓根就不收授權費用(據說某土豪廠商投某標的時候只說了一句話:軟體免費,然後就把客戶和競標廠商甩一邊兒自己玩兒去了……結果可想而知),就等著掙回頭錢呢。
數據安全這一塊兒我就不吐槽了,現在的技術水平完全可以保證災備的質量,數據備份的方法和次數一個比一個讓人放心,但是至於數據是不是會被別有用心的利用……我只能說得看廠商人品,幸好大部分廠商人品都還可以,這種事情上不會糊塗,但是要是說世界上有不透風的牆,誰都不信。


據說華為是採用這種方式的,但靠譜不靠譜,要從很多方面來考慮的。
- 公司帶寬(內網,外網)
採用這種模式,帶寬是個很大的問題。如果有多個site的話,外網的帶寬也是個問題。
- 伺服器成本
本身伺服器虛擬化已經是很成熟了,更多的是成本問題。拿JAVA舉例,對資源佔用其實是非常高的,特別是內存,8G的內存估計都要嫌小了。如果單純從成本考慮的話,採用這種虛擬化的開發環境,投入遠比買幾台開發PC來的大。
- 員工數
主要是開發人員,而這個數量會直接影響帶寬,伺服器等,隨著增加人員,肯定會增加帶寬,伺服器資源升級等問題。
- 安全形度
我覺得採用這種方式的大部分原因在此。比如華為,原來開發人員的機器也是禁用USB什麼的,如果項目有很高的安全性要求,比如源代碼,文檔什麼的。


以前工作的過的公司使用過類似的技術,不過伺服器上的虛擬環境都是給QA用的。只是跑跑程序,不涉及開發,有時候都聽到他們抱怨很卡。
我偶爾用過他們的那種虛擬環境,確實卡得有點令人髮指,有種想哭的感覺。


之前在深圳華為待過一段時間,華為的雲桌面解決方案的確很強大,但研發類工作還沒使用這個方案。我想主要原因是研發類經常需要編譯程序什麼的,而且各種IDE本身佔用系統資源很大,本來調試稍微大點的項目代碼就很煩躁,還弄個一卡一卡的桌面雲,殺了我吧!要說安全,我覺得在乎人吧,只要想總是有辦法繞過各種機制的。最後成本的話,肯定只增不減,還要有專門的系統維護人員。


上一家公司空降了一個來自華為的領導,開會第一天就說要搞桌面雲,然後也沒有人支持,也沒有人反對,然後就沒有然後了。半年後我從這家公司離職了。


開發環境在伺服器上,低級碼農表示04年主流配置就夠用了。


推薦閱讀:

中國IT行業的「好工程師」應該是什麼樣的?有哪些客觀標準可供自我評估?
開發一個網站需要什麼會哪些技術?
軟體版本號命名的依據有哪些?
大型公司開發軟體的流程是怎樣的?
3 年開發經驗進得了 BAT 公司么?

TAG:程序員 | 軟體開發 | 虛擬主機 |