自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

跨國(guó)互聯(lián)網(wǎng)公司并購(gòu)中 用基礎(chǔ)設(shè)施即代碼進(jìn)行架構(gòu)遷移

原創(chuàng)
開發(fā) 架構(gòu)
由51CTO主辦的第十六期以“Tech Neo”為主題的技術(shù)沙龍?jiān)诒本┡e行,Thought Works 高級(jí)咨詢師顧宇老師分享了一個(gè)東南亞互聯(lián)網(wǎng)企業(yè)并購(gòu)中的DevOps 促進(jìn)并購(gòu)的實(shí)施案例,即通過在 AWS上使用 Ansible和CloudFormation作為基礎(chǔ)設(shè)施即代碼的工具實(shí)現(xiàn)產(chǎn)品架構(gòu)的遷移。

【51CTO.com原創(chuàng)稿件】互聯(lián)網(wǎng)企業(yè)的并購(gòu)不僅是組織結(jié)構(gòu)的融合,更是產(chǎn)品架構(gòu)和產(chǎn)品團(tuán)隊(duì)的融合。特別是涉及不同的企業(yè)文化、技術(shù)能力甚至是不同的國(guó)家法律法規(guī)上的融合,存在更多看不到的隱形成本。

近日,由51CTO主辦的第十六期以“Tech Neo”為主題的技術(shù)沙龍?jiān)诒本┡e行,此次活動(dòng)邀請(qǐng)了來自Thought Works 高級(jí)咨詢師顧宇老師。他分享了一個(gè)東南亞互聯(lián)網(wǎng)企業(yè)并購(gòu)中的DevOps 促進(jìn)并購(gòu)的實(shí)施案例,即通過在 AWS上使用 Ansible和CloudFormation作為基礎(chǔ)設(shè)施即代碼的工具實(shí)現(xiàn)產(chǎn)品架構(gòu)的遷移。

本文介紹如何通過 DevOps的基礎(chǔ)設(shè)施即代碼實(shí)踐,把架構(gòu)以及開發(fā)/運(yùn)維實(shí)踐和規(guī)則固化為配置和代碼。讓所有的團(tuán)隊(duì)和成員能夠依照同樣的規(guī)則進(jìn)行開發(fā)和運(yùn)維;通過自動(dòng)化的手段加速團(tuán)隊(duì)、產(chǎn)品和架構(gòu)的融合過程,提升整個(gè)組織的技術(shù)水平。減少組織間的溝通摩擦。

跨國(guó)互聯(lián)網(wǎng)公司并購(gòu)案例

案例梗概:某企業(yè)收購(gòu)了分布在泰國(guó)、馬來西亞、印度尼西亞、新家坡等地的幾家東南亞擁有相同業(yè)務(wù)的互聯(lián)網(wǎng)公司。但如何在多國(guó)家、多語(yǔ)言文化的情況下,進(jìn)行分布式IT敏捷產(chǎn)品團(tuán)隊(duì)的合并、步調(diào)一致的工作和實(shí)現(xiàn)統(tǒng)一的管理成為難題。

剖析組織現(xiàn)狀

既要保留各個(gè)國(guó)家的業(yè)務(wù)團(tuán)隊(duì),又要集中管理IT團(tuán)隊(duì),首當(dāng)其沖的是剖析組織現(xiàn)狀。那么,做架構(gòu)遷移要先了解哪些組織現(xiàn)狀呢? ″

康威定律原話:Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations。

這句話中“constrained”的意思是強(qiáng)制。也就是說,當(dāng)系統(tǒng)架構(gòu)與組織架構(gòu)不匹配時(shí),系統(tǒng)結(jié)構(gòu)會(huì)被強(qiáng)制轉(zhuǎn)化成與組織架構(gòu)一致。要做到組織架構(gòu)和基礎(chǔ)設(shè)施架構(gòu)保持一致,就需要根據(jù)未來的組織結(jié)構(gòu)設(shè)計(jì)系統(tǒng)架構(gòu),減少系統(tǒng)架構(gòu)演進(jìn)中的適應(yīng)性浪費(fèi)。

如下圖,是合并前架構(gòu)的情況: 

