2019年下半年的技術趨勢彙總丨技術雷達

技術雷達是 ThoughtWorks 每半年發佈一期的技術趨勢報告,它不僅是一份持續的技術成熟度評估,其產生還源於 ThoughtWorks 另一個更大宏大的使命—IT 革命。 技術雷達自 2010 年創辦以來,已經走過 10 年、累計發佈 21 期。它比那些我們能在市面上見到的其他技術行情和預測報告更加具體、更具可操作性,因爲它不僅涉及到新技術大趨勢,更有細緻到類庫和工具的推薦和評論,因此更容易落地。

本期四大主題

雲:多即是少?

在主流雲服務提供商提供的核心功能日益趨同的當下,競爭焦點已經轉移到他們能夠提供的附加服務上,這就鼓勵了雲服務商以驚人的速度發佈新產品。爲在競爭中取得優勢,很多新服務還在存有瑕疵、功能尚不完整的階段,就被匆匆推向市場。過分關注速度以及產品擴張,常常導致這些由收購或倉促打造而來的服務缺陷頻出,文檔質量差,難於實現自動化,以及與服務商自己的其他服務不能完整集成。團隊在嘗試使用雲服務提供商承諾的功能卻經常遇到問題的時候,會感到挫敗。考慮到在選擇雲服務提供商時,通常都是由組織高層基於各個不同維度進行決策,我們建議實施團隊:不要假設你們的雲服務提供商的所有服務都能確保相同的質量,應該對關鍵功能進行測試。如果你們的產品上市時間能夠容納額外的運維開銷,可以考慮替代的開源解決方案,或者使用多雲策略。

保護軟件供應鏈

組織應該抵制冗長的人工檢測和需要審批的象牙塔治理規則。相反,自動化的依賴保護(依賴漂移適應度函數),安全性(安全策略即代碼)和其他治理機制(運行成本納入架構適應度函數)可以保護軟件項目中重要但不緊急的部分。這個關於策略、合規性和治理即代碼的主題在我們對話中多次出現。我們看到自動化不斷提升的軟件開發生態系統的自然演化:與自動測試、持續交付和基礎設施即代碼的持續集成,以及如今的自動化治理。雲成本、依賴管理、架構結構等以往人工流程的自動化呈現出一種自然演進的態勢;我們正在學習如何讓軟件交付中的所有重要方面自動化。

打開機器學習的黑匣子

通過使用模式匹配、反向傳播和其他衆所周知的技術,機器學習通常貌似能解決人類所無法解決的問題。然而,儘管這些技術功能強大,但許多模型本質上令人費解。這意味着機器學習所計算的結果,無法用邏輯推理來解釋。所以,當需要了解決定是如何做出,或存在將偏見、抽樣、算法或其他偏差引入模型的風險時,人們就會一籌莫展。現在我們看到,諸如假設分析之類的工具,以及道德偏差測試這樣的技術正在涌現出來。這些工具和技術可以幫助我們發現模型的侷限性,並預測模型的輸出結果。儘管這些在可解釋性方面的改進,是朝着正確方向邁出的一步,但理解深度神經網絡,仍然是一個遙不可及的目標。因此,在選擇機器學習模型時,數據科學家開始將可解釋性視爲第一要務。

軟件開發是一項團隊運動

技術雷達誕生之初,我們就提醒不要使用那些會分隔開發團隊、阻礙反饋及協作的工具和技術。通常,當新的專業人才參與項目後,爲避免陷入“常規”開發的混亂局面,從業者、供應商和工具會要求某一些開發工作必須在隔離的環境中完成。我們反對這種觀念,也在不斷尋求新的方法使軟件開發重回團隊協作。在構建諸如軟件之類的複雜工程時,反饋是至關重要的。隨着項目不斷提升對專業人才的需求,我們努力讓他們融入常規的團隊協作和反饋互動中。我們特別不提倡“10 倍工程師”的理念,更喜歡專注於創建和賦能“10 倍團隊”。我們已經看到這在如何將設計、數據科學和安全融入跨功能團隊,並獲得成熟的自動化支持方面發揮了作用。下個階段應致力於引入更多治理方法和合規行爲。

