平臺化 - Javaer未來

前世今生

Java誕生於90年代,憑藉面向對象、跨平臺、GUI、無需手動控制內存回收等優勢,簡單一上手早就全球Javaer人羣衆多

憑藉Pivotal推出SpringSpringBoot框架,Javaer則在業務層面享受到了簡單快捷、易擴展等特性。讓其他語言的開發者羨慕,Spring思想也給其他語言框架開發借鑑。

SOA(服務治理)

當企業規模不斷擴大,分散在各個團隊組織中大量應用服務交互沒有標準化、沒有統一監控治理,支離破碎的、混亂不堪的服務爲未來的開發埋下大量風險。

這時候SOA橫空出世,滿足企業標準化、集中化管理的訴求,大量企業紛紛更新改造,爲Javaer帶來了大量重構工作,也爲業務開發爲主的Javaer積累了系統架構知識,在前後端沒分離的以前,中小公司Javaer後端人員對業務、前端、後端、運維全部參與,現今很多架構師主要是後端開發出身。

ESB總線基於SOA架構更進一步擴展,使用WebServiceXMLWeb服務等技術開發。它是所有應用的總線,集中化管理和簡化應用之間的集成,以多種的開放協議(協議轉換)標準爲基礎來支持應用之間通過消息、事件和服務級別上動態的交互,是一種在鬆散耦合的服務和應用之間標準的集成方式。

微服務春風

SOA雖然解決服務治理,但是中心化的缺陷,所有服務必須接入ESB總線,單點故障,性能差。

Martin Fowler提出了微服務的概念,大型單體維護地獄,發佈測試困難,擴展性差,微服務提出了設想,但對於微服務怎麼劃分卻沒有給出明顯的邊界,這不要緊實踐出真理。

微服務以輕量的Http協議,跨語言,松耦合,強調獨立,提供統一註冊發現、熔斷限流、網關、認證授權等基礎設施,但這對於中小型公司來說,開發成本太大。

Netflix就實踐出自己一套方法論,再加上Spring Cloud積極維護,微服務成爲一套銀彈,遍地開花,面試必問微服務,Javaer掌控雷電。

但是微服務拆到那個粒度,服務之間怎麼交互,數據一致性怎麼保證,還是沒找到一套方法論,但是部分公司服務拆的太細,團隊沒拆,服務拆分先行,服務之間存在關聯,又引入BFF聚合服務層,DDD被翻出來當做服務拆分銀彈,DDD明確了領域的邊界,邊界交互的方式,子領域聚合根,那就以此來劃分,以此領域事件來通信?相信完全落地DDD還是少數,作爲企業項目穩定,技術也是演進式的,太激進的技術對於企業還是開發來說成本太高、試錯風險太大。

不考慮場景,提出解決方法是不負責任的,微服務不是銀彈

大中臺戰略

阿里提出大中臺戰略,其實在企業內部技術部門已經服務化,獨立無耦合已經拆分,這個中臺戰略是要跨部門組織協調,企業內部不同團隊負責的業務線不同,業務模式也不同,這要強行中臺化,我覺得是兩級化理解了上層的意思,所謂的複用,是有前提,業務模式一樣的,多部門利益是一致的。

雖然阿里業務部門的中臺化無法借鑑,但是對於數據、技術領域的中臺化確實可以落地的,畢竟企業內部技術棧、軟件開發的流程都差不多。

時代寵兒-雲原生

OpenStack標準化困難、部署複雜,被很多企業詬病 Docker就像Spring幹掉了EJB,年邁的老者面對年輕人,只能暗罵年輕人不講武德。Docker的簡單和留下也讓它成爲事實上的容器標準,但是Docker沒有對多機統一管理、交互的方法,之後Docker Swarm的強硬也讓雲大廠拋棄Docker,反而擁抱Google開源的kubernetes產品,Google贏得了勝利果實,是容器頂層標準制定者。

有了物理機虛擬化、多機多數據中心基礎設施,企業技術中臺落地事半功倍,Javaer從運維中釋放出來,只要完成鏡像的製作,工作就完成了。

SpringCloud的API網關,熔斷、限流、東西向流量、服務註冊發現還是在應用層做,儘管一般以SDKAgent探針接入,但是事實上對於代碼上還是有侵入,而且SpringCloud體系只對Javaer友好,企業內部其他語言需要自己自研。

Service Mesh統一接管微服務基礎設施,在平臺層做統一處理,屏蔽底層應用差異,讓其他語言開發者也能享受服務網格的利好,企業招聘也可以更加多樣化,開發不侷限於語言,再合適的場景引入適合技術棧。但Mesh本身對性能有一定的影響,需要根據場景定製化,多一層代理,對性能損耗是必然,要看業務容忍度。

Javaer突然發現以前靠着微服務的雷電不管用,統一被平臺接管,Javaer在架構上能做的事情已經不多,Java出了JDK17還是沒解決協程,ZGC生產應用有待考證。

Java兩個未來發展方向,Loom協程和graalvm,但是這些都對業務開發來說並不能成爲競爭力,畢竟面試並不考業務,可以發力一地方就是在協程難產時,掌握Reactor編程技巧,但是部分開源框架對其支持落後,改變編程模型有一點難度,騰訊和阿里的JDK都支持了無侵入協程,在JVM層面優化部分阻塞代碼。

函數即是正義 - FaaS

前面graalvm語言是不懂的,二進制才原汁原味,減少溝通成本,參考類似於DAG流程編排,事件驅動,函數化,SpringBoot太重了!

自宮 - 低代碼平臺

有幸接觸用過一段時間低代碼平臺,統一標準,抽象業務模型,元數據管理,區分推拉,如果業務足夠簡單,不需要寫代碼,以後不會再存在開發和產品對立、撕逼場面了,產品經理就是設計和開發,通過設計來解決簡化複雜業務

八股文,內卷

在面試這個事情上,在國內人供過於求背景下,產業轉型緩慢,高新技術崗位缺乏,一旦有高薪行業,大量人湧入,不斷降低行業人員紅利,藍海瞬間紅海。

在經濟下行週期中,企業崗位不再新增崗位,甚至減少崗位,從業人員不變的情況,211/985碩士以前想都不敢想,企業現在還可以挑着選。

八股文、LeeCode應運而生,Javaer作爲業務開發,在工作不可能想做什麼就做什麼,你能力行企業不會允許,穩定大於一切,學歷和麪試題不過是爲了減少面試者,企業管理員不能花那麼多時間對所有面試一個個面試,一刀切是無奈之舉,這是對面試者和麪試官的雙刃劍,因爲行業一旦發展惡性循環,你處於旋渦中,必然要被捲入,跟着內卷,跟着八股文,成爲受害者。下班之後照着書抄着無意義的博客,Copy別人代碼倉庫改下包名的開源,無意義的工作並不會增加產出,但會擠壓你的空餘時間,畢竟996的開源都不可持續的,希望大家能共同維護好環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章