91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么微服務(wù)實施那么難_綜合解決微服務(wù)實施難點的措施

lhl545545 ? 來源:電子發(fā)燒友網(wǎng) ? 2018-02-07 16:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么微服務(wù)實施那么難

難點1:“一步到位”的認(rèn)知錯覺

這些年微服務(wù)大紅大紫,但是真正能夠拿出來做為可實踐的案例少之又少。大部分的微服務(wù)案例只能看到微服務(wù)架構(gòu)的“演進(jìn)結(jié)果”,但是看不到微服務(wù)架構(gòu)的“演進(jìn)過程”。這就像每個人看到一個架構(gòu)的高峰,卻沒有看到攀登高峰的路徑。

這就給很多架構(gòu)師一個假象:微服務(wù)的架構(gòu)是通過能力極高的架構(gòu)師一步到位設(shè)計出來的。

這和很多團(tuán)隊自上而下的架構(gòu)設(shè)計感受和相似。于是架構(gòu)師們蜂擁而至,各種分析方法論層出不窮,討論和分享絡(luò)繹不絕。然而真正落地實施的卻很少,使得微服務(wù)在網(wǎng)絡(luò)上慢慢變成了一種“玄學(xué)”:微服務(wù)的實施在“理論研究”的階段。

這違反了軟件架構(gòu)的最基本規(guī)律:架構(gòu)是解決當(dāng)前的需求和痛點演進(jìn)的,而無法對沒有出現(xiàn)的問題和痛點進(jìn)行設(shè)計。因此,一步到位的整體的微服務(wù)架構(gòu)設(shè)計完全沒有必要。況且一個集中化的設(shè)計,很難體現(xiàn)微服務(wù)的輕量級優(yōu)勢。

我相信技術(shù)的發(fā)展一定是向不斷降低成本的方向上發(fā)展的。如果新技術(shù)沒有降低成本反而提升了成本,要么這個新技術(shù)有問題,要么一定是姿勢不對,走錯了路。

因此,準(zhǔn)備實施微服務(wù)一定要有一個長期的思想準(zhǔn)備。不過跨過了最初的門檻之后,剩下的工作可以被復(fù)制而且速度會越來越快。

難點2:“架構(gòu)師精英主義”

很多產(chǎn)品對架構(gòu)師的依賴很大,即“架構(gòu)師精英主義”:認(rèn)為產(chǎn)品架構(gòu)只有這個組織的“技術(shù)精英”——架構(gòu)師才可以完成,而團(tuán)隊其它成員只需要實現(xiàn)架構(gòu)師的設(shè)計就可以。這是大型企業(yè)和大型系統(tǒng)的常見問題,這來源于長期的重量級企業(yè)級架構(gòu)習(xí)慣。

而微服務(wù)則類似于一種“敏捷邊際革命”:即由一個不超過2~8個人的小團(tuán)隊就可以完成的功能。而且這種規(guī)模的團(tuán)隊即使從整個產(chǎn)品團(tuán)隊移除也對整體產(chǎn)品的研發(fā)進(jìn)度沒有影響。因此,即使失敗了不會帶來太多的損失。不過,當(dāng)?shù)谝粋€微服務(wù)改造成功,那么成功經(jīng)驗的復(fù)制帶來的乘數(shù)效應(yīng)卻能帶來很大的收益。

從架構(gòu)改造投資的風(fēng)險收益比來看,這是非常劃算的。

因此,微服務(wù)團(tuán)隊完全沒必要大張旗鼓,只需要兩三個人就可以動工。但是,誰也沒有微服務(wù)的實踐經(jīng)驗啊,萬一失敗了怎么辦?

這就帶來了下一個難點。

難點3:缺乏一個信任并鼓勵創(chuàng)新的環(huán)境

面對未知的領(lǐng)域,失敗再所難免。而面對這個不確定性頻發(fā)的世界,成功和失敗往往不再重要:也許今天的失敗,明天再看就是成功,反之亦然。

成功意味只是表明結(jié)果符合自己的假設(shè)預(yù)期,而失敗僅僅意味著結(jié)果不符合自己的假設(shè)預(yù)期。但是無論成敗,我們都能從行動的過程中有所學(xué)習(xí)和反思,而這樣的經(jīng)驗才是研發(fā)活動中最有價值的。

然而,很多組織,尤其“精英主義”的產(chǎn)品團(tuán)隊,責(zé)任和壓力往往從上至下分解。由于組織龐大,金字塔的結(jié)構(gòu)往往會構(gòu)建一種以“不信任”為基礎(chǔ)的制度。這種制度往往營造了一種“寧可不作為,也不能犯錯”的文化。由于上層則需要對失敗負(fù)責(zé),使得任何創(chuàng)新只是一個停留在組織上層的想法,難以落實推進(jìn)。在這種情況下,組織的長期合作形成了穩(wěn)定的工作習(xí)慣和思維定勢,并形成了利益平衡,這會使得整個組織在面對創(chuàng)新的時候“卡殼”。

當(dāng)微服務(wù)以一種政治任務(wù)從上而下派發(fā)的時候,為了避免失敗,團(tuán)隊內(nèi)部會相互推諉。通過不斷的分析討論和設(shè)計來論證這個事情的難度。在我看來,只要想搞,就一定能找到辦法,而不是先設(shè)想出一堆還沒有遇到的問題和責(zé)任。在行進(jìn)中解決問題是比設(shè)計和討論更加有效率的方法。