象限亮點搶先看

技術

10x engineers

在過去的幾個月中,10 倍工程師一詞受到了密切的關注。一個廣泛傳播的推文討論在實質上建議公司應原諒反社會和破壞性的行爲,以留住被認爲個人產出巨大的工程師。幸運的是,許多人在社交媒體上都嘲笑了這個概念,但是“明星開發者”的刻板印象仍然普遍存在。根據我們的經驗,偉大的工程師不是因爲個人產出而是因爲能在優秀的團隊中合作而誕生。打造一支混合不同經驗和背景,但成員才華橫溢的團隊,併爲團隊合作、學習和持續改進提供良好的助力,這會是更行之有效的方式。這些 10 倍團隊行動起來更快,彈性也更強,——而無需屈從錯誤的行爲。

Zhong Tai

近年來,中臺一直是中國 IT 界的流行語,但它尚未在西方國家流行起來。中臺的核心是提供封裝業務模型的方法。它旨在幫助新型的小型企業提供一流的服務,而無需傳統企業基礎架構的成本,並使現有組織能夠以驚人的速度將創新服務推向市場。中臺戰略最初是由阿里巴巴提出的,並很快被許多中國的互聯網公司所採用,因爲它們的商業模式是數字原生的,可以複製到新的市場和領域。如今,越來越多的中國公司將中臺作爲數字化轉型的槓桿。

Continuous delivery for machine learning (CD4ML)

隨着基於 ML 的應用程序的日益普及以及構建它們所涉及的技術複雜性,我們的團隊嚴重依賴於機器學習的持續交付(CD4ML),以安全快速且可持續的方式交付此類應用程序。CD4ML 是將 CD 原理和實踐引入 ML 應用程序的學科。它消除了從訓練模型到部署生產環境的長週期。在構建和部署模型的端到端過程中,CD4ML 消除了不同團隊、數據工程師、數據科學家和 ML 工程師之間的手動傳遞。使用 CD4ML,我們的團隊成功地實現了基於 ML 的應用程序所有組件的自動化版本管理,測試和部署,包括數據,模型和代碼。

Ethical bias testing

在過去的一年,我們已經看到人們對機器學習尤其是深度神經網絡的興趣正在發生變化。到目前爲止,這些模型的卓越功能推動了工具和技術上令人興奮的發展。雖然目前,人們越來越擔心這些模型可能會造成意外傷害。例如,一個模型可以經過訓練,通過簡單地排除弱勢申請人,而做出有利可圖的信用決策。幸運的是,我們看到人們對道德偏見測試的興趣與日俱增,這將有助於發現潛在的有害決策。一些工具,例如 lime, AI Fairness 360 或者 What-if,可以幫助我們發現一些訓練數據和可視化工具中未被充分代表的羣體而導致的不準確性。可視化工具中,Google Facets 和 Facets Dive 可以用來發現大量訓練數據中的子組。但是,這是一個正在發展的領域,我們期待隨着時間的推移,出現針對道德偏見測試的標準和實踐。

平臺

Apollo Auto

正如 Apollo Auto 所展示的那樣,曾經只有科技巨頭才能獨享的自動駕駛技術,現在已經變得不再高深莫測。百度旗下的 Apollo 項目的目標,是成爲自動駕駛產業裏的安卓操作系統。Apollo 平臺擁有諸如感知、模擬、規劃以及智能控制相關的一系列組件,能夠讓汽車公司將他們的自動駕駛系統集成到汽車硬件中。雖然開發者社區剛剛起步,但是許多第三方廠商陸續加入並貢獻良多。我們的一個項目就是幫助客戶,使用基於 Apollo 的自動駕駛系統,完成自動駕駛執照的考試。Apollo 同時也提供演進式架構的方法,以逐步引入先進功能,讓我們能以敏捷和迭代的方式,集成更多的傳感器和功能。

