2020年技術雷達:後端和前端(Web)發展趨勢評估 - softwaremill

banq發表於2020-09-16

分析總結Technology Radar出現的後端和前端(Web)技術。
 

後端發展趨勢

  • 聚合點

在為多個目標(例如Web瀏覽器和移動裝置)構建後端時,我發現GraphQL作為伺服器端的資源聚合器非常方便,尤其是與SpringBoot結合使用時。在Java世界中構建面向微服務的體系結構的一種非常普遍的方法是定義功能之間的界限,併為每個功能編寫SpringBoot應用程式。我們還在我們的體系結構前面找到一個閘道器,其中包括負責請求路由和API組成的閘道器。與其將REST端點暴露於所有可行的場景中,還不如暴露GraphQL端點,以使後端開發與不斷髮展變化的前端需求脫鉤。
此外,GraphQL Inspector可以作為CI管道的一部分執行,以驗證graphql模式,查詢相似或重複的型別並將其與以前的版本進行比較以捕獲重大更改並將通知傳送給Slack。
  • 事件驅動EDA

在過去的幾年中,當您不得不在架構中引入釋出訂閱訊息系統時,Apache Kafka似乎是預設選擇。但是,Kafka不再被廣告為釋出訂閱,而是整個流媒體平臺。另外,一個新孩子Apache Pulsar即將登頂。採用Apache Pulsar的原因有幾個非常令人信服的理由,例如分層儲存,地理複製或對租戶的支援,但是我首先要進行概念驗證,直到將其視為安全,預設和經過實踐驗證的選項為止。
Kafka是一個非常知名的訊息傳遞系統,可以用作各種系統之間的中間層。例如,將資料從SQL資料庫解除安裝到資料倉儲中。可以使用Kafka Connect框架,尤其是JDBC源聯結器來解決此任務。也可以使用稱為Tamer的獨立聯結器Scala應用程式。
提到的兩個工具,Kafka和Pulsar,都非常適合事件驅動的體系結構。儘管您可能在使用同步REST API的過程中熟悉OpenAPI(以前稱為Swagger),但AsyncAPI是通常在任何EDA中都可以找到的非同步API的補充部分。
我們的任務是標準化基於訊息的通訊,並提高不同系統之間的互操作性。
這個專案將要建立一個標準並提供工具,例如程式碼和文件生成器,模擬和測試庫以及驗證器。
  • 微服務

尋找工具來構建面向微服務的架構的Node.js開發人員可能會發現NestJS有用。它支援最常見的通訊樣式,例如請求-響應,非同步訊息傳遞和基於事件。該框架支援TypeScript,利用Express(可與Fastify互換),與Kafka,RabbitMQ和NATS等訊息傳遞系統很好地整合,並支援gRPC和MQTT等各種協議。所有這一切,以及允許開發人員和團隊建立高度可測試,可伸縮,鬆散耦合且易於維護的應用程式。
在部署新版本的應用程式時,測試HTTP API對於確保客戶端安全至關重要。同樣,在現代微服務體系結構中,您需要確保在此處更新一項服務不會破壞那裡的另一項服務。在Spring Cloud世界中,您可以使用Spring Cloud合約,但除此之外,還有很多可用的選擇,其中之一脫穎而出:Karate。對於不需要技術的人(例如產品所有者,領域專家或測試人員),他們可以使用特定領域的語言(例如Cucumber)特別有用,而無需編寫膠水程式碼或步驟定義。此外,隨著UI測試自動化的推出,Karate 已成為完整的端到端測試框架
 

前端開發

  • 微服務正在滲入前端開發

開發後端應用程式時,微服務架構已經類似十字路口一樣古老存在了。另一方面,儘管微前端被認可,但使用量卻少得多。微服務和微前端兩者概念是相似的:分離的程式碼庫、團隊、獨立的生命週期和部署、並明確所有界限。不過,微前端核心思想之一是優先使用當地瀏覽器的功能,而不是定製API。與微服務架構不同的是使用瀏覽器事件進行通訊,而不是像微服務那樣使用全域性釋出訂閱訊息平臺。
到目前為止,我們一直在嘗試使用Frintsingle-spa,並且渴望將這種技術引入更大規模的前端應用程式中。但是請記住,Fritt是一個完整的框架,需要您所有的應用程式都遵守其規則。
  • 前端測試

當尋找與Selenium競爭的、支援多種瀏覽器(Chrome系列和Firefox)的、端到端對開發人員友好的測試框架時,請關注Cypress。請記住,端到端測試位於測試金字塔的上部,並且這種型別的測試要多得多。它還針對具有JavaScript經驗的開發人員,而不是喜歡Selenium UI的(手動)測試人員。
在Jest中編寫單元測試和整合測試時,您可能會發現“Testing Library 是一個有趣的擴充套件。適用於最常見的框架:React,Angular和Vue,它允許使用使用者友好的API查詢DOM節點,例如按標題,標籤,文字,角色和測試ID進行搜尋。
另一種測試是視覺迴歸/驗證測試。您可以驗證整個頁面及其部分,佈局以及特定元素,例如按鈕,文字欄位和影像。BackstopJS是此類測試中的領先工具之一。它支援並行測試執行,可以模擬使用者互動,不僅可以針對影像的參考集合進行測試,還可以針對整個環境(如暫存,UAT或生產)進行測試。
  • 另一個構建工具,另一個CSS工具

由於構建工具,依賴項和庫的更新數量比您敲鍵盤的速度快,因此開始前端開發可能會不知所措。
諸如CRA(Create React App)之類的啟動器應用程式試圖掩蓋這種過度複雜性,並且似乎有一個新的後起之秀-Snowpack-完全消除了對捆綁器的需求,至少在Web開發開始時,它承諾更快地啟動開發環境,立即在瀏覽器中反映更改後的效果,並支援TypeScript,Babel,JSX,Sass和CSS模組。它可以與React和Vue一起使用,並與webpack捆綁器整合以生成針對生產進行最佳化的構建。Snowpack App策略 是關於使用現代ESM語法和Snowpack啟動新專案來安裝npm依賴項的,該依賴項在瀏覽器中本機執行,完全不需要捆綁程式。
除了過於複雜之外,Tailwind CSS是另一個CSS框架,但是它的擴充套件性較差。沒有預先設計的元件,因此不會覆蓋不需要的樣式,也不會除錯特定性規則。它支援響應式設計,並允許提取重複的模式,最終設計為自定義:不僅僅是CSS框架,它還是建立設計系統的引擎。
  • 其他

GitPod不一定專門限於後端或前端開發,它允許在雲中設定您的開發環境。所有必需的第三方服務(例如資料庫,佇列等)都可以透過docker包含到環境中。此外,多個團隊成員可以共享一個相同的工作空間,從而實時檢視彼此的更改,同時處理程式碼。它與GitHub,GitLab和Bitbucket整合良好。
您不再需要功能強大的膝上型電腦來程式設計了,Gitpod在Chromebook上的執行也同樣流暢。您甚至可以使用平板電腦隨時隨地進行編碼。

banq注:以上是主流媒體的觀點,其他觀點參考:

伺服器端渲染是大多數人不同意的真理 - timr

90年代Web又重新迴歸 - Max Böck
 

相關文章