而組織解決“卡殼”的辦法就是引入“背鍋俠”:例如新聘請的架構(gòu)師或外部咨詢師,來完成這個事情。出了問題就不用自己來承擔(dān)責(zé)任了。這樣雖然是解決問題的一種折中辦法,但可以讓事情毫無風(fēng)險的執(zhí)行下去。但這是一種短期效應(yīng),無法解決組織本身的創(chuàng)新窘境,長期依賴外部力量來解決最有價值的問題不會讓自己提升,反而形成了對外部力量的依賴。對于組織的凝聚力來說不是一件好事。

只有打破當(dāng)前的工作習(xí)慣和思維定勢,充分認(rèn)識到創(chuàng)新的困難、風(fēng)險以及價值的組織才可以占領(lǐng)創(chuàng)新的高點,吸引人才。

難點4:微服務(wù)技術(shù)棧的“選擇困難癥“

由于“精英主義”的架構(gòu)師需要擔(dān)負(fù)很大的責(zé)任并承擔(dān)著很重的壓力。他們必須要為微服務(wù)架構(gòu)謹(jǐn)慎的選擇技術(shù)棧。因此會在不同的技術(shù)棧之間不斷嘗試。對于習(xí)慣了在大型研發(fā)組織里“精心設(shè)計,加班生產(chǎn)”的架構(gòu)師而言?!伴L設(shè)計,慢反饋”節(jié)奏似乎是理所應(yīng)當(dāng)?shù)摹?/p>

微服務(wù)開源社區(qū)的快速發(fā)展滋長了“架構(gòu)師焦慮”:如果采用落后的技術(shù)會被同行鄙視,被不懂技術(shù)的老板鄙視,甚至被下屬鄙視。因此架構(gòu)師們疲于在各種新型的技術(shù)棧之間比較和學(xué)習(xí)。此外,不熟悉技術(shù)往往會增大風(fēng)險,架構(gòu)師就需要更多的時間研究。帶著“一步到位”的架構(gòu)幻想對微服務(wù)技術(shù)棧精挑細(xì)選。而不會采用現(xiàn)有低成本的方案快速迭代的解決問題。

微服務(wù)的核心在于采用“小規(guī)模,快反饋”的機(jī)制降低軟件系統(tǒng)的復(fù)雜性并通過虛擬和自動化技術(shù)分散風(fēng)險,從而可以快速面對市場變化帶來的各種挑戰(zhàn),并能夠快速銷售創(chuàng)新,獲得市場的反饋。而不僅僅是利用到了時下新興的語言,編程框架或工具。

學(xué)習(xí)和實踐是相輔相成的過程,在實踐的時候?qū)W習(xí),并把學(xué)習(xí)到的知識應(yīng)用到實踐中。而不是準(zhǔn)備一場考試,先停下來學(xué)習(xí),準(zhǔn)備好了再全力以赴。

以上四點會讓大型組織面對微服務(wù)實施的時候“卡殼”,而這往往會導(dǎo)致微服務(wù)實施容易忽略的最重要一點,我認(rèn)為也是核心的一點:

難點5:對微服務(wù)的技術(shù)變革估計過高,而對微服務(wù)帶來的組織變革估計嚴(yán)重不足

作為架構(gòu)師,永遠(yuǎn)要不要低估康威定理的威力: “設(shè)計系統(tǒng)的組織,其產(chǎn)生的設(shè)計和架構(gòu)等價于組織間的溝通結(jié)構(gòu)。”

從制度經(jīng)濟(jì)學(xué)角度上講,軟件產(chǎn)品本身就是企業(yè)內(nèi)部組織(員工)和外部組織(用戶)溝通制度的計算機(jī)程序表達(dá)。這個制度的發(fā)展一定是在不斷縮小內(nèi)部組織之間以及內(nèi)外部組織溝通成本的。

因此,系統(tǒng)的架構(gòu)一定是和組織的架構(gòu)相吻合的,如果不吻合,勢必會帶來問題阻礙組織的漸進(jìn)。

這就引出了一個推論:如果企業(yè)組織的架構(gòu)不是唯一的,那么微服務(wù)的架構(gòu)方案也不是唯一的。

當(dāng)架構(gòu)和組織結(jié)構(gòu)相一致的時候,一切都會很順暢。反之,就會出現(xiàn)各種問題。

這個關(guān)系就像鞋和腳的關(guān)系,只有穿上合適的鞋,走起路來才會舒服。過大過小的鞋都不會讓你加快前進(jìn)的步伐。當(dāng)然,你可以選擇買鞋(引入產(chǎn)品),雖然并不是很合腳,但還可以湊合穿。但是在換鞋的時候你不得不停下來試。你也可以花高價為自己定制一套,只不過,這個不會讓你走得更快,只會越來越合腳。

如果所有人穿上了新鞋,都能跑得很快。那么這就不是鞋的問題,而是你腳的問題,這就不是換鞋能解決的了。你得先把腳的問題解決了,然后再看鞋的問題。當(dāng)然,也可以通過鞋來矯正腳,只不過會花些功夫,但一定會比不停的換鞋更加有效。

很不幸,大多數(shù)的組織并沒有準(zhǔn)備好迎接微服務(wù)架構(gòu)帶來的組織變化。仍然把“系統(tǒng)架構(gòu)問題”和“組織問題”割裂成兩個不同領(lǐng)域的問題:微服務(wù)是技術(shù)問題,組織問題是管理問題。

