萬源 羅 俊 章詩韻
武漢市疾病預防控制中心信息科,湖北武漢 430022
系統開發是一個復雜的軟件工程,充分的需求調研、穩健的技術支撐、全面的安全防護、暢通的數據交換等都直接影響到系統的使用效果。武漢市疾病預防控制中心于2021 年開始建設武漢市智能流調系統,目前已完成系統的開發工作并進入試運行階段。為確保該系統能高效服務于現場流行病學調查工作,項目管理團隊從開始的需求調研,到專家的可行性論證,再到軟件的程序開發,每一個環節都進行充分的思考和論證。本研究擬結合實踐經驗對系統建設的關鍵點進行總結,以期為其他地區類似系統的開發設計提供參考。
開展頭腦風暴和滾動式磋商。在系統建設前期,開展多輪頭腦風暴,充分了解流調工作的業務需求和應用場景,集中研究后形成初步的需求規格說明書。基于需求規格說明書初稿開展滾動式磋商,論證需求的合理性和可落地性,進而形成最終的需求規格說明書,保證需求的嚴謹性。
優先選用優化管理級能力成熟度模型認證的企業。這樣的企業會對項目管理過程進行量化反饋,并學習新思想、新技術,促使管理過程不斷改進,規范軟件開發流程,提高產品質量,解決人員流動帶來的問題,降低開發成本。
采用敏捷開發項目管理機制。在項目建設管理過程中,采用敏捷開發的項目管理機制,促進跨部門協作,加快需求的迭代開發,保證開發完成一部分功能就投入使用一部分,通過實戰快速檢驗設計的合理性。另外,在每個需求投入開發前,繪制產品原型,進行流程推演,減少開發返工概率。
建立需求的可追蹤性。使用需求跟蹤矩陣跟蹤每個需求的狀態。在需求變更、設計變更、代碼變更、測試用例變更時,需求跟蹤矩陣對變更波及范圍及影響進行分析避免遺漏某些連鎖變化。在軟件部署生命周期結束時,需求跟蹤矩陣從提供的單個文檔中捕獲流調系統需求方提出的所有需求,通過測試用例檢測需求是否實現,實現需求的可追溯性。
(1)引入異步處理機制。通過建立消息隊列,將一部分非實時業務轉換成異步處理,減輕同步響應和并發訪問帶來的性能瓶頸。(2)采用微服務架構。利用開源的輕量級微服務的分布式服務技術框架,將后端業務進行拆分,采用分布式部署。對運行壓力大的模塊,多部署幾個節點,通過建立負載均衡機制,有針對性地提高系統運算能力。對分布式系統建立熔斷機制,一旦有節點出現故障,能及時進行自動切換,保證系統正常運行。(3)利用邊緣計算。采用渲染方式將一些圖表、圖片和文檔的生成導出功能前置到客戶端完成,減少服務端計算壓力和帶寬傳輸壓力。(4)自動化測試覆蓋。使用自動化測試工具,提高測試用例覆蓋率,將大部分系統的功能用自動化測試進行檢驗,嚴格控制需求變更帶來的系統風險。
(1)引入Redis 緩存中間件。通過建立Redis緩存,減少非實時數據查詢對服務器造成的壓力;同時為保證Redis 的高可用,引入哨兵機制等,防止Redis 的單點故障。(2)建立數據庫集群。提供負載均衡能力和自動優化能力,采用高級別開源關系數據庫系統,支持云架構部署的主流數據庫,利用數據讀寫分離、數據分區、并行查詢等技術提高系統性能和可伸縮性。
(1)資源動態優化配置。采用虛擬化和云計算技術實現應用系統資源的動態優化和配置,以保證業務系統實時處理接收數據的高性能和穩定性,將各個微服務模塊通過docker 打包在虛擬機之上,并能夠進行動態資源分配和動態服務遷移;在關鍵子系統計算資源緊張時能夠自動從空閑的子系統分配的資源中調動中央處理器、內存等資源,防止關鍵系統宕機或超負載運行。(2)建立完善的日志管理系統。使用Raft 算法,實現日志的分布式管理;同時本項目中采用基于云計算的NoSQL 數據庫統一管理操作日志和系統監控日志,防止數據庫負載過大引起超負載運行等危險運行狀態。(3)使用內存數據緩存技術。將Session 數據存入內存緩存,采用內存緩存技術存儲業務規則和經常使用的代碼數據,減少集群間Session 復制對資源的耗費。
一是系統部署在衛生專網內,通過網絡隔離保證安全性。二是采用最小化管理數據庫的用戶權限,禁止使用root 賬號遠程登陸數據庫所在服務器。三是對用戶進行權限管理,防止非授權用戶訪問和操作系統。系統主要通過以下兩種授權機制保障訪問安全:(1)訪問控制列表(access control lists,ACL)。通過應用中間件的ACL 實現對特定數據庫連接池、消息連接池的訪問安全控制;(2)行級數據訪問權限。對于特別重要的數據,表級數據訪問控制權限若仍不能滿足需求,可建立行級訪問控制策略。為啟用行級訪問控制的每一張數據庫表增加行級訪問控制權限列,并為數據庫用戶授予數據庫表中相應行的訪問權限及訪問類型,對用戶實施行級訪問控制。
(1)數據備份與恢復。通過硬件和軟件的方式定期對重要數據進行備份,使用數據庫自帶的備份Server 完成對數據的備份,結合人工備份的方式,將歷史數據定期備份到其他磁盤或磁帶上。建立數據庫鏡像。同步數據庫鏡像會話時,數據庫鏡像提供了熱備用服務器,可支持在已提交事務不丟失數據的情況下進行快速故障轉移。在一般的鏡像會話期間,如果生產服務器出現故障,客戶端應用程序可通過重新連接到備用服務器來快速恢復數據。(2)關鍵數據加密。對系統中的關鍵數據進行加密,包括所有用戶的登錄密碼、權限信息、重要的配置信息等,在系統開發過程中提供兩種方式對關鍵數據進行加密:一是采用非對稱密鑰體系,使用數字證書對需要進行保護的數據進行算法加密;二是使用國產密碼進行加密后保存。
一是本項目中所有用戶認證數據、簽名數據等關鍵隱私數據都是加密傳輸,以保證數據的安全可靠性。二是采用安全套接層(secure sockets layer,SSL)協議中相關算法進行傳輸層的加密,在智能流調系統進行縱向數據傳輸或通過網頁提交重要數據時,均通過Https 協議實現SSL 的數據加密傳輸,防止通過網絡傳輸的重要信息或敏感信息被截獲。三是對系統的管理數據、鑒別信息等重要業務數據在傳輸過程中進行完整性檢測,并在檢測到完整性錯誤時采取必要的恢復措施。
智能流調系統建立統一的門戶認證體系,對所有用戶進行統一授權管理,見圖1。