如圖中所示,每個(gè)國(guó)家的公司運(yùn)營(yíng)著自己的網(wǎng)站。其中每一公司都有一部分是用WordPress運(yùn)營(yíng)的。雖然都是 Wordpress,但應(yīng)用架構(gòu)和使用方式上存在著諸多的差異。我們首先是要識(shí)別出這種差異。而這種差異不僅僅是技術(shù)上的,還有組織上的。 并購(gòu)并不僅僅是把團(tuán)隊(duì)合并到一起就能解決問題,而是要把多國(guó)、多語(yǔ)言、多站點(diǎn),變成多國(guó)、多語(yǔ)言、單站點(diǎn)。通過一個(gè)站點(diǎn)來支撐多個(gè)地區(qū)的業(yè)務(wù),這里選擇馬來西亞作為這個(gè)站點(diǎn)進(jìn)行舉例。

那么,組織架構(gòu)就會(huì)辦成如下圖所示: 

[[212063]]

當(dāng)組織架構(gòu)變成多國(guó)、多語(yǔ)言、單站點(diǎn),那么所對(duì)應(yīng)的就是一個(gè)IT團(tuán)隊(duì)。如圖可以看到把Dev、Ops分開來表示,這樣的組織結(jié)構(gòu)和DevOps有什么關(guān)系呢?這就需要了解下DevOps的兩種組織形式:

  • Team Own Ops:團(tuán)隊(duì)內(nèi)自有的Ops,把Ops當(dāng)做團(tuán)隊(duì)成員,實(shí)現(xiàn)開發(fā)和運(yùn)維合作。
  • Team Share Ops:不同產(chǎn)品開發(fā)團(tuán)隊(duì)之間共享一個(gè)Ops。在這種情況下 Ops 團(tuán)隊(duì)就是一個(gè)平臺(tái)團(tuán)隊(duì)。

為新組織設(shè)立目標(biāo) 做團(tuán)隊(duì)合并之前,要為新組織設(shè)立目標(biāo),如下:

  • 單一的產(chǎn)品開發(fā)團(tuán)隊(duì)及運(yùn)維團(tuán)隊(duì),各地區(qū)共享,由統(tǒng)一的產(chǎn)品經(jīng)理協(xié)調(diào)各地的開發(fā)任務(wù)和業(yè)務(wù)需求。
  • 每個(gè)地區(qū)可自有開發(fā)團(tuán)隊(duì),但都由馬來西亞開發(fā)團(tuán)隊(duì)來統(tǒng)一管理,所有運(yùn)維都由馬來西亞團(tuán)隊(duì)來支持。
  • 在所有公司構(gòu)建DevOps文化及機(jī)制,從 Team Own Ops 向 Team Share Ops 變化。
  • 提升各個(gè)國(guó)家的Dev / Ops 水平,當(dāng)水平達(dá)到一致,便可通過DevOps這個(gè)中間橋梁打通。

用DevOps加速團(tuán)隊(duì)之間合并的進(jìn)程

雖然IT團(tuán)隊(duì)來自不同的國(guó)家,分布在不同的地理位置,他們的文化背景不同,說著不同的英語(yǔ)方言,但是大家的技術(shù)棧是相同的。

一方面,我們通過 Zoom 構(gòu)建起了每天的在線視頻會(huì)議,及時(shí)同步各個(gè)團(tuán)隊(duì)之間的狀況。另一方面,我們遵守著同樣的開發(fā)規(guī)則。 其中,測(cè)試驅(qū)動(dòng)開發(fā)(TDD)在這樣的分布式團(tuán)隊(duì)中十分重要。雖然對(duì)編程語(yǔ)言和技術(shù)框架的理解不同,但是自動(dòng)化測(cè)試為開發(fā)人員構(gòu)建出了統(tǒng)一的理解。這樣就使得每個(gè)團(tuán)隊(duì),每個(gè)成員去設(shè)計(jì)、實(shí)現(xiàn)自動(dòng)化測(cè)試。

一方面,用測(cè)試作為對(duì)需求的理解,減少和降低了不一致性,此外,通過測(cè)試驅(qū)動(dòng)開發(fā)可以保證代碼品質(zhì),進(jìn)而提升程序員的編碼水平。此外,自動(dòng)化測(cè)試在這里就相當(dāng)于一種代碼質(zhì)量的標(biāo)準(zhǔn), 組織被合并之后,架構(gòu)也要隨之改變,這時(shí)就要著手做架構(gòu)遷移??梢杂没A(chǔ)設(shè)施即代碼把自動(dòng)化作為一種制度去提升整體運(yùn)行效果。