有競爭力的組織,是一個通過融合優(yōu)勢達(dá)到 1+1》 2 的組織。而不是把優(yōu)勢割裂開,得到 1 + 1 《= 2 的組織。因此,技術(shù)問題和管理問題并不是兩個問題,而是同一個問題的兩個側(cè)面。

因此,如果你的組織結(jié)構(gòu)是去中心化的小團(tuán)隊結(jié)構(gòu),那么不用擔(dān)心,你的應(yīng)用架構(gòu)會朝組織架構(gòu)的方向演進(jìn)。反之,如果你不是一個去中心化的小團(tuán)隊結(jié)構(gòu),那么微服務(wù)的架構(gòu)會和組織架構(gòu)格格不入。

綜合解決微服務(wù)實施難點的措施

那么,如何高效的推動微服務(wù)架構(gòu)演進(jìn)呢?

如果以上 5 點都讓你膝蓋中箭。那么根據(jù)我個人的經(jīng)驗,綜合解決微服務(wù)實施難點的第一步就是:

步驟1:以終為始,先構(gòu)建一個獨立的敏捷微服務(wù)團(tuán)隊

我們對微服務(wù)的期待就是:可以獨立開發(fā),獨立部署,獨立發(fā)布,并且去中心化管理。那么,我們就先構(gòu)造一只“可以獨立開發(fā),獨立部署,并且去中心化管理”的團(tuán)隊。

這個團(tuán)隊為了達(dá)到這個目標(biāo),會采取各種方法(例如:DevOps,全功能團(tuán)隊)解決阻礙”獨立開發(fā),獨立部署,獨立發(fā)布 和 去中心化的問題。而根據(jù)康威定理,系統(tǒng)的架構(gòu)會慢慢向去中心化方向發(fā)展。

一定要意識到,這個過程會打破大型系統(tǒng)自上而下的既有流程并采用更有生產(chǎn)力的方式構(gòu)建新的組織結(jié)構(gòu)。你索要做的就是要充分信任團(tuán)隊,把它看做是一個微型的技術(shù)管理創(chuàng)新。不要用老的方式控制團(tuán)隊的運(yùn)作,這會打擊團(tuán)隊的士氣。

管理建議:

1. 讓微服務(wù)團(tuán)隊完全脫離之前的工作,專心于微服務(wù)的工作中。如果分心同時做幾件事,每件事都不會做到最好。

2. 給微服務(wù)團(tuán)隊一些特權(quán),為了滿足“全功能微服務(wù)團(tuán)隊的”訴求,特事特辦。

3. 如果團(tuán)隊在執(zhí)行的過程出現(xiàn)了依賴從而阻礙了進(jìn)度。則需要把依賴標(biāo)明出來。代碼中的依賴容易看見,但組織中的流程依賴很難發(fā)現(xiàn)。

4. 為了避免團(tuán)隊對外部的“依賴慣性”,讓團(tuán)隊自己想辦法在內(nèi)部解決依賴。

5. 組織流程的改變也是很重要的微服務(wù)架構(gòu)產(chǎn)物,而不僅僅是微服務(wù)代碼或基礎(chǔ)設(shè)施。

技術(shù)建議:

1. 為微服務(wù)建立一個全新的代碼庫,而不要從原先的代碼庫上克隆或者復(fù)制,避免和原團(tuán)隊的開發(fā)依賴。

2. 建設(shè)一個獨立的持續(xù)交付流水線,最好是通過“流水線即代碼技術(shù)”(例如 Jenkinsfile)來自動生成流水線。

步驟2:構(gòu)建微服務(wù)的“電梯演講”

成立了微服務(wù)團(tuán)隊之后,接下來就是要選擇第一個實現(xiàn)的微服務(wù)。但是這個微服務(wù)應(yīng)該多大,邊界在哪是個問題。這不需要進(jìn)行嚴(yán)格的設(shè)計和反復(fù)的論證,只要發(fā)現(xiàn)當(dāng)前的痛點或者想要完成一個假設(shè)就足夠上路了。讓整個過程變輕,而不是變重。

我的建議是通過“微服務(wù)電梯演講”的方式來定義微服務(wù)。格式可以是:

(XX微服務(wù))用來

在(出現(xiàn)痛點的場景)的情況下

解決了(解決現(xiàn)有的某個問題)

從而(達(dá)到什么樣的效果)

提升了(微服務(wù)的價值)

例如:

(訂單查詢微服務(wù))用來

在(訂單查詢數(shù)量快速)的情況下

解決了(訪問數(shù)量迅速升高導(dǎo)致整體應(yīng)用性能下降的問題)

從而(分離了訂單查詢請求)

提升了(提升了其他功能的性能)

當(dāng)構(gòu)造了微服務(wù)的電梯演講,團(tuán)隊就可以以此為原則啟動了。當(dāng)碰到和現(xiàn)有系統(tǒng)沖突的問題,替換幾個詞比較有幫助你做決策。(語言一定程度上也是具有魔力的)

把“拆分”換成“移除”。例如:“從現(xiàn)有系統(tǒng)中拆分出訂單查詢功能” 轉(zhuǎn)變?yōu)?”從現(xiàn)有系統(tǒng)中移除訂單查詢功能“。思維方式就從一個團(tuán)隊負(fù)責(zé)兩個系統(tǒng)變成了兩個團(tuán)隊負(fù)責(zé)兩個系統(tǒng)。

把“集成”換成“調(diào)用”。例如:”用戶注冊和用戶登錄需要集成”轉(zhuǎn)變?yōu)椤坝脩舻卿浄?wù)需要調(diào)用用戶注冊服務(wù)的信息”。思維方式就把兩個系統(tǒng)的關(guān)系更精確了,從而明確了微服務(wù)之間的關(guān)系和溝通方式。

管理建議:

1. 把微服務(wù)的電梯演講打印出來掛到墻上,讓團(tuán)隊成員銘記于心。這會強(qiáng)化組織對微服務(wù)的邊界認(rèn)識。

2. 隨著團(tuán)隊的反思和學(xué)習(xí),電梯演講有可能會變更,但一定要讓團(tuán)隊形成共識好和一致的意見。

3. 不要期望一次就能劃分正確。劃分是一個持續(xù)權(quán)衡取舍的過程。

技術(shù)建議:

1. 明確了微服務(wù)的職責(zé)和邊界之后再去看代碼,否則會被代碼的復(fù)雜度影響。

2. 領(lǐng)域驅(qū)動設(shè)計(DDD)可以幫助你更好的劃分微服務(wù)。領(lǐng)域驅(qū)動設(shè)計很好的遵循了“關(guān)注點分離”(Separation of concerns,SOC)的原則,提出了更成熟、清晰的分層架構(gòu)。

3. 不會領(lǐng)域驅(qū)動設(shè)計(DDD)也沒有關(guān)系。簡單的使用“關(guān)注點分離原則”也可以幫你達(dá)到這一點。例如:從接口中分離出流量較大的接口獨立部署,把讀數(shù)據(jù)庫和寫數(shù)據(jù)庫的 API 分開獨立部署,把靜態(tài)和動態(tài)訪問分離等等。

步驟3:以最小的代價發(fā)布出第一個微服務(wù)

要注意兩個關(guān)鍵點:一個是“最小的代價”,另一個是“發(fā)布”(Release)。

正如前文所述,微服務(wù)架構(gòu)本身就覺了微服務(wù)一定是低成本低風(fēng)險的漸進(jìn)式演進(jìn)。而最大的浪費(fèi)在于:

1. 級別/職責(zé)分工明確的組織溝通結(jié)構(gòu)。

2. “長時間,慢反饋”的行動習(xí)慣。

3. 先進(jìn)且學(xué)習(xí)成本較高的技術(shù)棧。

因此,“最小的代價”包含了以下三個方面:

1. 最精簡的獨立敏捷全功能團(tuán)隊。

2. 最快的時間。

3. 代價最小的技術(shù)棧。

此外,很多微服務(wù)的“愛好者”由于害怕失敗,因此將微服務(wù)技術(shù)始終放在“實驗室”里。要勇于面對失敗,在生產(chǎn)環(huán)境中面對真實的問題,但要采取一些規(guī)避風(fēng)險的措施。

管理建議:

1. 盡量讓現(xiàn)有微服務(wù)團(tuán)隊自己學(xué)習(xí)解決問題,成為全功能團(tuán)隊。如無必要,絕不增添新的人手。

2. “扯破嗓子不如甩開膀子”,先動起來,在前進(jìn)中解決問題。

3. 先考慮最后如何發(fā)布,根據(jù)發(fā)布流程倒推。

技術(shù)建議:

1. 根據(jù)當(dāng)前技術(shù)采用的情況選擇代價較小的技術(shù)棧。

2. 采用動態(tài)特性開關(guān)(Feature Toggle),在發(fā)布后可以在生產(chǎn)環(huán)境動態(tài)的控制微服務(wù)的啟用,降低失敗風(fēng)險。

3. 如果采用了特性開關(guān),一定要設(shè)立刪除特性開關(guān)和對應(yīng)舊代碼的時間,一般不超過兩個月。否則后面大量的特性開關(guān)會帶來管理成本的提升和代碼的凌亂。

4. 由于團(tuán)隊比較小,功能比較單一,不建議采用分支來構(gòu)建微服務(wù),而應(yīng)該采用單主干方式開發(fā)。

為什么微服務(wù)實施那么難_綜合解決微服務(wù)實施難點的措施

步驟4:取得快速勝利(Quick wins),演示(Showcase)驅(qū)動開發(fā)

剛開始進(jìn)行微服務(wù)改造的時候一定會是一個試錯的過程。如果目標(biāo)定得太大,會讓團(tuán)隊倍感壓力,從而士氣低落。而制定每日的短期目標(biāo),贏得快速勝利則會不斷激勵團(tuán)隊的士氣。通過設(shè)定當(dāng)天結(jié)束的產(chǎn)出來確定今天需要做什么是一個非常有效的辦法。

每日演示(Daily Showcase)就是一種推進(jìn)產(chǎn)出的做法。每天向團(tuán)隊分享今天的工作內(nèi)容,使小組能夠共同學(xué)習(xí)。并且以當(dāng)天或者明天的 showcase 作為目標(biāo)。每個人showcase 的內(nèi)容一般不超過20分鐘,一天的 showcase 時間不超過一小時。可以早上 showcase,也可以下班后 showcase。

常見的快速勝利目標(biāo)如下:

1. 構(gòu)造第一條微服務(wù)流水線。

