中一群資深技術領導組成的技術顧問委員會創(chuàng)建了該雷達
2021-10-21
由中國高級技術領導小組組成的技術顧問委員會(TAB)創(chuàng)建了該雷達。他們定期會面,討論對行業(yè)產(chǎn)生重大影響的全球技術戰(zhàn)略和技術趨勢。該雷達以獨特的形式記錄技術咨詢委員會的討論結果,為從開發(fā)人員到 CIO 的各種利益相關者提供價值。這些內容只是一個簡短的總結,我們建議您探索這些技術以了解更多細節(jié)。
這種雷達本質上是圖形化的,將各種技術項目歸類為技術、工具、平臺、語言和框架。如果一個項目可以出現(xiàn)在多個象限中,我們選擇看起來最合適的象限。我們將這些技術進一步分為四個環(huán),以反映我們目前對它們的態(tài)度。
本期科技雷達亮點
對話式用戶界面和自然語言處理
人機對話——這種新的應用交互方式——與蘋果Siri、微軟、谷歌Allo等工具一起,如風暴般席卷了整個IT生態(tài)。這場風暴隨后繼續(xù)擴展到家用設備,例如亞馬遜的 Echo 和谷歌的 Home。雖然構建對話式自然語言用戶界面會遇到許多新的挑戰(zhàn),但它帶來的好處是顯著的。亞馬遜 Echo 研發(fā)團隊故意省略了產(chǎn)品上的屏幕,這迫使團隊成員重新思考許多人機交互場景。
這種“對話”趨勢不僅限于語音。隨著消息傳遞應用程序已經(jīng)發(fā)展到能夠主宰電話和工作場所,我們已經(jīng)看到了一些在智能聊天機器人的幫助下的多人對話。隨著這些平臺的不斷完善,他們會逐漸學會理解對話的語境和意圖,讓人機交互更加真實、引人入勝。市場和主流媒體對該領域的興趣激增,增加了開發(fā)者對這種全新的個人“外皮層”()交互模型的興趣。
智能即服務
最近,一系列我們稱之為“智能即服務”(as a)的平臺爆發(fā)了。這些平臺與各種強大的技術領域密切相關,從語音處理到自然語言識別、圖像識別和深度學習。
幾年前,擁有這些功能需要昂貴的資源,但現(xiàn)在有了開源或基于 SaaS 的解決方案。這也意味著“云計算之戰(zhàn)”逐漸從存儲和計算能力轉向認知能力。
之前和這兩個差異化工具的開源,就是這場戰(zhàn)爭的見證。這個領域的大廠商都有自己的產(chǎn)品,同時一些小眾廠商的產(chǎn)品也值得一試。盡管我們對這些服務的道德和隱私影響有所保留,但我們相信這些強大工具的創(chuàng)新使用將帶來巨大的前景。我們的客戶已經(jīng)開始從新的角度研究如何在他們的業(yè)務中將人工智能和商品的認知能力結合起來。
開發(fā)者體驗成為差異化競爭新優(yōu)勢
多年來,用戶體驗設計一直是科技產(chǎn)品公司持續(xù)關注的關鍵差異化競爭優(yōu)勢。而現(xiàn)在面向開發(fā)者的工具和產(chǎn)品的迅速崛起,加上工程人才的稀缺,也迫使這些公司也開始關注開發(fā)者的體驗。
越來越多的組織基于減少的“工程摩擦”( )來評估云產(chǎn)品,將API視為產(chǎn)品來打磨它們,并專注于工程生產(chǎn)力以提高團隊效率。現(xiàn)在,我們一直癡迷于高效的工程實踐,以及那些能讓開發(fā)人員輕松工作的工具和平臺。我們很高興看到業(yè)界開始采用這些想法。
這些關鍵技術包括:使用內部基礎設施作為產(chǎn)品,使其具有足夠的吸引力與外部產(chǎn)品競爭;專注于自助服務系統(tǒng);了解正在開發(fā)的 API 的“開發(fā)人員工效學” () ;封裝遺留系統(tǒng);并投資于開發(fā)者的“持續(xù)用戶同理心研究”(user)。
平臺的興起
技術雷達的主題來自審查過程中的觀察和交流。在技??術雷達的上次編輯期間,我們注意到進入平臺象限的新條目數(shù)量。我們認為這表明該平臺在軟件開發(fā)生態(tài)系統(tǒng)中具有更廣闊的前景。
那些備受矚目的硅谷公司向我們展示了構建合理的平臺如何帶來顯著的收益。他們成功的部分原因來自于找到合適的套餐和能力水平。從技術雷達強調的高級功能(如自然語言處理)到基礎設施平臺(如亞馬遜),越來越多的“平臺思維”出現(xiàn)在整個技術生態(tài)系統(tǒng)中。
當一些選定的功能要通過產(chǎn)品化的 API 提供時,公司開始考慮平臺方法。開發(fā)團隊在整合和提升開發(fā)者體驗上有更多的想法。行業(yè)似乎終于走上了一條“打包、方便、實用”合理組合的道路。
我們喜歡這樣定義平臺:平臺應該提供自助服務的API,并且在團隊環(huán)境中易于配置和創(chuàng)建——這很好地呼應了新興的“開發(fā)者體驗”主題。我們預計該平臺的定義和功能將在不久的將來進一步完善。
盛行
這種語言總是不斷出現(xiàn)在有趣的地方。作為一種易于使用的通用編程語言編程語言研究框架,它在數(shù)學和科學編程領域有著堅實的基礎。這使得它始終被草根學術研究界所采用。近期,圍繞人工智能商業(yè)化應用的行業(yè)趨勢及其成熟度,為社區(qū)注入了新的活力。
本卷中的雷達重點介紹了一些可以促進人工智能生態(tài)系統(tǒng)發(fā)展的庫,包括機器學習領域,智能數(shù)據(jù)流圖的使用,以及通過自然語言處理進行對話識別的應用程序接口。我們越來越多地看到組織中科學家和工程師之間的距離正在縮小,他們過去對喜歡的工具的偏見正在減弱。
微服務和容器等架構簡化了生產(chǎn)環(huán)境中的執(zhí)行。工程師現(xiàn)在可以通過與語言和技術無關的 API 來部署和集成科學家專門創(chuàng)建的代碼。與目前將特定語言(如 R 語言)翻譯成生產(chǎn)環(huán)境的做法相比,這種流動性是在研究人員和工程師之間建立一致生態(tài)系統(tǒng)的重要一步。
一、技術
將 API 視為產(chǎn)品
企業(yè)已經(jīng)完全接受通過 API 向內外部開發(fā)人員公開業(yè)務能力。API 承諾能夠通過重組核心功能來快速測試業(yè)務想法。但是API和普通的企業(yè)集成服務有什么區(qū)別呢?區(qū)別之一是將 API 視為產(chǎn)品 (),即使 API 消費者是企業(yè)的內部系統(tǒng)或開發(fā)人員。構建 API 的團隊應該了解客戶的需求,并使產(chǎn)品始終滿足這些需求??捎眯詼y試()和用戶體驗研究有助于理解 API 使用模式,并將產(chǎn)品思維帶入 API,從而獲得更好的 API 設計。API應該有一個負責的,負責關注用戶并持續(xù)改進。根據(jù)我們的經(jīng)驗,
將秘密信息的管理與代碼解耦
在之前的技術雷達中,我們提到過git-and等工具可以幫助我們保證源代碼內部秘密信息的安全。將機密信息的管理與代碼解耦是我們提醒技術人員還有其他選項可以存儲機密信息的另一種方式。例如,持續(xù)集成服務器和配置管理工具都提供了與應用程序代碼分離的秘密信息存儲機制。這兩種方法都是可行的,我們建議您在項目中至少使用一種。
構建 API 的團隊應該了解客戶的需求,并使產(chǎn)品始終滿足這些需求??捎眯詼y試()和用戶體驗研究有助于理解 API 使用模式,并將產(chǎn)品思維帶入 API,從而獲得更好的 API 設計?!?/p>
封裝遺留系統(tǒng)
處理遺留代碼,尤其是大型單體應用程序,是最糟糕的開發(fā)體驗之一。盡管我們警告不要擴展和積極維護遺留的單體應用程序,但它們在各種環(huán)境中仍然是依賴項。開發(fā)人員往往低估了這些依賴開發(fā)所需的成本和時間。為了減少摩擦,開發(fā)人員使用虛擬機鏡像或容器來創(chuàng)建遺留系統(tǒng)及其配置的鏡像。其目的是封裝遺留系統(tǒng),并允許開發(fā)人員在本地運行。這消除了遺留系統(tǒng)重建、重新配置和共享環(huán)境的需要。
在理想情況下,團隊通過管道生成遺留系統(tǒng)的相應圖像。開發(fā)人員可以以更可靠的方式在他們自己的沙箱環(huán)境中編排和運行這些遺留系統(tǒng)。這種方式雖然可以減少每個開發(fā)者花費的總時間,但是當有下游依賴的團隊不愿意創(chuàng)建遺留系統(tǒng)鏡像供其他人使用時,這種方式的效果就會非常有限。
漸進式網(wǎng)絡應用程序
漸進式 Web 應用程序 (PWA) 的增長是將用戶帶回 Web 以應對“移動應用程序疲勞”的最新嘗試。它于 2015 年首次提出。 PWA 是一種 Web 應用程序,它利用最新技術的優(yōu)勢將最好的 Web 和原生移動應用程序結合起來。它使用了一系列開放標準技術,例如緩存和推送 API。我們可以使用這些技術為原生應用程序創(chuàng)建獨立于平臺的移動應用程序和用戶體驗。這平衡了網(wǎng)絡應用和原生應用的優(yōu)缺點,幫助移動應用開發(fā)者打破應用商店的限制來觸達用戶。您可以將 PWA 視為具有本機應用程序功能和外觀的網(wǎng)站。
無服務器架構
無服務器架構用短暫的計算能力取代了長時間運行的虛擬機。這種算力會根據(jù)服務請求存在,服務完成后立即消失。我們的團隊非常喜歡無服務架構方法。這種方法效果很好,我們認為它是一種有效的架構選擇。值得注意的是,這種方法不是“要么全部使用,要么不使用”的方法。我們的一些團隊已經(jīng)使用無服務器架構來部署新的系統(tǒng)模塊,而其他模塊仍然使用傳統(tǒng)架構。盡管幾乎是無服務器的同義詞,但其他云計算服務提供商也提供類似的產(chǎn)品。例如,我們還建議評估一些小眾玩家。
會話感知 API
語音服務、Siri 等技術大大降低了基于語音的軟件交互的門檻。但是,在許多現(xiàn)有 API 之上構建更多對話輸入(語音或文本)仍然很困難。— API
語音服務、Siri 等技術大大降低了基于語音的軟件交互的門檻。但是,在許多現(xiàn)有 API 之上構建更多對話輸入(語音或文本)仍然很困難。尤其是涉及有狀態(tài)交互場景,后續(xù)交互需要知道整個對話上下文。在這種互動方式中,如果我們要問從曼徹斯特到格拉斯哥的火車,可以直接問“第一班火車什么時候開?” 無需再次提供對話的上下文。
通常這個上下文會出現(xiàn)在我們發(fā)送回瀏覽器的初始響應中。但是在語音接口的情況下,我們需要在其他地方處理這個上下文。會話感知 API 是前端服務模型的一個示例,其中后端是語音聊天平臺。這種類型的API可以通過在代表語音前端調用底層服務時管理會話的狀態(tài)來處理這種交互模式的細節(jié)。
游戲領域之外的VR應用
虛擬現(xiàn)實的想法已經(jīng)存在了 50 多年。隨著計算技術的不斷進步,許多想法被炒作和探索。我們相信這個領域已經(jīng)達到了一個臨界點。去年,市場上已經(jīng)發(fā)布了價格實惠、面向消費者的 VR 耳機,再加上現(xiàn)代顯卡,可以為這些設備提供足夠的性能來創(chuàng)造身臨其境的體驗。雖然這些頭戴式設備目前主要面向電子游戲愛好者,但我們相信它們在游戲領域之外的VR應用中仍有很多可能性。但是,沒有制作視頻游戲經(jīng)驗的團隊不應低估創(chuàng)建良好 3D 模型和紋理所需的時間和技能。
二、平臺
安全模塊
“最小特權原則”鼓勵我們限制軟件只訪問它們需要的資源。但是,在正常情況下,進程可以執(zhí)行運行它的用戶可以執(zhí)行的任何操作,包括綁定端口和執(zhí)行腳本。 (LSM) 框架允許將安全性擴展到內核,例如使用該模塊來實現(xiàn) MAC。并且是最著名的 LSM 兼容實現(xiàn),它們與內核一起發(fā)布。我們建議團隊學習使用這些安全框架(這就是我們采用它們的原因),它可以幫助團隊評估誰可以訪問共享主機上的哪些資源(包括服務)。這種保守的訪問管理方法將幫助團隊在其 SDLC 過程中建立更好的安全性。
應用程序接口
允許開發(fā)者向互聯(lián)網(wǎng)用戶公開 API 服務。它提供API網(wǎng)關的常用功能:流量管理、監(jiān)控、認證和授權。我們的團隊對它和作為無服務器架構一部分的集成給予了非常積極的評價。另一方面,我們在將其用作運行在 HTTP/端點之前的 EC2 上的更通用的前端網(wǎng)關時遇到了更多挑戰(zhàn)。阻礙我們的是VPC缺乏交互性和網(wǎng)關難以建立客戶端證書驗證?;谶@種混合經(jīng)驗,我們建議團隊結合使用 AWS API。但是在更一般的配置中使用它時評估它的適用性。
隨著單體應用程序被更復雜的(微)服務生態(tài)系統(tǒng)所取代,跨多個服務的請求跟蹤正在成為常態(tài)。幸運的是,它正迅速成為分布式追蹤的事實標準。它由 Uber、、Yelp 和其他各種主要制造商開發(fā),它支持多種分布式跟蹤系統(tǒng),例如和。該標準目前提供了六種供應商中立的語言實現(xiàn):Go、Java、-C 和 C++。
它是一個基于構建的平臺。它抽象了底層基礎設施,適用于容器化和非運行的應用程序。這對于更“適度的部署”()來說可能是多余的,但我們開始看到它在商業(yè)和開源版本中的成功。我們特別喜歡它在不同云計算供應商和專用硬件之間的可移植性,因此您可以擺脫對單個容器編排框架的依賴。雖然升級可能比我們想要的要復雜一些,但整個技術堆棧正在變得更加穩(wěn)定。
由于硬件要求和構建虛擬世界復雜性的高門檻,去年除了虛擬現(xiàn)實(VR)之外,替代現(xiàn)實(AR)和混合現(xiàn)實(MR)也進入了主流。Poké 的流行證明,普通的智能手機足以創(chuàng)造引人注目的 AR/MR 體驗。它是一種新型的手機硬件傳感器技術,進一步增強了在手機上實現(xiàn)AR/MR的可能性。它允許應用程序獲取用戶周圍的詳細 3D 測量數(shù)據(jù),以便在相機輸入流中放置和呈現(xiàn)更具說服力的虛擬對象。第一部使用技術的手機現(xiàn)已上市。
語音平臺
和Home等語音平臺目前正處于技術成熟度曲線()的炒作風口浪尖,甚至有人預測,未來語音對話界面將無處不在。我們已經(jīng)有了將對話式 UI 集成到產(chǎn)品中的經(jīng)驗,也看到了這種新的交互方式對界面設計的影響。他們從頭開始設計,放棄了屏幕,將對話式用戶界面視為一等公民。但現(xiàn)在相信這樣的炒作還為時過早,我們期待更多的大廠商進入這個領域。
網(wǎng)絡虛擬現(xiàn)實
這是一組允許您通過瀏覽器訪問 VR 設備的實驗。它得到了技術社區(qū)的支持,并且有官方版本和每日構建版本。如果你想在瀏覽器中構建 VR 體驗,這將是一個好的開始。該技術以及.js、A-、.js、Awe.js等相關輔助工具可以為瀏覽器帶來AR體驗。除了互聯(lián)網(wǎng)理事會標準,該領域的各種工具也將有助于推動AR和VR的更廣泛應用。
三、工具
快車道
Web 應用程序開發(fā)人員很容易簡化和自動化各種應用程序的工作流程。他們可以從各種成熟的解決方案中選擇最合適的解決方案來自動化發(fā)布過程。但是,在開發(fā)移動應用程序時,我們需要處理兩種不同的操作系統(tǒng)和兩種完全不同的構建、測試、分發(fā)、生成屏幕截圖、簽名和發(fā)布應用程序的方式。為了解決這個痛點,我們的團隊采用了一種工具來自動化iOS和應用程序的發(fā)布過程。通過一些簡單的配置和多個發(fā)布管道,他們實現(xiàn)了移動開發(fā)的持續(xù)交付。
空氣流動
它是一種用于通過編程創(chuàng)建、調度和監(jiān)控數(shù)據(jù)管道的工具。通過以代碼的形式表達有向無環(huán)圖(DAG),倡導可維護、可版本化、可測試的數(shù)據(jù)管道。我們在項目中使用這個配置來創(chuàng)建動態(tài)管道,使數(shù)據(jù)工作流更加高效和清晰。您可以輕松定義自己的操作符和執(zhí)行程序來擴展庫以適應您環(huán)境的抽象級別。
蛋糕和假貨
它自 2005 年推出以來一直是 .NET 生態(tài)系統(tǒng)中的主要構建系統(tǒng)。但是,它遇到了許多我們在上一節(jié)中提到的相同問題。. NET 社區(qū)已經(jīng)開始開發(fā)替代方案,它更易于維護和更靈活,并且可以隨著項目的發(fā)展而更自然地發(fā)展。CAKE 和 FAKE 是兩種選擇。Cake 使用 C# 中的內置 DSL,而 Fake 使用 F#。這兩個項目在過去一年都取得了顯著的增長,足以證明這一點。它們是在 .NET 項目中編排常見構建任務的可行替代方案。
工作
非常流行的 SS WORK 為具有無服務器架構的應用程序提供項目腳手架和部署工具。它的大部分使用場景都是基于和相關的AWS產(chǎn)品。work 提供 Java 和 C# 語言的項目模板,并有一個活躍的社區(qū)來貢獻擴展插件。此外,它還為孵化器項目提供支持作為替代方案。
旨在幫助開發(fā)和測試的角色。通過構建用于在虛擬機或容器上運行測試的腳手架,我們不再需要手動創(chuàng)建這些測試環(huán)境。使用和管理虛擬機或容器,并支持或 Goss 運行測試。默認的步驟包括:虛擬機管理、語法靜態(tài)檢查、冪等測試和收斂測試。雖然這是一個相當年輕的項目,但我們看到了它所蘊含的巨大潛力。
旗幟下的開源。它是微服務的持續(xù)交付平臺。與其他 CI/CD 平臺相比,集群管理和烘焙鏡像部署實現(xiàn)為一流的功能。它支持多個云平臺(例如AWS和)的開箱即用部署和集群管理功能??梢约傻狡渲幸詧?zhí)行構建任務。我們喜歡在云中部署微服務的異想天開的方法,但它的管道只能通過用戶界面創(chuàng)建,而不能通過代碼創(chuàng)建。
紗
YARN 是一種新的包管理工具,可以替代現(xiàn)有的 npm 客戶端機制,并且兼容 npm 注冊表。如果使用npm客戶端,在依賴庫的不同安裝順序下會得到不同的樹狀結構。這種不確定的特性可能會導致“在我的機器上工作”問題。通過將安裝步驟分解為解析、獲取和鏈接,Yarn 使用確定性算法避免了這些問題,從而保證了重復安裝的一致性。因為它緩存下載的包,我們還看到在持續(xù)集成 (CI) 環(huán)境中構建速度明顯更快。
四、語言和框架
引入了許多與 .x 不兼容的有用功能。它還刪除了 .x 中的許多向后兼容性功能,這使得它更易于學習和使用,并且與語言的其他部分更加一致。根據(jù)我們在機器學習和 Web 應用程序開發(fā)等領域的經(jīng)驗,語言本身和大多數(shù)支持庫都足夠成熟,可以采用。我們可以 fork 一個現(xiàn)有的庫并修補它的小問題,或者避免使用已被放棄的不兼容的 .x 庫。如果您將其用于開發(fā),我們強烈建議您使用它。
分布式系統(tǒng)通常使用多線程、基于事件的通信和非阻塞 I/O 來提高整體系統(tǒng)效率。這些編程技術帶來了諸如低級線程、同步、線程安全、并發(fā)數(shù)據(jù)結構和非阻塞 I/O 等挑戰(zhàn)。開源庫優(yōu)雅地解決了這些問題,提供了所需的應用程序管道,并在異步事件流之上擴展了觀察者模式。它還擁有活躍的開發(fā)者社區(qū),支持越來越多的編程語言。最近,它被支持。還實現(xiàn)了綁定移動和桌面平臺的功能。
AVRO
AVRO 是一個數(shù)據(jù)序列化框架。它通過將其與消息內容存儲在一起來鼓勵進化。生產(chǎn)者可以編輯字段名稱、添加新字段或刪除現(xiàn)有字段,而 Avro 確??蛻舳丝梢岳^續(xù)使用消息。允許在沒有額外開銷的情況下寫入每個數(shù)據(jù),從而實現(xiàn)緊湊的數(shù)據(jù)編碼和更快的數(shù)據(jù)處理。盡管生產(chǎn)者和消費者之間非結構化消息的交換可以非常靈活,但我們已經(jīng)看到團隊遇到了在部署期間無法在隊列中處理的不兼容消息的問題。我們已經(jīng)在許多項目中使用了 Avro,建議僅在發(fā)送非結構化消息時使用它。
Vue.js
在不斷變化的前端框架世界中,VUE.JS 作為輕量級替代品占據(jù)了一席之地。這是一個非常靈活且沒有預設的庫。它圍繞模塊化、組件和響應式數(shù)據(jù)流的概念展開,并提供了一組用于構建交互式 Web 界面的工具。它的學習門檻很低,對于初級開發(fā)者和新手來說非常有趣。Vue.js 本身并不是一個龐大而全面的框架。它只關注視圖層,因此可以很容易地與其他庫或現(xiàn)有項目集成。
是一個深度學習的開源庫,由伯克利視覺與學習中心開發(fā)。它主要關注用于計算機視覺應用的卷積網(wǎng)絡。對于計算機視覺相關的任務編程語言研究框架,它是一個可靠且流行的選擇,您可以下載許多用戶創(chuàng)建的開箱即用的成功模型。與基于 API 的相同。它們之間的區(qū)別在于模型和組件是直接在代碼中創(chuàng)建的對象,而模型是通過配置文件來描述的。這兩種方法各有優(yōu)缺點,可以相互轉換。
它是一個基于Node.js的框架,擁有豐富的插件生態(tài),可以操作基于抽象語法樹的CSS文件。經(jīng)常被誤認為是一個預處理器(比如SaaS或者Less),但是我們發(fā)現(xiàn)它的強大來自于它豐富多樣的插件所提供的功能,包括語法檢查插件、交叉編譯插件),命名適配避免沖突(插件)、模板CSS代碼生成(插件)、文件壓縮等。 雖然插件的成熟度各不相同,但它本身仍然是一個簡單而強大的前端開發(fā)框架,它可以像處理完整的前端開發(fā)語言一樣處理 CSS。