系統(tǒng)架構(gòu)的遷移實(shí)踐系統(tǒng)架構(gòu)遷移要在了解當(dāng)前組織架構(gòu)現(xiàn)狀的前提下,制定架構(gòu)的目標(biāo)、設(shè)計(jì)遷移策略。這三方面落實(shí)后,才能為新組織設(shè)計(jì)新架構(gòu)

架構(gòu)要盡量設(shè)計(jì)要設(shè)定***要求,這里不要將就現(xiàn)有人員的能力/精力,但是要規(guī)劃成本,成本規(guī)劃里不光要考慮遷移成本,還要考慮遷移后的維護(hù)成本。這樣,有了***的要求和標(biāo)準(zhǔn),可以引導(dǎo)大家為共同的結(jié)論和方向一起努力,既可以提升個(gè)人及團(tuán)隊(duì)的技術(shù)能力,也是提升DevOps合作的過程,因?yàn)楹玫募軜?gòu)一定是和多方利益相關(guān)者在不斷溝通下形成的。通過不斷的開發(fā)團(tuán)隊(duì)溝通,解決開發(fā)痛點(diǎn),來主動(dòng)提升 Ops 團(tuán)隊(duì)的合作意識(shí)。所以,DevOps不僅是自動(dòng)化,更是在磨合和共識(shí)團(tuán)隊(duì)合作的價(jià)值觀和工作方式。

當(dāng)前的組織與系統(tǒng)架構(gòu)存在的問題

當(dāng)組織和產(chǎn)品進(jìn)行合并之后,不同的地區(qū)多系統(tǒng)的運(yùn)維就變成了單一系統(tǒng)的運(yùn)維。因此,很多運(yùn)維人員不再被需要,在現(xiàn)在的案例中,僅剩四名運(yùn)維工程師,剩下的運(yùn)維工程師相繼離職,運(yùn)維工作由技術(shù)負(fù)責(zé)人兼任。 這里遇到的問題是,如此少量的運(yùn)維人員,如何要去維護(hù)大量技術(shù)棧/語(yǔ)言/業(yè)務(wù)各異的站點(diǎn)。因?yàn)楫a(chǎn)品簡(jiǎn)單了,但架構(gòu)復(fù)雜了,運(yùn)維的環(huán)節(jié)和結(jié)點(diǎn)更多了。

此外,為了避免賬戶單點(diǎn),平均每個(gè)系統(tǒng)至少要有三個(gè)AWS賬戶:開發(fā)環(huán)境、測(cè)試環(huán)境及生產(chǎn)環(huán)境。這樣一來,三個(gè)人維護(hù)二十多個(gè)賬戶是一種浪費(fèi),還需要做賬戶合并。 這三個(gè)運(yùn)維人員人還需要應(yīng)對(duì)風(fēng)格各異的其它遺留系統(tǒng),因?yàn)槊恳粋€(gè)國(guó)家的系統(tǒng)都分別由不同的架構(gòu)師主導(dǎo),對(duì)于僅三人的運(yùn)維團(tuán)隊(duì)來說也是非常大的挑戰(zhàn)。 盡管收購(gòu)的企業(yè)核心業(yè)務(wù)相似,但每個(gè)國(guó)家的現(xiàn)狀、市場(chǎng)條件、用戶群都不一樣,所以仍然需要一部分本地定制化業(yè)務(wù)。 總之,在系統(tǒng)架構(gòu)方面存在的主要問題如下:

  • 每個(gè)國(guó)家的架構(gòu)都由不同架構(gòu)師設(shè)計(jì),所以會(huì)留下很多隱藏知識(shí),以至于維護(hù)困難。
  • 基礎(chǔ)設(shè)施即代碼已在一些IT團(tuán)隊(duì)中被使用,卻沒有用好,存在很多硬編碼。
  • 舊架構(gòu)在更新一個(gè)應(yīng)用時(shí),就需要把整個(gè)架構(gòu)全部更新,并非部分更新。

架構(gòu)遷移的目標(biāo)

綜合當(dāng)前新組織的現(xiàn)狀與舊架構(gòu)的問題,制定架構(gòu)遷移目標(biāo)如下:

  • 實(shí)現(xiàn)用基礎(chǔ)設(shè)施即代碼管理所有的基礎(chǔ)設(shè)施,因?yàn)榕f架構(gòu)還有些應(yīng)用在機(jī)房裸機(jī)上運(yùn)行,并且需要手動(dòng)安裝。
  • 現(xiàn)有基礎(chǔ)設(shè)施架構(gòu)全部遷移到云上。
  • 基礎(chǔ)設(shè)施的管理要規(guī)范化,可以把基礎(chǔ)設(shè)施即代碼看成一套制度,用來規(guī)范運(yùn)維人員如何操作基礎(chǔ)設(shè)施。
  • 給所有運(yùn)維人員、開發(fā)工程師提供統(tǒng)一界面,讓他們基于基礎(chǔ)設(shè)施即代碼之上進(jìn)行應(yīng)用開發(fā),進(jìn)而實(shí)現(xiàn)部分更新,而不是全部更新。