2. 上線第一個微服務(wù) HelloWorld。

3. 構(gòu)造出第一個微服務(wù)自動化測試。

而以下的目標(biāo)不適合作為快速勝利的目標(biāo):

1. 構(gòu)造出微服務(wù) DevOps 平臺。

2. 完成整個產(chǎn)品的微服務(wù)架構(gòu)拆分。

3. 構(gòu)造微服務(wù)自動化運(yùn)維體系。

管理建議:

1. 要防止團(tuán)隊畫大餅,完成好每日和每周的工作目標(biāo)即可。微服務(wù)開發(fā)本身就沒有很長周期。

2. 強(qiáng)迫團(tuán)隊有所產(chǎn)出,這樣才能用關(guān)鍵產(chǎn)出驅(qū)動開發(fā)。產(chǎn)出不一定是代碼或者基礎(chǔ)設(shè)施,一篇總結(jié),或者學(xué)習(xí)的文章分享,甚至是踩過的坑和遇到的問題都可以展示,目的是要打造自治學(xué)習(xí)的團(tuán)隊。

3. 貴在堅持,不要計劃太遠(yuǎn)。超過一個月,就要對目標(biāo)是不是范圍過大進(jìn)行反思。

4. 以天為單位拆分任務(wù),超過一天的必須要拆分。無法在一天完成的工作需要拆分出階段性產(chǎn)出。

5. 如果能結(jié)對,并且能夠每天交換結(jié)對,showcase 不必要。

6. 可視化所有任務(wù),用敏捷看板來管理任務(wù)是了解現(xiàn)狀的最好方式。

技術(shù)建議:

1. 除了讓第一個 HelloWord 微服務(wù)盡快發(fā)布到生產(chǎn)環(huán)境,其它的不要想太多。

2. 完成了 HelloWord 的發(fā)布,然后要考慮如何對發(fā)布流程進(jìn)行改進(jìn)。而不是上線業(yè)務(wù)。

步驟5:代碼未動,DevOps 先行

微服務(wù)解耦的本質(zhì)是把代碼內(nèi)部的復(fù)雜性通過一些工具轉(zhuǎn)化外部復(fù)雜性。把代碼內(nèi)部的復(fù)雜性分散到各個微服務(wù)中以降低整體復(fù)雜性和架構(gòu)風(fēng)險。在這個過程中會大量采用了 DevOps 技術(shù)和工具。也可以說,微服務(wù)是 DevOps 文化和技術(shù)在走到極致的必然結(jié)果。

以 J2EE 的應(yīng)用為例,以前Web Server + App Server + MiddleWare + Database 的傳統(tǒng)架構(gòu)被代碼更少,更多的基礎(chǔ)設(shè)施工具所取代。因為基礎(chǔ)設(shè)施相對于代碼來說更加穩(wěn)定,更加利于擴(kuò)展。

我把微服務(wù)的技術(shù)架構(gòu)問題比作“搭臺唱戲”:首先需要建立好微服務(wù)交付和運(yùn)行的平臺,然后讓微服務(wù)上臺“唱戲”。

這個平臺一開始不需要很完善,只需要滿足生產(chǎn)上線的必要要求即可。而在很多企業(yè)里,這個部分是由 Ops 團(tuán)隊在交付流程的末尾把關(guān)的。因此,把最后一道關(guān)卡的確認(rèn)工作放到最前面考慮可以減少后期的返工以及不必要的浪費(fèi)。

以前,軟件的開發(fā)和測試過程是分開的。然而,隨著 DevOps 運(yùn)動的興起和各種自動化運(yùn)維工具的興起,這之間的必要性不如從前,只要有足夠的自動化測試做質(zhì)量保證,就可以很快的將微服務(wù)快速部署和發(fā)布到生產(chǎn)環(huán)境上。

最開始的時候,哪怕是發(fā)布一個 Hello World 程序,都表明微服務(wù)的持續(xù)交付和運(yùn)行的平臺已經(jīng)搭建好,微服務(wù)交付流程已經(jīng)打通,這一點是重中之重。

從技術(shù)交付產(chǎn)物來說,DevOps 主要交付兩點:

1. 持續(xù)交付流水線。

2. 微服務(wù)運(yùn)行平臺。

為了保證微服務(wù)交付的高效,需要把這二者通過自動化的方式有機(jī)的結(jié)合起來,而不是各為其主。讓開發(fā)和運(yùn)維的矛盾變成“自動化的開發(fā)運(yùn)維矛盾”。

此外,DevOps 指的不光是一系列技術(shù),更是一種工作方式。從團(tuán)隊工作方式來說,DevOps 要做到:

1. 要讓 Dev 和 Ops 共同參與決策,設(shè)計,實現(xiàn)和維護(hù)。

2. 團(tuán)隊完全獨立自主,打破對現(xiàn)有流程的依賴。

3. 不斷的追求改進(jìn),讓團(tuán)隊行程改進(jìn)的團(tuán)隊文化。

管理建議:

1. 給團(tuán)隊繼續(xù)前進(jìn)最大的動力就是新程序快速投入生產(chǎn)。

2. 如果你的組織是 Dev 和 Ops 分離的組織,先咨詢一下 Ops 工程師的意見。最好是能夠給微服務(wù)團(tuán)隊里面配備一名 Ops 工程師。

3. 如果不具備實施 DevOps 的條件,微服務(wù)架構(gòu)就要從運(yùn)維側(cè),而不是開發(fā)側(cè)開始進(jìn)行。

