摘要:開場白作為一個技術團隊的,你是如何保證成員的開發環境達到公司的標準,或者是你定制的最低要求的如果你的回答是差不多就行了,有問題再說,那么,你已經在給自己挖坑了。好的,成員們開始構建你定制的開發環境了。
開場白
作為一個技術團隊的Leader,你是如何保證成員的開發環境達到公司的標準,或者是你定制的最低要求的?
如果你的回答是:差不多就行了,有問題再說,那么,你已經在給自己挖坑了。
同事A的開發環境中用的是PHP 7.1,所以他在代碼里寫了這么一個函數:
function getName(?int $id): string { return "name"; }
好的,?int 的意思是你的參數必須是數字,但是可以填一個數字以外的特殊類型,那就是null。
同事B用的是PHP 7.0,那么抱歉,他得這么改:
function getName(int $id = null): string { return "name"; }
?int需要被改成int,因為那是7.1的Nullable語法
同事C用的是 PHP 5.6,好的,繼續改吧:
function getName($id = null) { return "name"; }
所有的類型定義都得移除,沮喪嗎?
好的,你作為Leader?怎么選擇用哪個同事的代碼作為最終輸出?可想而知,選擇哪個都不合適。
同事C 在抱怨,要那么高的版本真的好嗎?我沒用過新特性,也不感興趣。
同事A 在抱怨了,新語法多簡潔啊,一個 ?int 就搞定了。
同事A/B 在抱怨,為什么不用強類型,寫代碼太沒樂趣了。
問題出在Leader,給了成員太多的選擇。會有什么后果?
優點 | 缺點 |
---|---|
無 | 部分成員的利益受損 |
內部意見不統一,產生隔閡 | |
可能出現被動學習新知識,生產力下降 | |
維護多個不同時期的項目時,本地環境的版本切換十分不方便 | |
你的領導能力受到質疑 |
在誘惑面前,人們往往會選擇最有利于自己的方式。不要試圖去挑戰人性,作為Leader的你,必須比任何一個成員都先做出選擇。正題 Docker
我不想講docker是什么,因為其他人的博客里已經寫爛了。
你需要知道的是,你可以把開發環境扔進docker,然后讓每個成員忘記自己電腦里的開發環境。至于用了什么版本的php、mysql、linux、nginx、nodeJs,已經固定在docker里了。
你再也不用擔心你的成員會用其他版本的環境去寫代碼了,因為你已經制定了你的規矩。
優點 | 缺點 |
---|---|
成員沒得選,只能用同一個版本的環境 | Leader需要寫Docker配置 |
成員只需要知道docker怎么啟動,零學習成本 | |
技術方面的交流障礙減少 | |
代碼符合項目的基本需求,生產力提升 | |
即使再多項目也沒關系,因為每個項目都是docker啟動,不需要考慮版本 | |
Leader可以花更多精力在其它事情了 |
也許你已經寫完了所有的Dockerfile配置,并把這些文件放進了項目的根目錄dockers/,同時為你的成員寫好了一個構建腳本build.sh,接著加入版本控制(git,svn),最后推到git服務器等待成員拉取最新的開發環境。好的,成員們開始構建你定制的開發環境了。
# 構建鏡像 sh build.sh # 查看構建的鏡像 docker images # 根據鏡像生成容器,僅供參考。本文不講述docker具體用法 docker run -it -d php:7.1 /bin/bash docker run -it -d nginx:1.14.0 /bin/bash docker run -it -d mysql:5.7 /bin/bash
犀利的你可能把生成容器的操作寫成一個腳本quick-start.sh,而且用的風聲水起。筆者拍拍你的肩膀,同學,為什么不用docker-dompose呢?
Docker Compose可以這么說吧,這個東西就像是同時啟動了多個你想要啟動的鏡像,而且你還可以同時結束生成的容器。
# 同時啟動 docker-compose up # 同時結束 docker-compose down
是的,很任性,你只需要配置一下你需要啟動哪些鏡像,然后把配置放到根目錄docker-dompose.yml中即可。
當然了,還有更多特性,比如 哪些容器之間需要互相關聯,被關聯的容器要用什么別名,需不需要等待關聯容器啟動完成之后再啟動自己,等等。。。
如果您的項目比較多,那么推薦您利用git的子模塊(點擊訪問)去維護你的docker配置。這樣您改配置只要改一個地方,所有項目里面都會同步過去的,極大的提高了您的效率和維護成本。
# 假設已經建好docker的git倉庫 git@git_repository_a # 那么在您的開發項目中,初始化只需這樣做: git submodule add git@git_repository_a # 您會發現項目根目錄多了一個文件 .gitmodules 以及多了一個docker倉庫的文件夾結語
可能不算是一篇技術文章,只是拋磚引玉,引導新的Leader怎么帶領團隊走向正規化的道路。若是真要寫那么細,可能10篇都不夠寫了。有什么技術方面的問題可以在下方留言。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27339.html
摘要:容器云架構方案。容器云架構方案基于容器技術,運維技術團隊開發了五阿哥網站的容器云平臺。多云對接私有云和公有云進行統一托管,包含網絡區域配置,實例開通及的環境初始化配置等。技術選型及實踐鏡像標準眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(www.wuage.com)是由鋼鐵行業第一的中國五礦與互聯網第一的阿里巴巴聯手打造,并充分運用雙方股東優勢資源,即:阿里巴巴在大數據、電商運...
摘要:問能否談一下迅雷云使用的過程其實最初的時候,迅雷團隊對是懷有謹慎的態度的。三調度算法是迅雷云定制優化的。迅雷在使用這方面一直沒有把數據層面交給迅雷云之外的系統。 非商業轉載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/201256 曾金龍就職于迅雷網絡,是國內覆蓋面最廣的迅雷P2P引擎核心研發成員。他畢業于中山大...
摘要:摘要在北京云棲大會上,阿里巴巴高級技術專家陳鑫花名神秀,給大家帶來了億背后的企業級高效持續交付,引起強烈共鳴。 摘要: 在2017北京云棲大會上,阿里巴巴高級技術專家陳鑫(花名神秀),給大家帶來了《1682億背后的企業級高效持續交付》,引起強烈共鳴。神秀從技術負責人關心的研發流程混亂、質量無法保障、環境管理低效、資源浪費等方面,結合阿里巴巴的DevOps實踐,深度解析了企業級持續交付如...
摘要:是宜信公司大數據創新中心開發的開源平臺。為宜信大數據創新中心各個團隊提供了統一的測試和生產環境,簡化了服務的部署與上線流程,也降低了運維人員對系統管理的復雜度。基于容器技術,面向多樣化的技術棧,并且天然隔離系統和應用的依賴。 LAIN是宜信公司大數據創新中心開發的開源PaaS平臺。在金融的場景下,LAIN 是為解放各個團隊和業務線的生產力而設計的一個云平臺。LAIN 為宜信大數據創新中...
摘要:分享實錄云計算技術源于互聯網公司,現在云計算已經是下一代企業級的發展趨勢。如何做云計算一直是云計算技術的領導者。互聯網公司的快速發展,已經印證了云計算技術和云原生應用相比傳統構架的巨大優勢。 今天小數又給大家帶來一篇干貨滿滿的分享——來自KVM社區線上群分享的實錄,分享嘉賓是數人云CEO王璞,題目是《云計算與 Cloud Native》。這是數人云在KVM社區群分享的第一彈,之后還有數...
閱讀 3572·2021-10-11 10:59
閱讀 1591·2021-09-29 09:35
閱讀 2259·2021-09-26 09:46
閱讀 3770·2021-09-10 10:50
閱讀 952·2019-08-29 12:17
閱讀 821·2019-08-26 13:40
閱讀 2433·2019-08-26 11:44
閱讀 2103·2019-08-26 11:22