CTO訓(xùn)練營(yíng)第二季畢設(shè):初創(chuàng)團(tuán)隊(duì)工程能力建設(shè)
原創(chuàng)【51CTO.com原創(chuàng)稿件】
導(dǎo)語(yǔ):CTO訓(xùn)練營(yíng)第二季已經(jīng)圓滿收官,作為一個(gè)學(xué)習(xí)分享和社交的平臺(tái),CTO訓(xùn)練營(yíng)提供的不光是知識(shí)分享,還有一個(gè)屬于技術(shù)管理者的人脈圈子。結(jié)課之后,第二季學(xué)員提交了畢業(yè)設(shè)計(jì),來(lái)對(duì)四個(gè)月以來(lái)的學(xué)習(xí)進(jìn)行總結(jié)與回顧,部分論文由CTO導(dǎo)師進(jìn)行點(diǎn)評(píng)和打分。
初創(chuàng)團(tuán)隊(duì)工程能力建設(shè) 李德強(qiáng) 上海云盾高級(jí)工程師
一、公司介紹
進(jìn)入某互聯(lián)網(wǎng)金融公司時(shí),公司成立只有創(chuàng)業(yè)4個(gè)月的時(shí)間,因公司定位于金融P2P對(duì)接電影產(chǎn)業(yè),在不到一年的時(shí)間內(nèi)研發(fā)團(tuán)隊(duì)從十幾人迅速擴(kuò)大為一百多人。工作中負(fù)責(zé)過(guò)運(yùn)維,項(xiàng)目研發(fā),架構(gòu)等工作。
因?yàn)槭浅鮿?chuàng)型公司,當(dāng)時(shí)很多的制度、技術(shù)、人員等不健全,主要表現(xiàn)為下:
團(tuán)隊(duì)成員以初級(jí)為主,多是工作1-2年的程序員,工作時(shí)間最長(zhǎng)的也不超過(guò)4年
原始而笨拙的技術(shù),F(xiàn)TP代碼發(fā)布系統(tǒng),服務(wù)器管理混亂,毫無(wú)體系可言
業(yè)務(wù)系統(tǒng)是基于開(kāi)源及購(gòu)買(mǎi)的商業(yè)系統(tǒng),系統(tǒng)與業(yè)務(wù)脫節(jié)
研發(fā)中產(chǎn)品,測(cè)試等角色缺失
二、團(tuán)隊(duì)發(fā)展
在項(xiàng)目研發(fā)過(guò)程中,早期PHP研發(fā)是4個(gè)人,分成WEB,APP,業(yè)務(wù)、后臺(tái)四個(gè)系統(tǒng)。后期隨著業(yè)務(wù)的發(fā)展,接入多家合作方,同時(shí)將用戶(hù)、票務(wù)、卡券,緩存,API等拆分成獨(dú)立的子系統(tǒng)。因采用阿里云服務(wù)器所帶來(lái)的存儲(chǔ)性能問(wèn)題,而對(duì)數(shù)據(jù)庫(kù)進(jìn)行了分庫(kù)分表升級(jí)。電影業(yè)務(wù)相關(guān)的技術(shù)人員,包括后端研發(fā),前端,測(cè)試,APP等擴(kuò)大為近50人的團(tuán)隊(duì)。
業(yè)務(wù)在發(fā)展的過(guò)程中,進(jìn)行團(tuán)隊(duì)管理,做了如下工作:
加強(qiáng)流程管理,規(guī)范各部門(mén)之間的工作流程,引入禪道項(xiàng)目管理系統(tǒng),標(biāo)準(zhǔn)化各部門(mén)之間工作的輸入輸出。
推動(dòng)運(yùn)維實(shí)施自動(dòng)化,標(biāo)準(zhǔn)化等工作,建立相應(yīng)的運(yùn)維規(guī)范。服務(wù)器的安裝以腳本化與鏡像為主。搭建全新的版本管理系統(tǒng),代碼發(fā)布系統(tǒng),監(jiān)控系統(tǒng)。
定期晨會(huì)、周會(huì),以敏捷的方式推進(jìn)工作,及時(shí)發(fā)現(xiàn)問(wèn)題及時(shí)處理。
組建了架構(gòu)組,承擔(dān)基礎(chǔ)的技術(shù)預(yù)研工作,為重大的技術(shù)升級(jí)保駕護(hù)航。
定期分享,做到知識(shí)共享。
團(tuán)隊(duì)拆分,根據(jù)業(yè)務(wù)的發(fā)展,將團(tuán)隊(duì)拆分成職責(zé)清晰的小團(tuán)隊(duì)。
三、問(wèn)題反思
在業(yè)務(wù)發(fā)展的工作中,雖然做了很多的工作,但還是有很多不足的地方,總結(jié)如下:
項(xiàng)目管理中,部分工作流程,代碼規(guī)范,有制定,沒(méi)監(jiān)督,沒(méi)執(zhí)行。
上線前沒(méi)有做好代碼質(zhì)量檢查,不良的代碼經(jīng)常導(dǎo)致線上bug。
系統(tǒng)進(jìn)行拆分及分庫(kù)分表升級(jí)后,與之相對(duì)應(yīng)的維護(hù)成本迅速增加。
自動(dòng)化運(yùn)維不足,在服務(wù)器管理,環(huán)境部署,權(quán)限管理等方面相對(duì)不足。
業(yè)務(wù)發(fā)展,需求增多,研發(fā)人員增加,研發(fā),測(cè)試,上線,線上問(wèn)題排查等各環(huán)節(jié)的時(shí)間成本越來(lái)越大。
四、解決方案
根據(jù)在訓(xùn)練營(yíng)中學(xué)到的知識(shí),在組織管理及團(tuán)隊(duì)的工程能力方面都需要加強(qiáng)。但對(duì)于目前的問(wèn)題,更傾向于用系統(tǒng)解決問(wèn)題,組織架構(gòu)管理輔助,避免過(guò)度的依賴(lài)人,因?yàn)槿耸怯卸栊缘模鬃兊模到y(tǒng)是不變的。提高團(tuán)隊(duì)的工程能力,針對(duì)出現(xiàn)的問(wèn)題構(gòu)建各種自動(dòng)化的系統(tǒng)是更靠譜的一件事。工程能力就是用工具化,系統(tǒng)化,自動(dòng)化的方式解決工作中遇到的各種問(wèn)題,提高工作效率的能力。
4.1解決認(rèn)識(shí)問(wèn)題
工程能力與業(yè)務(wù)開(kāi)發(fā)是兩種不同的思維能力。業(yè)務(wù)開(kāi)發(fā)側(cè)重于滿足需求,快速滿足需求是業(yè)務(wù)發(fā)展的關(guān)鍵。而工程能力更側(cè)重于規(guī)則,工具思維,系統(tǒng)性思維,自動(dòng)化思維,將重復(fù)的事情交給自動(dòng)化的工具來(lái)完成,用系統(tǒng)來(lái)減少人為失誤。
工作價(jià)值問(wèn)題。改變研發(fā)人員原有的工作習(xí)慣,從自身來(lái)看,極易影響工作效率,遇到抵觸。首先要結(jié)合當(dāng)前工作中的問(wèn)題,失誤,痛點(diǎn)講解系統(tǒng)化的工程帶來(lái)的好處。結(jié)合研發(fā)人員個(gè)人的興趣愛(ài)好,將要實(shí)施的項(xiàng)目與個(gè)人的價(jià)值結(jié)合起來(lái),樹(shù)立共同的目標(biāo)。讓研發(fā)人員覺(jué)得這事值得做。
系統(tǒng)性認(rèn)識(shí)團(tuán)隊(duì)及技術(shù)體系中的需要。隨著團(tuán)隊(duì)的增大,部門(mén)之間的合作及溝通需求越來(lái)越大,溝通成本也越來(lái)越高;隨著系統(tǒng)的拆分,擴(kuò)展,各系統(tǒng)之間的管理,也需要通過(guò)工具化,系統(tǒng)化的方式來(lái)化解架構(gòu)升級(jí)帶來(lái)的復(fù)雜性問(wèn)題。每月兩次,技術(shù)團(tuán)隊(duì)的痛點(diǎn)分析,方案研討,前景講解會(huì)議能有效解決團(tuán)隊(duì)的系統(tǒng)性認(rèn)識(shí)問(wèn)題。讓團(tuán)隊(duì)所有人明白,做什么樣報(bào)系統(tǒng),解決什么樣的問(wèn)題。
技術(shù)方案及工作前景不清晰問(wèn)題。請(qǐng)外部的大牛到公司做技術(shù)交流,將成熟的解決方案清晰的程現(xiàn)給團(tuán)隊(duì),提高團(tuán)隊(duì)在認(rèn)識(shí)能力,消除團(tuán)隊(duì)成員在認(rèn)知上的分歧。讓大家了解什么樣方案是好的方案。
4.2、解決人的問(wèn)題
人的問(wèn)題既包括A+類(lèi)人才的缺失,經(jīng)驗(yàn)豐富研發(fā)人員的不足,也包括組織架構(gòu)上的不合理。
提高知名高,吸引人才加入。提高自己及公司在互聯(lián)網(wǎng)技術(shù)圈的知名度,吸引更優(yōu)秀的人才加入。提高知名度的方法有活躍于互聯(lián)網(wǎng)技術(shù)社交網(wǎng)站,如到知乎答題等;進(jìn)行公開(kāi)的技術(shù)分享,提高外部人才對(duì)自己公司業(yè)務(wù)及技術(shù)體系的認(rèn)識(shí);開(kāi)通公司及個(gè)人的技術(shù)公眾號(hào)或博客,將經(jīng)驗(yàn)輸出。
從招聘入手,選擇A+類(lèi)人才加入。A+類(lèi)人才的標(biāo)準(zhǔn)包括需要有開(kāi)朗的性格,樂(lè)于溝通,高效率的工作,有良好的教育背景,有成功的項(xiàng)目實(shí)施經(jīng)驗(yàn)。A+類(lèi)人才不好招,寧缺勿濫。
在沒(méi)有足夠人才的情況下,從現(xiàn)有人才入手,選擇次優(yōu)的人,針對(duì)性的進(jìn)行培養(yǎng),解決當(dāng)前業(yè)務(wù)中的痛點(diǎn)。現(xiàn)有人才中,雖然不及A+類(lèi)人才,但在工作效率上還是很不錯(cuò)的,缺乏的是認(rèn)識(shí)、經(jīng)驗(yàn)與視野。有針對(duì)性的講解,訓(xùn)練,提升還是很大的,而且性?xún)r(jià)比高。
在組織架構(gòu)上設(shè)立專(zhuān)屬項(xiàng)目組,投入資源進(jìn)行系統(tǒng)研發(fā)。
4.3、系統(tǒng)方案
方案設(shè)計(jì)是以節(jié)約資源為前提,充分利用各種開(kāi)源或商業(yè)的工具,聯(lián)接業(yè)務(wù)及組織中的各種角色,解決技術(shù)及管理上的痛點(diǎn)。整個(gè)系統(tǒng)分為5個(gè)了系統(tǒng),分別是:
運(yùn)維平臺(tái):實(shí)施服務(wù)器標(biāo)準(zhǔn)化,可配置化,基于ansible實(shí)現(xiàn)自動(dòng)化部署。日常測(cè)試使用的開(kāi)發(fā)環(huán)境,測(cè)試環(huán)境,預(yù)發(fā)布環(huán)境基于docker實(shí)現(xiàn),可方便進(jìn)行快速部署,回歸測(cè)試。基于openldap做權(quán)限管理,可便于接入各種開(kāi)源系統(tǒng)。基于zabbix實(shí)現(xiàn)服務(wù)器監(jiān)控。基于jumpserver實(shí)現(xiàn)堡壘機(jī)功能,資產(chǎn)管理與審核功能。基于jumpserver二次開(kāi)發(fā),擴(kuò)展成自己的運(yùn)維平臺(tái)。
日志平臺(tái):使用 logstash進(jìn)行日志數(shù)據(jù)收集,Elasticsearch進(jìn)行日志數(shù)據(jù)處理,Kibana 實(shí)現(xiàn)數(shù)據(jù)可視化,基于Elasticsearch實(shí)現(xiàn)異常日志排查。
版本管理工具:選擇gitlab,因其具有web界面,良好的權(quán)限控制,方便進(jìn)行代碼review。
持續(xù)集成工具:選擇jenkins,結(jié)合git plugin與gitlab webhook插件,可實(shí)現(xiàn)代碼的持續(xù)集成;使用sonarqube 進(jìn)行自動(dòng)化的代碼質(zhì)量檢查。
項(xiàng)目管理系統(tǒng):使用jira進(jìn)行項(xiàng)目管理,因?yàn)閖ira穩(wěn)定成熟,功能豐富。
4.4、方案落地
因?yàn)椴捎瞄_(kāi)源的工具,方案落地,相對(duì)而言不會(huì)很困難。整個(gè)項(xiàng)目預(yù)估3個(gè)月,分五個(gè)階段實(shí)施:
***階段:openldap,gitlab、jira等基礎(chǔ)環(huán)境的安裝;git遷移到gitlab;制作jira的使用教程,組織***個(gè)小型項(xiàng)目,遷移試用。預(yù)計(jì)2周。
第二階段:部署elk,配置elk抽取各種日志,實(shí)現(xiàn)基本的日志分析處理。部署zabbix監(jiān)控系統(tǒng)。預(yù)計(jì)兩周。
第三階段:制定服務(wù)器規(guī)范;部署jumpserver,實(shí)現(xiàn)堡壘機(jī)功能;基于ansible實(shí)現(xiàn)軟件的自動(dòng)化安裝;基于docker,快速部署多套業(yè)務(wù)環(huán)境;配置jenkins,實(shí)現(xiàn)多套環(huán)境之間的代碼持續(xù)集成,代碼提交后的自動(dòng)化檢查。預(yù)計(jì)一個(gè)月時(shí)間。
第四階段:jumpserver是基于django開(kāi)發(fā)的一個(gè)可視化的堡壘機(jī)系統(tǒng)。基于jumpserver進(jìn)行二次開(kāi)發(fā),做成自己的運(yùn)維平臺(tái)。集成openldap的用戶(hù)管理功能,實(shí)現(xiàn)界面化操作;集成軟件的自動(dòng)化安裝功能,多套環(huán)境的部署及重復(fù)部署實(shí)現(xiàn)界面化操作;聯(lián)接ELK,實(shí)現(xiàn)異常定位排查。預(yù)計(jì)一個(gè)月時(shí)間。
第五階段:持續(xù)改進(jìn)運(yùn)維平臺(tái),實(shí)現(xiàn)服務(wù)器的一切操作可視化,自動(dòng)化,減不人為帶來(lái)的不必要的麻煩。
4.5、管理協(xié)助
只依靠系統(tǒng)自動(dòng)化不一定能提高團(tuán)隊(duì)個(gè)人的工作能力及工程能力,但系統(tǒng)卻能將以前無(wú)法量化的工作進(jìn)行量化,以數(shù)字化的形式將個(gè)人的工程能力呈現(xiàn)出來(lái),以此作為考核指標(biāo),將有助于團(tuán)隊(duì)提高個(gè)人能力,培養(yǎng)以結(jié)果為導(dǎo)向的文化,提高執(zhí)行力。可以基于兩項(xiàng)報(bào)告作為考核的依據(jù):
Jira的任務(wù)完成程度報(bào)告,考核員工的執(zhí)行力
Sonarqube的代碼質(zhì)量檢查報(bào)告,考核員工的工程能力
五、總結(jié)
來(lái)訓(xùn)練營(yíng)的這4個(gè)月時(shí)間,讓我認(rèn)識(shí)了很多的朋友,與導(dǎo)師及同學(xué)的交流討論讓我開(kāi)闊了視野,不同思維方式的碰撞讓我看到了自己的不足,體系化的課程也讓我看到自己能力的片面性,也努力的方向。感謝這么長(zhǎng)時(shí)間以來(lái)51CTO的精心組織,感謝一起度過(guò)這4個(gè)月的導(dǎo)師,同學(xué)。
導(dǎo)師點(diǎn)評(píng):前阿姨幫CTO左文建
評(píng)分:90
評(píng)語(yǔ):思路清晰,分析問(wèn)題深入,方法對(duì)路。 不過(guò)知易行難,工程能力的提升,需要團(tuán)隊(duì)付出長(zhǎng)期的努力。相比事而言,更難是尋找人才。在方向正確下,只要努力就會(huì)有希望,有結(jié)果。 加油!
CTO訓(xùn)練營(yíng)是51CTO高招主辦,面向中高端技術(shù)管理者的學(xué)習(xí)分享及社交平臺(tái),匯集業(yè)界資深技術(shù)高管、投資人資源,以“打造技術(shù)經(jīng)理的MBA”為核心,全心全力幫助中國(guó)***潛力的技術(shù)管理者,成長(zhǎng)為未來(lái)技術(shù)領(lǐng)域的***及榜樣。第三季CTO訓(xùn)練營(yíng)將在原有優(yōu)質(zhì)內(nèi)容體系的基礎(chǔ)上,延伸四大選修活動(dòng),滿足不同技術(shù)管理者的個(gè)性化需求。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】