技術(shù)建議:

1. 微服務(wù)的平臺一開始可以很簡單,可以以后慢慢增強(qiáng)和擴(kuò)展。但是一定要部署到生產(chǎn)環(huán)境里使用。

2. 如果想使用現(xiàn)成的微服務(wù)平臺可以參考 Spring Cloud。

3. 微服務(wù)運(yùn)行平臺可以通過反向代理和生產(chǎn)環(huán)境并行運(yùn)行。

4. 采用灰度發(fā)布技術(shù)在生產(chǎn)環(huán)境中逐步提升微服務(wù)的使用占比。

5. 基礎(chǔ)設(shè)施即代碼是 DevOps 核心實踐,可以幫助開發(fā)人員迅速在本機(jī)構(gòu)建生產(chǎn)環(huán)境相似的開發(fā)環(huán)境,減少環(huán)境的不一致性??梢圆捎?Docker,Ansible,Vagrant 等工具來完成。

6. 基礎(chǔ)設(shè)施對微服務(wù)應(yīng)該是透明的。微服務(wù)不應(yīng)該也沒必要知道運(yùn)行環(huán)境的細(xì)節(jié)。只要能夠正常啟動并執(zhí)行業(yè)務(wù)就完成了它的任務(wù)。因此,基礎(chǔ)設(shè)施代碼要和微服務(wù)業(yè)務(wù)代碼分開,且微服務(wù)不應(yīng)該告訴平臺自己如何部署。

7. 服務(wù)注冊和發(fā)現(xiàn)是微服務(wù)架構(gòu)的核心部分。consul 和 Eureka 是這方面的佼佼者。

8. 部署(Deploy)和發(fā)布(Release)要分開。

步驟6:除了提交代碼和發(fā)布,微服務(wù)平臺一切都應(yīng)當(dāng)自動化

在完成了微服務(wù)的基礎(chǔ)設(shè)施和交付流程之后,就可以開始實現(xiàn)微服務(wù)的業(yè)務(wù)了。這時候需要依據(jù)電梯演講劃分出來的微服務(wù)進(jìn)行業(yè)務(wù)邏輯的開發(fā)。在以 DevOps 的方式工作一段時間之后,團(tuán)隊?wèi)?yīng)該養(yǎng)成了一些自動化的習(xí)慣,如果沒有,就應(yīng)該檢查一下自己的自動化程度。最佳的自動糊理想的狀態(tài)就是除了代碼提交和發(fā)布。在這之間的每一個流程和環(huán)節(jié)都應(yīng)當(dāng)由自動化的手段來完成。

當(dāng)然,也有不能自動化的部分。根據(jù)我的經(jīng)驗,不能自動化的原因主要來自于流程管理的制度要求,而非技術(shù)困難。這往往是組織沒有依據(jù)微服務(wù)進(jìn)行流程變革導(dǎo)致的。這時候需要檢討不能自動化的部分是不是有存在的必要。

另一方面,雖然自動化可以大量縮短微服務(wù)交付時間,提升微服務(wù)交付效率。但是自動化的同時需要考慮到安全因素和風(fēng)險,不能顧此失彼。對于生產(chǎn)來說,可用性和安全性是最重要的部分。

關(guān)鍵的自動化:

自動化功能性測試(UI/集成/單元/回歸)

自動化構(gòu)建

自動化部署

自動化性能測試

自動化安全掃描

管理建議:

1. 鼓勵團(tuán)隊成員自發(fā)的進(jìn)行自動化的改進(jìn),這會給未來微服務(wù)批量開發(fā)帶來很多裨益。

2. 不要一開始就追求全面的自動化,自動化需要花費(fèi)一定時間。根據(jù)團(tuán)隊的進(jìn)度視情況適度進(jìn)行。

技術(shù)建議:

1. 采用 TDD 的方式開發(fā)不光可以提升質(zhì)量,也完成了測試的自動化。

2. 注意自動化的安全隱患。機(jī)密信息需要獨立管理。

3. 關(guān)鍵步驟需要準(zhǔn)備自動手動兩種方式,必要時可以干預(yù)自動過程。

4. 采用 git 的 hook 技術(shù),在代碼 push 之前就可以完成測試和靜態(tài)檢查,提升 CI 的成功率。

步驟7:總結(jié)并復(fù)制成功經(jīng)驗,建立起微服務(wù)交付的節(jié)奏

當(dāng)完成了第一個微服務(wù),不要著急開始進(jìn)行下一個微服務(wù)的開發(fā)。而是需要進(jìn)行一次關(guān)于可復(fù)制經(jīng)驗的總結(jié),識別微服務(wù)開發(fā)中的經(jīng)驗教訓(xùn)并總結(jié)成可復(fù)制的經(jīng)驗和產(chǎn)出。

以下是一些需要總結(jié)出來的關(guān)鍵產(chǎn)出:

1. 微服務(wù)開發(fā)到發(fā)布的端到端流程規(guī)范。

2. 微服務(wù)開發(fā)的技術(shù)質(zhì)量規(guī)范。

3. 團(tuán)隊合作中的堅持的最佳實踐。

4. 常見技術(shù)問題總結(jié)。

有了以上的關(guān)鍵產(chǎn)出,就可以對微服務(wù)開發(fā)團(tuán)隊進(jìn)行擴(kuò)張。這時候有了微服務(wù)開發(fā)的老司機(jī),帶著剛加入的同事一起開發(fā),風(fēng)險會相對低很多。

管理建議:

1. 剛開始的時候可以每周進(jìn)行一個回顧會議,團(tuán)隊需要快速的反饋和調(diào)整。

2. 不要急于擴(kuò)張團(tuán)隊,要在成功經(jīng)驗穩(wěn)定并形成模式之后再快速擴(kuò)充。

3. 避免微服務(wù)良好的開發(fā)氛圍被稀釋,剛開始的時候擴(kuò)充團(tuán)隊可以慢一點。新老成員的配比不要超過1:1。

4. 雖然微服務(wù)平臺趨于穩(wěn)定,但在微服務(wù)沒有上規(guī)模之前,不要讓團(tuán)隊里缺少 Ops 成員。

5. 注意知識的傳遞和人員的培養(yǎng)。

技術(shù)建議:

1. 不要急于在微服務(wù)應(yīng)用規(guī)模不大的時候形成微服務(wù)模板,否則會限制未來微服務(wù)的開發(fā)和擴(kuò)展。

2. 在微服務(wù)不成規(guī)模的時候不要放松對微服務(wù)平臺的改進(jìn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    150

    瀏覽量

    8102
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    光伏四可裝置軟件系統(tǒng)架構(gòu):微服務(wù)化設(shè)計與容器化部署方案

    ,某一模塊升級需整體停機(jī),無法適配光伏場景對實時性與連續(xù)性的要求;物理機(jī)部署模式則導(dǎo)致環(huán)境一致性差,跨場景遷移成本高。為此,基于微服務(wù)化設(shè)計與容器化部署的軟件架構(gòu)應(yīng)運(yùn)而生,通過“功能解耦、彈性部署、高效
    的頭像 發(fā)表于 03-03 15:47 ?160次閱讀

    基于OpenTelemetry的全鏈路追蹤微服務(wù)可觀測性實踐

    微服務(wù)拆分到第三年,我們的服務(wù)數(shù)量從最初的5個膨脹到了47個。一個用戶下單請求要經(jīng)過API Gateway -> 用戶服務(wù) -> 商品服務(wù) -> 庫存
    的頭像 發(fā)表于 02-26 15:43 ?134次閱讀

    Istio服務(wù)網(wǎng)格的核心原理與部署實戰(zhàn)

    微服務(wù)拆分之后,服務(wù)間調(diào)用關(guān)系變得復(fù)雜。一個請求從網(wǎng)關(guān)進(jìn)來,經(jīng)過認(rèn)證服務(wù)、用戶服務(wù)、訂單服務(wù)、庫存服務(wù)
    的頭像 發(fā)表于 02-26 09:49 ?166次閱讀

    Istio服務(wù)網(wǎng)格生產(chǎn)環(huán)境性能調(diào)優(yōu)的最佳實踐

    隨著微服務(wù)架構(gòu)的普及,服務(wù)間通信的復(fù)雜度呈指數(shù)級增長。傳統(tǒng)的應(yīng)用層負(fù)載均衡和服務(wù)發(fā)現(xiàn)方案已經(jīng)無法滿足現(xiàn)代云原生應(yīng)用的需求。Istio作為目前最成熟的服務(wù)網(wǎng)格解決方案,通過在數(shù)據(jù)平面注入
    的頭像 發(fā)表于 01-20 15:40 ?205次閱讀

    華納云VPS容器服務(wù)網(wǎng)格流量管理:實現(xiàn)微服務(wù)高效路由

    在云計算和微服務(wù)架構(gòu)日益普及的今天,華納云香港VPS憑借其優(yōu)越的地緣優(yōu)勢和網(wǎng)絡(luò)自由,成為眾多企業(yè)部署容器化應(yīng)用的熱門選擇。復(fù)雜的微服務(wù)架構(gòu)帶來了流量管理的巨大挑戰(zhàn)。本文將深入探討如何利用容器服務(wù)
    的頭像 發(fā)表于 10-16 17:09 ?528次閱讀

    如何保障電網(wǎng)結(jié)構(gòu)優(yōu)化措施的有效實施

    電網(wǎng)結(jié)構(gòu)優(yōu)化措施的有效實施,需突破 “規(guī)劃脫節(jié)、技術(shù)壁壘、協(xié)同不足、資金短缺、風(fēng)險失控” 等關(guān)鍵瓶頸,從 頂層設(shè)計、技術(shù)支撐、資金保障、協(xié)同機(jī)制、風(fēng)險管控、監(jiān)督評估、市場激勵、人才建設(shè) 八大維度構(gòu)建
    的頭像 發(fā)表于 10-14 17:57 ?1001次閱讀

    基于RFID與微服務(wù)架構(gòu)的智能倉庫管理系統(tǒng):實現(xiàn)倉儲數(shù)據(jù)的全鏈路精準(zhǔn)采集與管控

    針對傳統(tǒng)倉儲管理中普遍存在的賬實不符、流程效率低下及信息孤島等問題,本文介紹一套基于RFID射頻識別技術(shù)與微服務(wù)軟件架構(gòu)的智能倉庫管理系統(tǒng)。系統(tǒng)通過“一物一碼”的電子身份標(biāo)識,實現(xiàn)了對物資從入庫
    的頭像 發(fā)表于 10-13 11:18 ?764次閱讀
    基于RFID與<b class='flag-5'>微服務(wù)</b>架構(gòu)的智能倉庫管理系統(tǒng):實現(xiàn)倉儲數(shù)據(jù)的全鏈路精準(zhǔn)采集與管控

    如何基于Nginx構(gòu)建微服務(wù)網(wǎng)關(guān)

    今天,我將分享我們團(tuán)隊如何基于Nginx構(gòu)建了一個日均處理10億+請求的微服務(wù)網(wǎng)關(guān),以及踩過的那些坑。這套方案已經(jīng)穩(wěn)定運(yùn)行2年+,經(jīng)歷過多次大促考驗。
    的頭像 發(fā)表于 09-02 16:29 ?820次閱讀

    Jtti海外VPS微服務(wù)架構(gòu)下的日志采集與分析優(yōu)化方案

    隨著跨境業(yè)務(wù)和分布式應(yīng)用的普及,越來越多的企業(yè)在海外VPS上構(gòu)建微服務(wù)架構(gòu),以提升系統(tǒng)擴(kuò)展性和靈活性。然而,微服務(wù)化帶來了一個新的挑戰(zhàn):日志數(shù)據(jù)分散在多個服務(wù)和節(jié)點中,若缺乏統(tǒng)一采集與分析機(jī)制,將
    的頭像 發(fā)表于 08-27 17:13 ?567次閱讀

    Jtti.cc零信任安全防護(hù)架構(gòu)實施在VPS云服務(wù)器構(gòu)建指南

    隨著云計算技術(shù)的快速發(fā)展,VPS云服務(wù)器已成為企業(yè)數(shù)字化轉(zhuǎn)型的重要基礎(chǔ)設(shè)施。傳統(tǒng)邊界防護(hù)模式已無法應(yīng)對日益復(fù)雜的網(wǎng)絡(luò)威脅,零信任安全防護(hù)架構(gòu)的實施成為保障云環(huán)境安全的關(guān)鍵策略。本文將深入解析如何在
    的頭像 發(fā)表于 08-21 15:39 ?773次閱讀

    電商API的微服務(wù)架構(gòu)優(yōu)化策略

    ? 隨著電子商務(wù)的快速發(fā)展,API(應(yīng)用程序編程接口)已成為電商平臺的核心組件,負(fù)責(zé)連接用戶、商家和后臺系統(tǒng)。微服務(wù)架構(gòu)通過將應(yīng)用拆分為獨立、可擴(kuò)展的服務(wù)單元,顯著提升了系統(tǒng)的靈活性和可維護(hù)性。然而
    的頭像 發(fā)表于 07-23 14:30 ?621次閱讀
    電商API的<b class='flag-5'>微服務(wù)</b>架構(gòu)優(yōu)化策略

    蔡司“微服務(wù)”——全能在線售后管家,24小時守護(hù)您的設(shè)備!

    還在為設(shè)備故障煩惱? 急需技術(shù)支援卻找不到人? 想快速獲取用戶手冊或軟件升級? 現(xiàn)在 只需微信掃一掃設(shè)備上的藍(lán)色標(biāo)簽二維碼 蔡司“微服務(wù)”一鍵觸達(dá)! 9大功能板塊 全方位解決您的售后需求 服務(wù)更高
    發(fā)表于 07-10 16:44 ?1566次閱讀
    蔡司“<b class='flag-5'>微服務(wù)</b>”——全能在線售后管家,24小時守護(hù)您的設(shè)備!

    如何部署流媒體服務(wù)實現(xiàn)監(jiān)控功能--基于米爾TI AM62x開發(fā)板

    本文將介紹基于米爾電子MYD-YM62X開發(fā)板(米爾基于TIAM62開發(fā)板)的部署流媒體服務(wù)實現(xiàn)監(jiān)控功能方案的開發(fā)測試。摘自優(yōu)秀創(chuàng)作者-HonestQiao米爾-TIAM62x開發(fā)板除了可以用官方
    的頭像 發(fā)表于 07-03 08:03 ?2941次閱讀
    如何部署流媒體<b class='flag-5'>服務(wù)實</b>現(xiàn)監(jiān)控功能--基于米爾TI AM62x開發(fā)板

    企業(yè)使用NVIDIA NeMo微服務(wù)構(gòu)建AI智能體平臺

    已發(fā)布的 NeMo 微服務(wù)可與合作伙伴平臺集成,作為創(chuàng)建 AI 智能體的構(gòu)建模塊,使用商業(yè)智能與強(qiáng)大的邏輯推理模型 (包括 NVIDIA Llama Nemotron) 處理更多任務(wù)。
    的頭像 發(fā)表于 04-27 15:05 ?1281次閱讀

    鴻蒙元服務(wù)實戰(zhàn)-笑笑五子棋(1)

    鴻蒙元服務(wù)實戰(zhàn)-笑笑五子棋(1) 前言 作為鴻蒙應(yīng)用的深度開發(fā)者都應(yīng)該知道,經(jīng)歷了 波瀾壯闊 12 月風(fēng)波 ,到 2025 年新的開始。鴻蒙應(yīng)用開發(fā)的熱度算是下去一些了。 這里就把之前上架了的元服務(wù)
    的頭像 發(fā)表于 03-31 09:23 ?786次閱讀
    鴻蒙元<b class='flag-5'>服務(wù)實</b>戰(zhàn)-笑笑五子棋(1)