圖1 統一門戶認證體系
智能流調系統建立主認證機制。主認證包含用戶驗證和Token 驗證,先通過Token 驗證獲取資源,再將獲取的資源傳入另外一個接口參數中,進一步調用用戶驗證接口,見圖2。

圖2 主認證機制
數據交換系統是在數據交換時使用的(extract–transform–load,ETL)數據交換工具,通過實時數據采集配置、ETL 參數配置和監控節點配置實現數據資源管理、ETL 運行管理等功能。通過建立數據交換系統,實現與疾控機構內部系統之間的數據互通及與本級衛生行政部門、上下級疾控機構的數據交換和信息共享,這種模式主要適用于庫表數據交換方式,見圖3。

圖3 數據交換系統
智能流調系統的數據交換除了庫表方式,還有外部接口方式。智能流調系統的外部接口需求主要包括與上級疾控機構數據交換接口、與疫情系統數據交換接口、與衛生行政部門指揮平臺數據交換接口。企業服務總線(enterprise service bus,ESB)是傳統中間件技術與可擴展標記語言(extensible markup language,XML)、Web 服務等技術結合的產物。ESB 能夠識別不同的應用系統類型及數據接口,方便地與各類型的數據庫、文件、消息接口等建立集成機制,實現數據通信及數據交換。此外,它支持任意系統之間實現主動發送、請求/應答、訂閱/發布交換模式,并通過路由控制實現分布式網絡中的信息交換。在流調系統的建設中存在大量與其他系統集成的需求,采用ESB 技術可快速完成數據互通,可實現不同業務系統的整合和應用集成,見圖4。

圖4 ESB 總線圖例
智能流調系統是武漢市公衛云項目整體規劃的子系統之一,其數據除了需要服務于自身的數據鏈路外,還需要交換至武漢市全民健康信息市區一體化平臺。公衛云項目在建設中,對業務層進行抽象,搭建業務中臺,實現業務邏輯的前后端分層,實現大部分組件的共建共用,提升代碼復用性和運行效率。智能流調系統基于業務中臺實現與武漢市全民健康信息市區一體化平臺的交換,見圖5。

圖5 業務中臺內容
按照武漢市全民健康保障信息化工程要求的“統一數據采集、業務應用共享”的建設思路,智能流調系統與衛生行政部門、公安、民政等系統進行數據互聯互通時,必須堅持一數一源,統一入口。在設計上,以人為核心的生產數據庫依托武漢市全民健康信息市區一體化平臺的統一采集交換平臺采集,從平臺的核酸檢測庫、陽性感染庫及全員人口數據庫中自動抽取相關業務協同信息,構建電子疾病檔案管理庫,統一交換到各個業務系統,智能流調系統即為其中之一。
智能流調系統的建設,其主要目的是為流調工作提能增效。圍繞這個目標,對系統建設需求優化完善,對系統性能升級優化,對數據安全加固防護,對互聯互通進行嘗試,都是非常有必要的。目前該系統處于試運行階段,顯示系統功能覆蓋業務場景,系統自動獲取相關基礎數據,極大減少了現場詢問和錄入工作量,PAD 設備使用便捷。待系統正式上線推廣使用后,將對比系統使用前后流調工作的質量和效率,科學評估系統的運行效果。