從0開始學微服務:微服務,從放棄到入門

從0開始學微服務:微服務,從放棄到入門

微服務是當下非常熱門的話題。我平時工作之外和圈子裡的朋友們交流,提到微服務等新技術,他們先是興奮,後又無奈。興奮的是他們看到了新技術帶來的便利,無奈的是團隊規模和能力又反過來制約了他們採用新技術的步伐。而他們也對微服務有著這樣或那樣的理解,但更多的是疑惑,比如說他們會問:

  • 微服務這技術雖然面試的時候總有人提,但作為一個開發,是不是和我關係不大?那不都是架構師的事嗎?
  • 微服務不都是大廠在玩嗎?我們這個業務體量用得著嗎?
  • 微服務特別複雜,沒個 100 人的研發團隊是不是就無法落地?

我特別理解這樣的困惑,因為我也是這麼一步步走過來的。的確,大公司動輒就是幾百上千的研發人員,並且其中不乏頂尖選手。他們有經驗、有能力,也有業務場景,所以在技術的選擇上也會更為“冒進”。而對於大部分的中小團隊來說,當微服務架構成為剛需的時候,他們更多的是彷徨和猶豫。

先給你講講我的經歷吧。最開始,微博首頁信息流的後端團隊規模也不大,只有七八個人。當時我們就想著快速迭代,業務也就採用了單體應用的架構。因為求快,不同功能模塊的代碼耦合在一起,編譯打包部署也都在一起。

後來業務規模不斷擴大,團隊人員也增長到二十多人,這時候單體應用架構的開發模式就開始暴露出問題了。那時候,每一次功能發佈和上線都需要一個上線負責人來收集上線列表,並協調所有相關的開發人員合併代碼到主幹,然後編譯打包,修改工程依賴的 JAR 包版本。

你應該可以想象我們那時的狀況。如果一次上線超過五個人參與的話,就會經常出現各種問題:有的人忘記提交代碼、有的人忘記打包、有的人忘記修改工程依賴到最新版本。一次上線過程需要反覆確認,耗費了大量精力,嚴重影響了整體的開發和部署效率。

看到這,不知你是否大腿一拍,大聲叫到:這不就是我們團隊每天都在面對的問題嘛!

當時我們為了解決這些問題,做了很細緻的技術調研,最後選定了服務化的解決方案,對原有的單體應用架構進行改造,把功能相對獨立的模塊拆分出去,部署為微服務,分別交給專門的更小的團隊來維護。後來我們又引入了 Docker 容器化,以及 Service Mesh 等技術,為了更好地適應微博業務的高速發展。

可以說,微博的信息流後端架構經歷了單體應用 - 微服務架構 - 容器化應用 - DevOps 的發展歷程。而我也正是因為親歷了微博的架構演進過程,對於中小團隊如何落地微服務體系有了更為深刻的理解。

所以,在這個專欄裡,我會秉承著這個思路,不斷提醒自己,這個方案中小團隊是否可用,他們能否駕馭這些技術。我想,這是大部分中小團隊的剛需,也是這個專欄的主要出發點。他們需要的不是一個大而全的東西,而是一套可以快速落地的方法論。

我希望在專欄裡不僅跟你分享微服務架構的基礎知識,更是從微服務體系的角度,和你深入討論如何將微服務落地,幫你掃清最開始提到的那些疑惑。

那什麼是微服務體系呢?在我看來,微服務發展到現在,已經不再單單侷限於微服務架構本身,還與容器化、DevOps 等新的理念相結合,成為當前移動互聯網時代最先進的業務架構解決方案,能更好地迎合移動互聯網業務快速迭代的要求。

在接下來的三個月裡,我將由淺入深、由表及裡,逐步帶你探索微服務的世界,幫你從 0 開始構建微服務體系。具體來說,專欄分為四個部分:

  • 第一部分,我會盡量用最通俗的語言去講解微服務架構的基本原理,幫你解答三個問題:什麼是微服務?什麼時候適合微服務改造?微服務架構到底是什麼樣的?
  • 第二部分,我會結合在實際業務中的經驗,給你講述微服務架構改造過程中可能會遇到的問題和對應的解決方案,以及搭建微服務架構時,如何做技術選型。
  • 第三部分,我會給你講述微服務、容器化、DevOps 這三者之間的關係,以及在具體實踐中如何運用這三種技術給業務的架構帶來質的飛躍。
  • 第四部分,我會給你介紹下一代微服務體系可能的發展方向,並分享我對此的看法。

如果你剛剛接觸微服務體系,希望我的專欄能帶你快速入門微服務,具備搭建一套微服務基本架構的能力;如果你有過微服務架構的開發經歷,希望可以幫你解決在實際開發過程中遇到的一些問題;如果你已經玩轉了微服務的各個方面,希望你可以和我切磋,交流開發心得,暢談下一代微服務的技術發展;即使你現在還沒有用到微服務,但通過專欄的學習,希望你一樣能夠掌握微服務架構的思維的精髓,提升解決複雜問題的能力。

微服務是當下最火熱的後端架構之一。不管你是一個什麼級別的程序員,也不論你在一個什麼體量的公司,服務化都是你遲早會遇到的難題。從我的經驗來看,實踐微服務的過程本身也是一個升級打怪的過程,這中間你會遇到基本上所有後端架構的問題。解決了這些問題,你自然也就理解了那些高深的概念,也就成為了一名架構師,成長和能力提升都是這個過程的附屬品。

不說虛的,我希望我們能給你在“微服務道路”上增加一塊敲門磚,希望我講的東西對你有所幫助、有所啟發。用動腦學院團隊的話來說,我要為你交付結果,學完這個專題,希望你可以釐清微服務的脈絡,並在恰當的時候,也可以主導自己公司的服務化進程。


分享到:


相關文章: