我的一點企業做云經驗

最近,經常有朋友問我在企業做云的經驗,也有人問我OpenStack二次開發項目經驗。正好這方面也有點經歷,那現在就把我過往有關經歷整理整理,總結出幾條心得體會,分享給大家。

技術:我們OpenStack二次開發做了什么?

我之前介紹過我們基于OpenStack二次開發做了集團的基礎云平臺。從環境上看,我們做了一個小型公有云,以及一個分布在兩地三中心的私有云。?

從 OpenStack角度,主要包括OpenStack底層組件的二次開發,以及CMP的研發。兩者可能無法截然分開,所以我可能兩個都涉及到,但是本文內容以OpenStack組件的二次開發為主。我們主要在OpenStack?Mitaka版本中的Glance/Nova/Neutron/Cinder/Keystone/Heat/Telemetry/OVSvAPP/Trove/Ironic等組件的基礎上,根據需求,做了一些二次開發。比如,我們在Telemetry 項目上做了不少改動,團隊之前有發過一篇文章?http://www.infoq.com/cn/articles/how-to-implement-cloud-monitoring-alarm-service。

技術:OpenStack二次開發的一些心得

  • 如果有在利用社區代碼和自研之間做取舍的話,還是盡量用社區開源代碼吧。節省成本又省事,將來還方便升級。

  • 如果要自研的話,要盡量控制自研范圍。遵循『能不改就不改,能小改不大改』原則,只有在需要的時候,才修改社區代碼。

  • 根據需求合理選擇所需要才用的模塊。在動手修改代碼之前,多討論,多思考,多測試,多對比,多比較。如果沒把握,就先小動再大動,一步一步動。

  • 積極貢獻社區。自研部分的代碼,如果能合并到社區的,鼓勵貢獻到社區,各個企業要積極參與開源生態。

  • 團隊要采用和社區同樣的流程、工具和要求。

團隊:產品和產品經理

OpenStack二次開發往往是以一個項目形式進行。這個項目要成功,一個好的產品經理非常重要。在我們團隊,我自己身兼產品經理這個角色。?

我覺得PM這個角色需要具備以下幾個條件:

  • 技術 - 對OpenStack比較懂。這里的『懂』,我認為更偏重廣度,而不是深度。所謂廣度,就是對OpenStack的主要組件、功能、用途、適用場景、使用方式等都比較了解。

  • 業務 - 懂業務需求。OpenStack平臺是要支撐業務的,而業務的需求對OpenStack平臺很重要。OpenStack中的組件就像積木,不同的拼裝方式,會有不同的結果。每個企業都有自己獨特的業務場景。因此,產品經理需要充分了解這些業務場景,以及它們對OpenStack的影響和需求。

  • 產品 - 具備產品經理的基本業務能力。包括但不限于,溝通能力(能說)、寫作能力(會寫)、各種工具使用(我當時比較土,主要就用Confluence管理文檔、用Axure RP畫原型,用Word/Powerpoint/一些在線網站畫圖,用XMind花思維導圖等)、項目管理能力、對用戶體驗有一些了解等。這里,我想區分一下2B產品經理和2C產品經理。我認為兩種角色有比較大的差距。2C的PM很多精力需要放到產品運營、用戶體驗上,而2B的PM的很多精力應該是放到企業用戶的需求上。

我覺得,PM如果具有懂技術的解決方案架構師的背景會比較合適。?

PM的主要職責,包括但不限于:

  • 產品規劃。包括中長期的宏觀規劃,項目分幾期,每期哪些功能,支持哪些業務;也包括短期規劃,一個項目內,有哪些功能,功能優先級定義,上線計劃等。

  • 產品設計。我當時主要的產品輸出是PRD文檔。我們的主要參考對象包括青云、阿里云、騰訊云、AWS等幾個公有云。

  • 產品研發管理。從產品文檔輸出,到產品研發,到產品上線,交付運維等,PM都需要有參與和一定程度的控制。?

