客戶端Cameyo是一家總部位於美國的VAD 服務提供商,在全球開展業務。該公司的VAD 平台為客戶提供了從任何地方在任何設備上安全訪問關鍵業務應用程序的權限,而無需VPN。
挑戰我們的客戶想知道如何保護虛擬應用程序交付平台,並確保在引入新功能的同時高效及時地支持他們的產品。他們希望通過這種方式滿足現有客戶的需求並吸引新客戶。他們正在尋找一支由經驗豐富的開發人員組成的團隊,他們可以適應快速變化的優先級和項目目標,同時保持所交付功能的整體質量。
方法在分析項目並與客戶討論可能的改進後,Apriorit 團隊集中精力實現關鍵的五個目標:
如何提升產品價值
我們將這些技術任務分為兩類:
通過修復我們的質量保證(QA) 專家發現的錯誤以及解決平台最終用戶報告的錯誤和錯誤來支持現有功能
研究和實施新功能,以增加產品對現有用戶和潛在新用戶的價值
為了滿足客戶的需求並提高產品的可行性,我們組建了一個團隊,其中包括一名項目經理(PM)、一名QA 專家和對C/C++、Go 和遠程桌面協議(RDP) 有深入了解的Windows 軟件專家).
VDA平台增強技術
結果Apriorit 團隊實施了多項功能,提高了Cameyo 的虛擬應用程序交付平台的安全性、性能和可用性。我們還引入了新的項目管理工具和方法來減少項目的管理開銷。此外,我們的專家對項目文檔進行了實時更新,確保更好地跟踪所有產品變更,並更容易實施進一步的產品改進。
如何做到的在我們多年的合作中,Apriorit 團隊執行了各種旨在幫助我們的客戶實現其目標的任務,從研究競爭對手和市場趨勢到構建新功能和測試VAD 平台的安全性。
以下是我們的團隊為Cameyo 平台實現的四個主要功能:
VDA 平台的新功能
讓我們詳細了解這些功能中的每一個。
1.掃描儀重定向Apriorit 開發人員實現了掃描儀重定向功能,並將其添加到用.NET 編寫的本機Cameyo 客戶端中。此功能將真實的掃描儀轉發到用戶的RDP 會話,使在遠程服務器上運行應用程序的用戶能夠像使用本地設備一樣使用選定的掃描儀。
我們面臨的主要挑戰之一是解決Cameyo 客戶端的權利限制問題,因為它沒有安裝在最終用戶的系統中。為了克服這些限制,在Cameyo 本機客戶端中,我們構建了一個自定義掃描儀客戶端,負責使用掃描儀。該客戶端的工作流程如下所示:
1. 在端點方面,我們的自定義掃描儀客戶端連接到遠程端點,使最終用戶能夠使用遠程掃描儀。該客戶端可以執行諸如向用戶轉發可用掃描儀列表、確認活動掃描儀的選擇以及傳輸支持的操作模式等操作。
2. 在服務器端,我們實現了一個自定義的TWAIN兼容提供程序,它也充當我們自定義掃描儀客戶端的服務器。使用此提供程序,我們將掃描儀控制命令從RDP 用戶會話傳遞到掃描儀客戶端,並將掃描數據發送回用戶。
我們基於用C 編寫的開源解決方案構建了自定義TWAIN 提供程序,為原始解決方案添加了對會話隔離的支持。由於本機Cameyo 客戶端已經為客戶端-服務器通信提供了一個活動的RDP 會話,因此在TWAIN 提供程序中,我們使用了虛擬Windows 終端服務器(WTS) 通道。
我們還改進了自定義掃描儀客戶端中的數據緩存,以提高轉換掃描圖像的速度,並實施了一個額外的適配器進程,使客戶端與x86 應用程序兼容。
最後,由於本地客戶端和我們的掃描器客戶端是用不同的語言編寫的,我們需要實現一個跨語言的RPC。為此,我們使用了Apache Thrift並創建了一個使用虛擬RDP 通道的附加傳輸層協議。
2.雲隧道為了實現與Cameyo 服務器的安全遠程連接,Apriorit 團隊實施了雲隧道功能。此功能用作將平台的最終用戶連接到Cameyo 服務器的雲節點,並提供一種安全的替代方法來設置用戶與服務器之間的直接連接。
開發此功能時,我們使用了兩種編程語言——Go 用於隧道服務,C 用於鱷梨醬修改。
由於Cameyo 的瀏覽器模塊使用Guacamole 來啟動瀏覽器會話,我們實現了將Guacamole 服務器轉變為客戶端的邏輯。這使我們即使在啟用防火牆的情況下也能建立安全連接。傳統配置在這種情況下不起作用。
我們還實現了一個自定義隧道服務,充當兩個連接客戶端之間的中介。在此服務中,我們實現了兩個服務器:
在我們的RPD 應用程序和瀏覽器之間建立連接
執行握手以交換設置
由於此功能,用戶可以在本地服務器上安全地操作會話,而無需使用入站防火牆端口或VPN 解決方案。
3.GFX模式Cameyo 平台的Web 客戶端依賴於Guacamole 模塊。雖然此模塊可確保不同Web 瀏覽器和操作系統的平台可用性,但Cameyo Web 客戶端中使用的Guacamole 版本相當慢。當最終用戶使用動態圖形內容時,這會損害平台的性能。
為應對這一挑戰,Apriorit 團隊實施了GFX 模式,提高了Cameyo 網絡客戶端在圖形應用程序方面的性能。
在研究可能的解決方案和實施GFX 模式時,我們與Cameyo 的內部團隊密切合作。 Cameyo 希望他們的Web 客戶端能夠以至少每秒30 幀(FPS) 且沒有偽像的高質量準確顯示視頻內容,從而使最終用戶能夠舒適地使用現代視頻編輯應用程序。
為實現這一目標,我們希望利用支持高清屏幕傳輸編解碼器(如avc444 或avc420)的可用RDP 功能。然而,Guacamole 協議不允許我們獲得我們想要的結果。
在尋找可能的解決方案時,我們評估了幾個選項並最終確定了一個簡單但看似有效的想法——將編碼圖形數據流從FreeRDP 重定向到瀏覽器並在那裡解碼。
為此,我們需要擴展Guacamole 協議,使其能夠傳輸使用H.264 編解碼器編碼的內容。在瀏覽器端,我們決定使用WebCodecs——一個內置的Chrome API,允許對音頻和視頻數據進行編碼和解碼。
我們開始研究從FreeRDP 獲取數據的可能方法,並尋找CPU/GPU 負載盡可能低的編解碼器。在對不同的編解碼器進行了一系列實驗之後,我們選擇了libx264——一種基於CPU 的H.264 編碼器,它使我們能夠處理高清視頻數據,而無需花費太多CPU 時間。
4.漸進式網絡應用我們實施的另一個功能是適用於ChromeOS 的漸進式網絡應用(PWA) 解決方案。此功能允許ChromeOS 上的最終用戶將Cameyo 網絡應用程序下載到他們的設備,以便更輕鬆、更快速地啟動遠程應用程序。
為介紹此功能,我們編寫了一個JavaScript 腳本來解決兩個任務:
1. 實現通過打開桌面應用程序訪問門戶的機制
2.緩存內容,加快門戶網站訪問速度
因此,最終用戶可以方便地使用Cameyo 網絡應用程序,甚至不需要打開他們的網絡瀏覽器。
挑戰與解決方案在開展該項目時,Apriorit 團隊成功應對了多項挑戰:
明確目標——這個項目進行了大量的實驗和調整,因為客戶對如何改進他們的產品有很多想法。為確保開發過程易於規劃和評估,我們幫助客戶將這些想法轉化為清晰、可衡量的規範。特別是,我們與客戶舉行了回顧會議,在會上我們評估了我們的進展並闡明了正在開發的功能的目標。
項目文檔的持續維護——我們需要在開發新產品功能的同時編寫和更新大量技術文檔。通過遵循Apriorit 的內部標準程序,我們能夠使所有項目文檔保持最新狀態,從而更輕鬆地跟踪對產品所做的所有更改並保持最終結果的高質量。
複雜的支持程序——由於平台的高度可定制性,我們很難重新創建和修復在特定定制環境中檢測到的錯誤。為了提高我們支持服務的效率,我們設計了一份標準問卷,由Cameyo 專家在收到最終用戶的支持請求時填寫。該調查問卷使我們能夠組織調試所需的信息,並提高支持的速度和效率。
項目管理開銷——最初,Aprioit 團隊的所有任務都在Trello 中分配,這使得項目管理過程既耗時又不明確。為了解決這些問題,我們將所有與項目相關的活動都轉移到了Jira。在配置關鍵流程、構建透明路線圖並建立迭代項目工作流程之後,我們能夠使雙方的開發流程更加高效和可預測。
Recommended Comments