一千萬個為什麽

搜索

在快節奏的機構中進行軟件開發和部署的方法



背景:</強>

三個月前,我被要求為一個相當大的機構做一個兼職工作,有40〜50名員工。

我到這裏的時候事情很混亂。整個開發團隊一個月前已經被另一家公司聘用,而且還有很多逾期的工作。我在這裏約三個星期的自由職業,直到他們雇用我。從那時起,我一直在努力解決問題,並且有很多事情要做,所以我不得不放手讓程序專註於交付軟件。

現在,三個月後,塵埃終於平息下來,現在我期待著實施良好的開發實踐和方法,混合開發,部署和項目管理。

情景:</強>

我們有幾個不同的客戶,其中大多數都有自己的服務器。其中一些人擁有自己的基礎設施團隊來處理他們的服務器。項目采用不同的語言,我對客戶端的服務器幾乎沒有控制權。

在整個一天中,可能會向不同的客戶提出一些要求,我必須盡快提供。

結論:</強>

我必須盡快提供,但我想用一種方法去做,因為我知道,如果我只是在沒有適當控制的情況下繼續做下去,有些事情肯定會比以後出錯。

我的兩分錢

我打算做的第一件事之一是選擇一個首選的開發語言和框架,所以我們可以專註於某些事情。除此之外,我不知道該怎麽做。

轉載註明原文: 在快節奏的機構中進行軟件開發和部署的方法

一共有 1 個回答:

在開發過程中,您應該考慮使用敏捷方法。這是廣泛使用的軟件開發方法並且已經證明了自己。在敏捷方法的範圍內, Pair編程將允許您將其他開發人員合並,以協助當你準備好時,你的項目會發現你有更多的工作可以處理。然後,您可以采用標準敏捷方法,如scrum/kanban/scrumban (或繼續結對編程如果你覺得你喜歡它!)

選擇此方法的一個特別原因是,它適合DevOps和持續集成。實際上,可以將DevOps描述為實現敏捷方法的具體方式。敏捷的叠代式,增量式和漸進式哲學以及非常短的反饋循環和適應循環精美地結婚 a>與DevOps /持續集成,並為構建提供堅實的基礎。

在該機構中,我們也有一個基礎架構團隊,可以設置我們自己的內部或外部服務器來處理事情。

與基礎設施團隊成為好朋友。讓他們盡早且經常參與,並將他們推向

基礎架構/代碼配置理念,這將允許您與他們密切合作。雖然看起來手動更快,但這樣做是為了創建技術債務。在升級的幾年內,沒有人會記得它是如何構建的。它也將使基礎設施團隊看起來不錯。在部署過程中,他們再也不會犯錯誤或忘記一個步驟。無論是部署代碼工作還是不工作,部署代碼的部署方式都與測試/臨時部署的部署方式完全相同 - 使部署和升級變得輕松簡便,水平擴展輕而易舉。忽略這些技術也會減慢你的開發速度。如果你可以啟動一個新的服務器,讓它下拉(並編譯)你最新的git commit,運行一個自動化的測試套件,然後通過E-mail給你結果,而你去做別的事情,這是一個巨大的節省時間。

如果可以的話,利用雲 - 例如亞馬遜,很多工具都是已經為您建成了一>。雖然這可能會讓您的基礎設施團隊持續不斷,但只要提醒他們雲就是別人的電腦。所有的雲都會為您提供硬件。它仍然需要來自基礎架構團隊的人員安裝維護和操作。它可以讓你避免可伸縮性問題。數據庫問題,存儲和備份問題以及令人頭疼的問題現在已經外包。

我無法控制客戶端的服務器。

看看你能做些什麽。考慮利用諸如福爾曼的Katello場景這樣的工具(我喜歡親自部署Salt Stack - 我不'像紅寶石),這將允許您管理和幾乎任何鐵或雲(包括裸機),使用Salt Stack,Chef,Puppet或Ansible管理主機的配置,管理您的Docker容器並管理機器的更新。這將允許您輕松地將代碼提供給客戶端,以便A)自動化或B)手動部署其更新和部署。一旦你已經證明了這種方法為你提供的速度和效率的價值,你或許可以簡單地使用這些相同的工具為你的客戶產生一個這個堆棧的副本來管理他們的環境,或者你可以談話/向上銷售你的客戶讓您管理這些部署 - Foreman將允許您配置站點和組織(以及與FreeIPA配對的管理員用戶),以便配置多租戶。該項目由Red Hat支持和支持

如果您對上述內容有任何疑問,我建議您選擇復制“鳳凰項目“的有聲讀物,這很好地說明了上述的價值和好處。

我打算做的第一件事之一是選擇一個首選的開發語言和框架

如果你走這條路線,只要確保標準化的語言與REST搭配很好 DevOps的東西使用這個接口。

最後,

整個開發團隊已經被另一家公司聘用 - 他們也沒有一個堅實的流程,只有幾個人在這裏和那裏

盡你所能將這些合並到一個地方。它會讓你的生活變得更輕松。