我做PM的一點心得:

  • 產品經理是要對產品成敗負責的人。

  • 產品經理需要在做產品前、做產品中、產品發布后不斷接觸用戶,不放過任何一個抱怨,不要怕被用戶嘲笑甚至罵,才能真正找到改進產品的點。

  • 在參考其他家產品的時候,要充分考慮到每家產品面向的客戶及場景,也就是想明白他們為什么會那么實現。以云彈性伸縮功能來舉例子。在公有云上,它是一個挺重要的功能。但是在私有云上,一來企業應用沒有多少機會需要伸縮,二來即使在某些時間要伸也一般都是提前準備好資源。因此,在私有云上,彈性伸縮并不是一個關鍵功能。

  • 做企業基礎云的產品的目標之一是實現用戶真正的自服務。用戶根據界面上的文字和提示,必要的時候結合用戶文檔,可以自助順利地使用各云產品。要盡量減少用戶找客服、運維,甚至研發的需求。

  • 產品上線只是一個階段性的里程碑,不意味著產品開發的結束。只有不斷迭代,才能不斷改進產品。只有達到了設計要求的產品才能上線,否則就一定不要上線。產品經理必須有在需要的時候說『NO』的勇氣和決心。

  • 產品經理是產品的第一個用戶。在尋找用戶點的時候,要拋棄一個專業人士的思維方式,把自己當做一個小白用戶,否則你永遠不知道用戶需要什么,用戶不理解什么,用戶抱怨什么。還需要擺脫本位主義,少從個人角度思考,多站在用戶角度看問題。

  • 產品不是了解點用戶需求,能畫點產品原型就能做好的。一個好的PM,會把產品裝在心里,時不時拿出來琢磨琢磨,時不時跟用戶聊聊他們的使用感受和抱怨,不放過任何一個用戶反饋。

  • 要學會區分真需求和偽需求,強需求和弱需求,緊急需求和一般需求,大需求和小需求等;要學會做長期規劃和短期規劃;要學會區分優先級。

  • 產品需要象小白一樣思考,不能動不動就拿技術實現說事。用戶不管你是如何實現的,只管你的產品能不能用,好不好用。?

團隊:技術團隊

沒有一個比較完整且給力的技術團隊,是做不了二次開發的。我們使用了OpenStack?Mitaka版本中的Glance/Nova/Neutron/Cinder/Keystone/Heat/Telemetry/OVSvAPP/Trove/Ironic等組件。不管每個組件的二次開發程度如何,有個人看著肯定是需要的。核心模塊,比如nova,cinder,neutron,存儲,網絡,運維等,需要有技術能力較強的人看著,其它較小的模塊,可只花一小部分時間看著。因此,技術團隊的骨架非常重要,就像足球隊的中軸線一樣。無論成員怎么變化,只要骨架不大變,那都問題不大。?

我們openstack團隊的組織結構大概包括:產品經理、界面設計師、技術架構師、技術經理、開發、測試、鏡像和部署、運維等。?

做法:做云是整個公司的事情

云不只是一個云團隊的事情。一公司做云,需要公司多個團隊的參與。

  • 戰略團隊:戰略團隊負責公司的做云戰略,至少包括優勢、劣勢、機遇和挑戰等四個維度的分析。這個戰略會對公司做云進行頂層設計。設計好以后,就是落地的事情了。

  • 云研發和運維團隊:這個就不再細說了,其職責是規劃、建設、運維云平臺。

  • IDC團隊:云平臺在IDC中運行,因此肯定需要IDC團隊的參與。IDC做不好,云平臺就不會運行得好。

  • 運營團隊:云搭好以后,需要運營團隊來把它推廣給用戶。需要確定推廣策略、計費方式、回款方法等。

  • 客服團隊:運營團隊把云推廣出去后,客戶就會來上云,客服團隊是負責接待客戶、提供方案、處理問題的。這團隊要熟悉云,懂得一些云上實踐,還能做好前后臺的溝通。

  • 應用團隊:應用團隊是云資源的申請者和使用者。該團隊需要懂得如何在云上部署業務,如何做高可用架構,如何運維云上應用。

  • 市場和銷售團隊:如果有云產品對外銷售,那就需要這兩個團隊了。云產品往往需要技術型市場和銷售人員,需要對云產品和方案有一定了解。

  • 后臺支撐團隊:包括采購、人事等團隊,需要考慮具體情況,對既有流程做一些調整。?

做法:按次序做事

我兒子在上課外課時,老師反復強調一個做法,就是要『有序思考』。大部分題目,通過有序思考,都能解決。回到我們做項目,有序做事也很重要,很有價值。我想說不要想一口吃掉大象。?