實(shí)現(xiàn)能力和組織結(jié)構(gòu)的遷移,基礎(chǔ)設(shè)施即代碼首先作為一個(gè)制度可保證以上幾點(diǎn)?;A(chǔ)設(shè)施即代碼一旦作為制度,在執(zhí)行的過程中,要做到的***一點(diǎn)就是能力的提升,即把基礎(chǔ)設(shè)施變成一種產(chǎn)品。 如何把基礎(chǔ)設(shè)施變成一種產(chǎn)品?首先是把基礎(chǔ)設(shè)施架構(gòu)經(jīng)驗(yàn)在不同團(tuán)隊(duì)中復(fù)用,讓不同國(guó)家、程序員、運(yùn)維人員獲得更安全,更穩(wěn)定,更靈活的架構(gòu)。其次是實(shí)現(xiàn)高度自動(dòng)化,可以快速建設(shè)和定制。再次是要做到關(guān)注點(diǎn)分離,根據(jù)場(chǎng)景把變更縮小在一定的范圍里。***,要把開發(fā)和各環(huán)境做到抽象一致性,便于不同團(tuán)隊(duì)能夠在不同環(huán)境中做到無縫切換。

架構(gòu)的遷移策略

架構(gòu)遷移有兩大原則:一是最少的變更,實(shí)現(xiàn)做到只做一個(gè)簡(jiǎn)單的變更,就完成遷移;二是最小的影響,就是減少架構(gòu)變更造成的不良影響。 架構(gòu)遷移的整個(gè)策略如下:

  • 將遺留系統(tǒng)應(yīng)用按照(架構(gòu)/應(yīng)用/數(shù)據(jù))進(jìn)行封裝。
  • 用基礎(chǔ)設(shè)施即代碼構(gòu)建一套新的架構(gòu),構(gòu)建可復(fù)用架構(gòu)模型。
  • 對(duì)架構(gòu)/應(yīng)用/數(shù)據(jù)這三部分別用該腳本實(shí)施自動(dòng)化遷移。
  • 測(cè)試完成后切換總域名,切換子域名。
  • 兩周過后,遺留系統(tǒng)下線。

此架構(gòu)策略除需要手動(dòng)切換域名之外,其余全部實(shí)現(xiàn)自動(dòng)化,主要涉及技術(shù)如下:

  • 用 Ansible + Cloudformation 封裝并構(gòu)造新的基礎(chǔ)設(shè)施?;A(chǔ)設(shè)施要能做到隨時(shí)可以完全恢復(fù)。
  • 全量數(shù)據(jù) dump / import,自動(dòng)化備份到 s3 上。減少數(shù)據(jù)庫(kù)的狀態(tài)。
  • 用 Docker 封裝 wordpress 應(yīng)用。不同的國(guó)家用不同的主題和插件組合完成。
  • 用 cdn + nginx + wordpress 共同做 301、302 跳轉(zhuǎn)。要為每個(gè)角色做好區(qū)分。
  • 用腳本做遷移,遷移腳本分類(開發(fā)/測(cè)試/生產(chǎn))管理。
  • 切換域名指向(手動(dòng))。

為新的組織結(jié)構(gòu)設(shè)計(jì)架構(gòu)

對(duì)組織進(jìn)行重建,確定新組織對(duì)應(yīng)架構(gòu)的目標(biāo)和策略之后,緊接著就是根據(jù)使用場(chǎng)景,設(shè)計(jì)基礎(chǔ)設(shè)施即代碼的架構(gòu),實(shí)現(xiàn)整個(gè)架構(gòu)自動(dòng)的搭建和還原。然后,根據(jù)使用場(chǎng)景設(shè)計(jì)安全策略,避免人為操作,減少人為故障。 顧宇老師認(rèn)為,基礎(chǔ)設(shè)施即代碼和基礎(chǔ)設(shè)施是類和對(duì)象的關(guān)系。通過定制化的模板結(jié)合不同的場(chǎng)景產(chǎn)生不同的基礎(chǔ)設(shè)施實(shí)例。一方面統(tǒng)一了架構(gòu)語(yǔ)言,另一方面減少了不經(jīng)審計(jì)的認(rèn)為操作。此外, 可以采用面向?qū)ο笤瓌t進(jìn)行邏輯分層,隔離不同場(chǎng)景的關(guān)注點(diǎn)。例如:持續(xù)交付關(guān)注Docker 鏡像的部署和變更,應(yīng)用維護(hù)關(guān)注日志的查詢和操作。

