微服務遷移:經驗教訓
與大多數Web應用程式一樣,Andela的系統開始是一個“單片整體”軟體架構,包含幾個Web應用程式,每個都有自己的資料庫並負責業務功能。 例如,我們構建了不同的網路應用程式來管理申請人的招聘,選擇,學習成績評估和技能的掌握,這對開發世界級開發人員都至關重要。
隨著我們的應用程式套件的增長,我們遇到三個主要挑戰:
1.在應用程式中有很多重複的業務邏輯。
2.跨應用程式連線資料有問題。
3.不斷增長單片程式碼庫導致產品交付速度較慢。
以前我們構建獨立的單片應用程式是為滿足特定的業務需求,而不是為了實現資料連線應用的生態系統,而後者越來越符合我們的業務運營方式。
很明顯,為了擴充套件,我們需要重新思考我們的軟體架構。在研究不同型別的架構,我們碰到這個部落格帖子nginx ,它推動我們向微服務努力方向。在確定了為什麼微服務將有助於解決我們的挑戰以後,我們決定遷移並開始旅程。
執行
我們首先學習儘可能多的微服務:它們帶來什麼,他們提出了什麼挑戰,以及它們可能對我們的團隊結構和敏捷過程產生的影響。 我們任命Ikem Okonkwo領導這個研究,並領導一個初始有五個開發人員的核心團隊,於是就開始了。他們的研究結果及提出的設計考慮都發表了部落格文章 。一旦我們對調查結果感到滿意,我們開始合併在一起執行計劃。
核心團隊起初是建立我們新的基礎設施,創造了不同的語言微服務模板,建立我們的託管服務(我們離開Heroku搬到到谷歌雲),設定Kafka卡夫卡 (分散式流媒體平臺),設定如何管理我們的伺服器和叢集( Kubernetes ),並建立持續整合( ConcourseCI )。
一旦我們的最低基礎設施需求到位,所有的功能團隊開始將我們的產品遷移到微服務。結果,在六個月的時間裡,我們將五個關鍵的單片系統解耦到35個微服務,前端應用程式透過API閘道器與後端系統互動。 這項工作涉及15名工程師努力工作,以改善我們的平臺。
得到教訓
執行遷移並不是在公園裡散步。我們在路上犯了一些錯誤,雖然幸運的是我們能夠吸取學習了教訓。 這裡有一些在開始遷移之前我們考慮過的事情:
1.學習曲線 :從建立大應用單元過渡到相對於小的,獨立釋出的單元。這一點很重要,因為構建分散式系統會影響團隊結構,以及它們如何溝通以完成工作。
2.UUID:使用單片系統透過自動遞增的工作得夠好,但在分散式架構中,最終會碰到衝突。UUID允許我們跟蹤不同的業務邏輯並跨生態系統連線它們。
3.入門套件 :樣板程式碼必須包含開發和部署新的微服務的所有的一切。入門工具包特別有助於加快新開發人員的開發和入職。
4.自動化 :一個連續的遞交流程和自動化的環境設定,能夠幫助我們的工程師能高度自主地編寫,測試和遞交程式碼。
5.快速完成 :當我們遷移平臺時,相對現有程式碼庫功能開發的進度好像一場比賽。遷移需要比其程式碼庫本身開放更快地推進。 必須有一支強大的工程師團隊,能夠快速,快速地完成遷移。
儘管我們面臨各種挑戰,移民還是成功得,我們相信我們做出了正確的決定。我們將繼續利用我們的學習,改進我們的平臺和軟體開發過程。我們現在比以往任何時候都更有信心,我們有能力快速迭代產品,為業務提供一致的價值。
相關文章
- 使用 go micro 搭建微服務介面的經驗教訓Go微服務
- 來說說成功的雲遷移的10個經驗教訓
- 中小型網際網路公司微服務實踐-經驗和教訓微服務
- 面試經驗之教訓面試
- 需求分析經驗及教訓
- 從微服務遷移到工作流的經驗之談微服務
- oracle遷移資料經驗Oracle
- 經驗教訓,慎用Oracle的審計Oracle
- 經驗分享:將微服務遷移到Spring WebFlux - allegro.tech微服務SpringWebUX
- 《Tsuro》實戰分享:移動VR遊戲開發經驗與教訓VR遊戲開發
- Heap使用Postgres SQL後的經驗教訓SQL
- 引入新程式語言的經驗教訓
- 使用MongoDB血淚般的經驗教訓MongoDB
- 關於Web 2.0 的SOA 經驗教訓Web
- 經驗教訓帖:探尋Reddit廣告服務系統的構建!
- [譯] Data Binding 庫使用的經驗教訓
- 我的軟體開發中經驗教訓
- 艱困之道中學到的經驗教訓
- 建立安卓應用的 30 個經驗教訓安卓
- Core Data 版本遷移經驗總結
- Uber微服務實戰經驗分享微服務
- Go 併發程式設計中的經驗教訓Go程式設計
- 20+條軟體開發的經驗教訓
- 來自10位 IT 大牛的23條經驗教訓
- 「譯文」Google SRE 二十年的經驗教訓Go
- 安裝pytorch-gpu的經驗與教訓PyTorchGPU
- 口袋妖怪Go手遊的幾個經驗教訓Go
- 17個創業公司的失敗經驗教訓創業
- 採用 SOA 最佳實踐,借鑑經驗教訓
- 作為專案經理的7個經驗教訓總結
- 經驗分享:HelloFresh在生產中執行Istio的經驗教訓 - Craig HuberAI
- 經驗&教訓分享:我的第一個機器學習專案機器學習
- 《神鬼寓言》的開發中有些什麼經驗教訓?
- Supercell成立10週年的10條經驗和教訓
- [轉貼]:軟體過程改進:經驗和教訓
- 經驗教訓:Instacart 的實時機器學習之旅 - shu機器學習
- 大規模執行 Apache Airflow 的經驗教訓 - shopifyApacheAI
- 新人入職100天,聊聊自己的經驗&教訓