我們做基礎云,從不同維度有序地進行:

  • 先搞OpenStack一個region,到兩個再到三個region。

  • 先用集中式存儲,再搞分布式存儲,數據逐步遷移。

  • 從核心功能到擴展性功能。

  • 對于大的功能,需要多次迭代,不要一上來就整大而全的。一步一步做扎實,獲得用戶認可,這才是王道。

  • 先從外圍業務上云,再到核心業務上云。

  • 團隊也由小而大,逐步擴張。?

這么做有幾個好處,比如:

  • 領導不擔心,因為你給他們看了總體規劃,還有具體的實施計劃,一步一個腳印,走得很踏實,領導當然放心。

  • 團隊不緊張,有一個成長和適應的過程,能力平穩增長,承受的壓力平穩增長,心里就舒坦。

  • 用戶不擔心,看到前面的階段性成果后,用戶對新的功能和平臺會越來越放心。

  • 投入更合理,不需要一次性大投入。

做法:按規律做事

任何事情都有其獨特的內在規律。違背了規律做事情,是要被懲罰的,只是時間問題。

  • 做事情肯定需要投入。搞云也不例外,甚至投入要更高。因為搞云的人的工資確實比較高,這不是負責招聘的人決定的,而是行業決定的。而且,人家還要看你的平臺如何。好平臺,薪水還能打個折;平臺不夠好,人家還要加錢。所以企業對此要有心理和財務準備,一定要提前算好,能投入多少,能投幾年,投入產出比如何等,要是半途而廢對大家都不好。

  • 云技術真的很復雜。不要想著幾個人就能搞好,是需要一個團隊的,而且還要講究搭配,看團隊成員的水平。

  • 云平臺從規劃、研發、上線、運維等是一個流程性過程,不能想著一個月招聘,再一個月寫代碼,然后第三個月就上線,然后還跑得又快又好。

  • 做新技術的人有些不一樣,因此,有些管理政策需有些差別。比如,不能老想著搞云的人一天到晚寫代碼,人家還要學習新的技術,參加參加黑客松之類的碼農聚會,平時還要時不時聚會討論討論技術呢。

  • 云產品上線到穩定有個過程,不是上線了就穩定沒有問題了。這個過程中,需要有小白鼠來試用,不要想著放在那里幾個月平臺就自己好起來了。很多時候,需要有推手,讓一些不那么重要的應用先在上面跑起來。發現問題,及時修改,不斷迭代,才會有想要的結果。

  • 云產品從研發出來到看到經濟效益有個過程,還需要多種角色參與,比如運營、市場、銷售等。不能覺得有個好產品,很快就能賣出去回來錢。而且,這些都是必要條件,還不是充分條件。

  • 開源社區、各種評獎大會、各種meetup的錢,PR的錢,該花還是要花。這就是所謂生態,和你看得慣看不慣無關。

心得:給做云的技術人的幾句話

  • 給企業做云,穩定是第一位的。穩定,穩定,穩定,重要的事情說三遍!

  • 云技術真的很復雜。沒有金剛鉆,攬不了瓷器活。好好學習天天向上是王道。如果沒這心思,或者沒有體力,估計就得考慮轉型了。

  • 除了鉆研技術以外,還要看看業務。技術是為業務服務的。業務是目標,技術是實現手段。不能在產品討論的時候一言不發,然后代碼實現時候問題N多,用戶來問怎么用一臉懵逼。

  • 要將DevOps落到實處,不能只停留在理論和口頭上。比如,產品上線后到穩定前,建議研發積極主動參與運維工作。這么做會有很多好處,比如看看自己做的東西跑得咋樣,用戶是怎么用的,運維都在干嘛等等。

  • 為用戶做東西。有用戶用才是王道。界面畫得再好,新技術用的再多,如果沒有用戶用,一切就會白費了。

  • 要低頭做事情,抬頭看榜樣。除了在某幾個方向有深入鉆研以外,還需要時不時看看技術發展大勢。云這概念來自IBM,首先是AWS做出來的,當前公有云在引領著技術和產品發展趨勢。需要經常看看公有云廠家都在玩啥新東西。

  • 產品、開發、測試、運維都是一個團隊,只是分工不同。只有齊心協力,才可能給用戶交付一個好的云平臺。?