GraalVM

GraalVM 是一種由 Oracle 開發的通用虛擬機,用於運行基於 JVM 的語言,JavaScript,Python,Ruby 和 R 以及 C/C++ 等其他基於 LLVM 的語言編寫的應用程序。簡單地說,GraalVM 可以用作 JVM 和其他所支持的非 JVM 的語言的高性能虛擬機。但它也允許我們編寫多種語言的應用程序,而且對性能影響很小 ; 它的原生鏡像程序(當前僅可作爲早期採用者的技術使用)讓我們可以提前將 Java 代碼編譯成獨立的可執行文件,從而加快啓動速度並減少內存的使用。GraalVM 在 Java 社區引起了巨大的反響,並且許多 Java 框架(包括 Micronaut,Quarkus 和 Helidon)已經在利用它的技術了。

Oculus Quest

我們在雷達中對 AR / VR(增強現實 / 虛擬現實)技術關注了很長時間,但其僅僅在特定的平臺及外接方案上展現了吸引力。Oculus Quest 打破了這個局面,成爲首批面向大衆消費市場的無需智能手機綁定或支持的 VR 一體機之一。該設備爲潛在的 VR 應用的大量增長打開了大門,其需求將反過來推動市場朝着更積極創新的方向發展。我們很欣賞該設備爲 VR 普及帶來的推動力,迫不及待地想看到即將到來的變化。

ONNX

目前,圍繞神經網絡的相關工具和框架的生態系統正在迅速地發展。但是,這些框架和工具之間的互通性也成爲一個挑戰。在機器學習領域,通常需要在一種工具中快速進行原型設計和訓練,然後將其部署到其他工具中進行推理。因爲這些工具的內部格式並不兼容,爲了使他們兼容,我們需要實現並維護很多麻煩的轉換器。開放神經網絡交換格式 ONNX 的出現,就是爲解決這一問題。在 ONNX 中,表示神經網絡的圖形由標準規格的操作符和一系列表示訓練權重和神經網絡模型的格式所組成,這些圖形可以在不同的工具間傳遞。這種一致的格式帶來了很多的可能性,其中之一就是 Model Zoo,它是一系列基於 ONNX 格式的預訓練模型的集合。

工具

Figma

交互和視覺設計的一大痛點是缺乏用於協作的工具, Figma 就是爲此而生的。它不僅具有與 Sketch 和 Invision 等設計程序相同的功能,而且還支持與其他人實時協作,幫助多人一起探索新的想法。我們的團隊發現 Figma 非常有用,特別是它支持與簡化了遠程和分佈式的設計工作。除了協作功能之外, Figma 還提供了有助於改善 DesignOps 流程的 API。

Jib

構建容器化應用程序可能需要在開發環境和構建代理上進行復雜的配置。如果你要構建 Java 應用程序並使用 Docker,則可以考慮使用 Google 的 Jib。Jib 是同時支持 Maven 和 Gradle 的開源插件。Jib 插件使用構建配置中的信息,將應用程序直接構建爲 Docker 鏡像,而不需要 Dockerfile 或 Docker 守護程序。Jib 也針對鏡像分層進行了優化,可以提升後續構建的速度。

Twistlock

Twistlock 是提供構建時和運行時安全漏洞檢測和預防功能的商業產品,可以保護 VM 、容器調度程序和容器,以及應用程序依賴的各類註冊中心和存儲庫。Twistlock 幫助我們的團隊加快了受監管應用程序的開發,這些應用程序的基礎設施和架構需要遵循一定的規範,例如支付卡行業(PCI)標準和《健康保險可移植性和責任法案》(HIPAA)。我們的團隊很享受 Twistlock 帶來的開發人員體驗:能夠以代碼形式管理資源,可以輕鬆地與其他常見可觀察性平臺進行集成,以及根據行業共識最佳實踐來衡量基礎架構的,直接可用的基準測試。我們在例行的運行時掃描過程中,尤其是在有合規性要求的情況下,使用 Twistlock 對雲原生應用程序進行掃描。