寫在***

在該案例中,利用基礎(chǔ)設(shè)施即代碼技術(shù)有幾個(gè)關(guān)鍵要點(diǎn),總結(jié)如下:

  • 架構(gòu)遷移要為組織結(jié)構(gòu)遷移服務(wù)。
  • 把自動(dòng)化和基礎(chǔ)設(shè)施即代碼當(dāng)做制度使用(康威定理和逆定理)。
  • 把基礎(chǔ)設(shè)施即代碼當(dāng)做一個(gè)產(chǎn)品開發(fā)。
  • 安全的架構(gòu)和架構(gòu)的安全。
  • 基礎(chǔ)設(shè)施邏輯分層。
  • 基礎(chǔ)設(shè)施即代碼本質(zhì)上是一套類庫(kù),從面向?qū)ο蟮脑瓌t考慮基礎(chǔ)設(shè)施的設(shè)計(jì)。
  • 構(gòu)建每日可用架構(gòu)。

由于篇幅原因,還有眾多相關(guān)細(xì)節(jié)如、沒有一一納入文章中,想要了解更過內(nèi)容的開發(fā)者,可查看 視頻PPT 【講師簡(jiǎn)介】 

顧宇,Thought Works 高級(jí)咨詢師。專注于 DevOps、持續(xù)交付,微服務(wù)以及全功能產(chǎn)品團(tuán)隊(duì)的設(shè)計(jì)、實(shí)踐、落地以及經(jīng)驗(yàn)推廣。并持續(xù)在多個(gè)專業(yè)平臺(tái)和媒體發(fā)表相關(guān)文章,受多個(gè)行業(yè)大會(huì)邀請(qǐng)發(fā)表相關(guān)演講。

在加入 ThoughtWorks 之前,曾經(jīng)參與中國(guó)移動(dòng) 10086 呼叫中心以及中國(guó)聯(lián)通省級(jí) BOSS 系統(tǒng)的研發(fā)、實(shí)施和割接。任項(xiàng)目經(jīng)理,維護(hù)經(jīng)理,開發(fā)工程師等職務(wù),擁有豐富的大型 IT 系統(tǒng)小型機(jī)生產(chǎn)環(huán)境實(shí)戰(zhàn)經(jīng)驗(yàn)。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

責(zé)任編輯:王雪燕 來源: 51CTO
相關(guān)推薦

2017-12-05 09:24:22

架構(gòu)遷移移動(dòng)·開發(fā)技術(shù)周刊

2017-09-16 17:28:55

基礎(chǔ)設(shè)施代碼持續(xù)交付

2015-08-24 11:31:30

2015-01-12 09:25:24

互聯(lián)網(wǎng)基礎(chǔ)設(shè)施

2024-02-04 09:13:24

基礎(chǔ)設(shè)施代碼DevOps

2020-02-24 11:08:27

云計(jì)算網(wǎng)絡(luò)攻擊數(shù)據(jù)

2013-04-19 15:55:04

2015-05-14 17:39:51

阿里云

2022-01-10 08:00:00

云原生云計(jì)算技術(shù)

2016-08-18 16:55:00

基礎(chǔ)設(shè)施

2022-06-17 10:24:57

IaC

2022-04-11 19:08:06

設(shè)施作用域pod

2019-06-17 05:09:49

5G基礎(chǔ)設(shè)施互聯(lián)網(wǎng)

2011-08-24 09:48:22

2018-01-10 22:56:19

互聯(lián)網(wǎng)基礎(chǔ)設(shè)施

2021-11-11 09:00:00

IaC工具自動(dòng)化

2016-08-30 10:20:57

云計(jì)算

2022-04-12 19:38:44

PostgresOperator數(shù)據(jù)庫(kù)

2021-06-18 11:02:12

云計(jì)算infrastruct云安全

2021-07-26 09:53:58

IaC基礎(chǔ)設(shè)施即代碼云數(shù)據(jù)中心
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)