心得:給打算做云的企業的幾句話

  • 關于做云的動機:是真的需要做云嗎?要做的是哪種云?打算投多少錢?打算投幾年?本來有個各種云的列表,但是后來擔心對號入座就刪了。每種云都有不同的做法,有些甚至迥乎不同,在動手之前一定要想清楚了。

  • 關于自研和購買第三方產品之間的取舍:真要搞云的話,要在自己搞云研發團隊和購買第三方云產品和服務之間做出合理抉擇。自己弄的話,算錢的時候要算仔細了,不能只算研發團隊那點工資,還有設備、運維團隊、IDC等各種費用都得算。找外部團隊的話,要考慮的事情也不少,比如,現在團隊會測試外面廠家的產品不?報價合理不?口碑好不?有爛尾項目歷史不?是真做產品和技術的,還是做外包的?是有真本事的,還是動嘴皮的?團隊的人都在哪里呢,是不是都撲在某個大客戶那里了呢?有找三四家做下對比測試嗎?

  • 關于云的功能:真的要那么多云功能嗎?SDN是干啥的,有哪些坑得先了解清楚;分布式文件系統是干啥的,市面上有便宜又好用的產品不?分布式存儲和SAN存儲啥關系,是替代呢,還是互補呢,還是什么都不管反正就是要用?容器云平臺真的需要嗎?公司現在和短期內有幾個應用能是面向容器開發的呢?研發團隊玩過容器沒?沒的話,是培訓呢,還是換團隊呢?

  • 關于云的目標:公司都有哪些應用系統呢?是不是有很多windows2000上跑的應用系統啊?KVM上跑windows虛機還好使不?是不是還有很多古老的系統放在某個角落?公司業務應用研發團隊主要是基于linux編程呢,還是基于windows編程呢?

  • 該請的人要請,該花的人要花,該等的時間要等。需要的話,多問問專家吧。

  • 尊重規律做事,不要想一口吃個胖子,不要幻想著很快一朵成本低又穩定性能又好各種應用都能跑的云就降臨IDC。

  • 一開始就考慮后路:想好云團隊將來的出路。轟轟烈烈把內部云平臺做完后,團隊要干嘛去?是解散呢,還是去做外部市場呢?每種做法都需要有不同的方案,建議提前準備好。

  • 做云是一個公司的事情,不是某個事業部的事情。要有公司層次的總體部署。?

啰嗦了這么多,有些是自己親身經歷的,有些是道聽途說的,有些是拍腦袋想的。希望做云的人,和做云用云的企業單位都好運!?

謝謝您的閱讀,歡迎關注本人的公眾號:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253435.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CMOS圖像傳感器——黑電平校正

黑電平(black level ),也稱作Optical Black,很多人也稱呼為OB,指的是光學暗區,即黑色數據的最低電平值,指在經過一定校準的顯示裝置上,沒有一行光亮輸出的視頻信號電平,通常指圖像數據為0時對應的sensor信號電平值。 在CMOS圖像傳感器對圖像進行處理的過程中,黑電平是…

C#利用WebClient 兩種方式下載文件(一)

WebClient client new WebClient(); 第一種 string URLAddress "http://files.cnblogs.com/x4646/tree.zip"; string receivePath"C:\"; client.DownloadFile(URLAddress, receivePath System.IO.Path.GetFileName(URLAddress)); 就OK了。 第二種 Strea…

文件的行操作

1.1 第8題 輸出test.txt文件內容時,不包含clsn字符串的命令 文件內容: [rootznix ~]# cat /data/test.txt test liyao clsn 1.1.1 方法一grep 使用grep命令,找什么就寫什么 -v 參數是排除的意思 [rootznix ~]# grep -v "clsn" /dat…

linux多線程編程5--信號量(semaphore)

信號量本質上是一個非負的整數計數器,也是UNIX中古老的實現進程互斥和同步的手段,Linux下信號量概念是在線程中,信號則在進程控制中,不過原理差不多,最基本最經典的操作莫過于P、V操作了,能實現進程、線程的…

【leetcode】910. Smallest Range II

題目如下: 解題思路:我的思路是先找出最大值。對于數組中任意一個元素A[i]來說,如果A[i] K 是B中的最大值,那么意味著從A[i1]開始的元素都要減去K,即如果有A[i] K > A[-1] - K,那么A[i] K 就可以作為…

CMOS圖像傳感器架構的演變

01、 引言 圖像傳感器目前用于多種應用。自 1969 年電荷耦合器件 (CCD) 發明以來,固態圖像傳感器已蔓延到各種消費市場,例如小型攝像機和數碼相機。自 2005年以來已成為主流固態圖像傳感器的 CMOS 圖像傳感器在為 CCD 開發的技術的基礎上不斷發展。除了…

