-1

現在我們正在和Jenkins一起作爲我們的CI和CD,我們也在使用敏捷方法(衝刺)。我想知道如何管理我的軟件版本。如何使用微服務管理持續交付?

例如,我們正在開發一個商業購物網站。該開發由一個消耗3個微服務的應用程序組成。

組件:

應用:是對用戶界面
微服務1:銷售
微服務2:用戶
微服務3:產品的

初始狀態購物網站:

我們從頭開始開發購物網站。正如我之前所說的,我們正在使用敏捷方法論(Sprint)。

Sprint 1:
- 開發產品微服務。
- 開發用戶微服務。衝刺1


結束到這個時候,我只能應用於微服務的測試,如單元測試,測試的合同,等等。因爲我不具備的應用就緒我不能讓端到端測試或基於整個系統的功能測試,以及我不能部署到UAT環境(向用戶展示測試版),因爲用戶不能夠進行探索性測試。所以現在我需要等到應用程序和銷售微服務完成後,才能向用戶展示測試版本並應用任何其他類型的測試。

Sprint 2:
- 開發銷售微服務。
- 開發應用程序。
衝刺結束2

既然所有組件都需要完成來完成用戶需求,我們可以繼續使用管道。在向用戶展示測試版之前,應用所需的所有測試。

因此,百萬美元的問題是,你如何與Jenkins和GitLab做這個場景?

我明白,微服務應該獨立於系統中的每個組件,但最終整個系統相互依賴,例如,如果我添加一個新的微服務,如「運輸」,這個新功能應該是這意味着在發佈新系統之前,我依賴於「運送」微服務和應用程序接口,因爲如果沒有這兩項開發,我就無法在部署到生產之前完全測試用戶要求。

P.S.我很抱歉在這篇文章中有任何混淆,但我在這個主題上補充了新的內容。

+0

我不認爲你正在使用微服務,「應用程序」將取決於微服務似乎很奇怪。此外,你不清楚你在問什麼,你應該編輯你的問題,以更具體地說明你想要做什麼,命名你的工作,告訴我們應該先跑哪個工作,等等。 – Pom12

+0

@ Pom12謝謝你的迴應,對於缺乏細節抱歉,我只是改變了描述。我希望更好,我會很感激你的幫助,因爲你知道我在這個話題上有點迷失。 –

回答

0

微服務的「獨立」方面在這裏很重要。基本上,您應該能夠將每項服務視爲獨立應用程序,並且您的UI不應該依賴銷售/用戶/產品服務作爲「庫」(例如C#DLL,Java Jars等),而應該使用某種API(例如REST API)相互調用。

爲了說明這個區別,你不應該有這樣的:

enter image description here

但是相反,你應該有這樣的事情。

enter image description here

現在讓我們假設你在美妙的微服務世界,你的用戶界面和各個服務之間的REST API。

在詹金斯,它變得相當簡單。對於每項服務(+主應用程序),您需要一份編譯,測試並在目標服務器上部署您的服務的作業。

enter image description here

只要你的服務是獨立的,如果你處理的應用程序正確versionning,你不應該需要任何你詹金斯的工作之間的任何類型的同步。

當然,構建/測試/部署過程將在一個通用管道文件中進行外部化,以便您可以在不同的作業中重複使用它。在提交使用新銷售端點的UI部分之前,只需在銷售服務中提交新的API端點......但我認爲這只是常識!

如果您是詹金斯新人,一個好的開始是pipeline documentation

+0

非常感謝您的解釋。所以爲了檢查我是否理解,首先提交哪個組件的決定應該由人來完成,詹金斯無法管理這一點。 –

+0

確實。詹金斯只是一個CI工具,它可以自動執行一些操作(構建/測試/部署),但決不能推動您編寫代碼或構建代碼的方式。 – Pom12