in-toto

我們注意到,越來越多的地方,尤其是在受監管的行業,爲了確保軟件的供應鏈安全會使用二進制驗證。當前主流的做法,或是構建一個定製的二進制驗證系統,亦或是依賴於某個雲廠商提供的服務。我們高興地看到出現了開源的 in-toto 項目。In-toto 是一個框架,能夠以密碼學的方式驗證軟件製品生產路徑上的每個組件和步驟。該項目可以與衆多廣泛使用的構建工具、容器審計工具和部署工具進行集成。由於軟件供應鏈工具是一個組織的安全設施中至關重要的部分,因此我們非常喜歡 in-toto。作爲一個開源項目,它的行爲是透明的,並且其自身的完整性和供應鏈也可以由社區進行驗證。至於它是否會贏得足夠多的用戶和貢獻者以在這個領域競爭,我們拭目以待。

語言 & 框架

Arrow

Arrow 是適用於 Kotlin 的函數式編程庫,是由兩個現有流行庫 ( kategory 和 funKTionale ) 合併而成。雖然 Kotlin 爲函數式編程提供了構建模塊,但 Arrow 爲應用程序開發人員準備了隨時可用的高級抽象包。它提供數據類型、類型類、作用 (Effects)、Optics 和其他函數式編程模式,並且可以與流行庫相集成。我們對於 Arrow 最初的好印象如今已經在生產環境的應用構建中得到了印證。

Flutter

我們的一些團隊使用了 Flutter 並且很喜愛它。作爲跨平臺框架,它可以幫助我們用 Dart 語言編寫原生移動應用。藉助 Dart,Flutter 可以編譯成平臺原生代碼並直接和目標平臺通訊,從而避免了橋接和上下文切換。Flutter 的熱重載(hot-reload)特性亦讓人驚歎,它能在編寫代碼時提供超快的視覺反饋,我們推薦你在項目中嘗試使用 Flutter。

Gatsby.js

Gatsby.js 是一個用於編寫 JAMstack 架構風格網絡應用的框架。應用的一部分在構建時生成並且以靜態站點的形式進行部署。剩餘的功能以漸進式網絡應用的方式進行實現並運行在瀏覽器中。這些應用無需服務端代碼即可運行。通常來說,漸進式網絡應用會通過調用第三方 API,或者現成的 SaaS 解決方案實現內容管理等功能。在 Gatsby.js 的例子中,所有的客戶端和構建代碼都是用 React 編寫。框架包含了一些優化來讓程序運行得更快。它將代碼與數據分離來最大程度地減少加載時間,並且通過在應用內跳轉時預先加載資源來提高性能。接口通過 GraphQL 進行調用並且通過一些插件來簡化和現有服務的集成。

SwiftUI

蘋果在其新的 SwiftUI 框架上邁出了一大步,該框架用於在 macOS 和 iOS 平臺上實現用戶界面。我們很高興 SwiftUI 跨越了 Interface Builder 和 XCode 之間略顯混亂的關係,並採用了一致的、聲明性的和以代碼爲中心的方式。現在,你可以在 XCode 11 中並排查看代碼和生成的可視化界面,從而獲得更好的開發人員體驗。SwiftUI 框架還從近年來主導 Web 開發的 React.js 的世界中汲取了靈感,它利用視圖模型中的不可變值和異步更新機制,構成了統一的反應式編程模型。這爲開發人員提供了一個完全原生的替代品,以替代類似 React Native 或 Flutter 之類的反應式框架。儘管 SwiftUI 確實代表了 Apple UI 開發的未來,但它是一個相當新的事物,還需要花費一些時間來打磨。我們期待改進的文檔,和一個可以爲測試與其他工程化問題建立一套實踐的開發者社區。

以上是我們在最新一卷技術雷達中隨機摘取的幾個 Blip,欲獲取整版技術雷達,請點擊此處下載

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