Linux系統中/dev/mtd與/dev/mtdblock的區別

MTD(memory technology device內存技術設備)是用于訪問memory設備(ROM、flash)的Linux的子系統。MTD的主要目的是為了使新的memory設備的驅動更加簡單,為此它在硬件和上層之間提供了一個抽象的接口。MTD的所有源代碼在/drivers/mtd子目錄下。…

Python判斷變量的數據類型的兩種方法

2019獨角獸企業重金招聘Python工程師標準>>> 1、isinstance(變量名,類型) def varargsql(self, sql, *args):if isinstance(args, tuple):self.cursor.execute(sql, args)self.conn.commit() 2、通過與其他已知類型的常量進行對比(type()&…

svn圖標的含義

http://www.cnblogs.com/genhaosan/articles/5129791.html 轉載于:https://www.cnblogs.com/wangc04/p/6400477.html

基于事件的視覺傳感器

在之前的文章里 人工智能與圖像傳感器_滄海一升的博客-CSDN博客_人工智能和傳感器的關系第一類是圖像傳感器與人工智能計算相結合,即圖像傳感器模組除了可以輸出圖像之外,還可以直接輸出人工智能算法計算的結果。另一類智能圖像傳感器則是為人工智能應用專門設計的圖像傳感器…

RocketMQ多Master多Slave模式部署

每個 Master 配置一個 Slave,有多對Master-Slave,HA采用同步雙寫方式,主備都寫成功,向應用返回成功。 優點:數據與服務都無單點,Master宕機情況下,消息無延遲,服務可用性與數據可用性…

FPGA的ip核之概念和分類

ip核之概念和分類 IP(Intellectual Property)內核模塊是一種預先設計好的甚至已經過驗證的具有某種確定功能的集成電路、器件或部件。它有幾種不同形式。IP內核模塊有行為(behavior)、結構(structure)和物理…

codeforces 1045 D. Interstellar battle

題目大意:一顆樹,給定每個點消失的概率,求出連通塊的期望值。要求支持修改消失概率的操作并且給出每次修改過后的期望值。注意被破壞的點不能算入連通塊中。 數據范圍,時限1S。 傳送門 D. Interstellar battle 我們考慮做有根樹的…

RecyclerView(滾動控件)的用法

1.首先在build.gradle中添加依賴庫 compile com.android.support:recyclerview-v7:24.2.1 2.修改activity_main.xml <LinearLayout ......<android.support.v7.widget.RecyclerViewandroid:id"id/recycler_view"android:layout_width"maych_parent"a…

Verilog中case(1‘b1)的使用說明

在用Verilog進行RTL代碼編寫的時候基本不會用到case(1‘b1)&#xff0c;而且一般的語法說明也如下&#xff1a; case(case_expr)condition1 : true_statement1 ;condition2 : true_statement2 ;……default : default_sta…

Cookie中文存儲頁面500問題

前段時間做cookie存儲&#xff0c;直接用的菜鳥教程中的cookie設置方法&#xff0c;方法如下&#xff1a; function setCookie(cname,cvalue,exdays) {var d new Date();d.setTime(d.getTime()(exdays*24*60*60*1000));var expires "expires"d.toGMTString();docum…

Behave用戶自定義數據類型

在step句子中, 所有的參數默認是string類型, 如果用戶想使用復雜的或者其他數據類型, 就需要了解以下bahave中的數據類型. behave的數據類型轉換器是在parse和cfparse中支持. parse模塊是string.format的逆函數. parse_type是基于parse的擴展, 簡化了自定義數據類型的產生. pa…

IC Compiler指南——數據準備

一、概述 ICC數據設置的文件關系框圖如圖&#xff1a; 后端工具在數據設置階段需要對兩大類數據進行設置&#xff0c;包括從前端設計繼承的綜合數據 以及后端設計需要的物理數據。 綜合數據主要包括前端邏輯綜合已經設置過的邏輯與時序庫文件、設計約束文件sdc以 及綜合網表文…

iOS Xcode全面剖析

前言 前幾天在公司內部做了一次關于iOS的入門分享&#xff0c;聽眾有PHP、Web、Android、測試、產品、UI等&#xff0c;主旨是力求不懂iOS的人能了解iOS的開發流程&#xff0c;聽后都能創建一個iOS項目并打印HelloWorld。&#xff08;這是背景&#xff09;你想想就這么點需求&a…