业务规则的生命周期管理
?
?
? ? ? ?業務規則將公司從傳統的軟件開發生命周期(SDLC)中解放了出來,但這并不意味著業務規則的開發和部署不需要任何的監督管理。反而以我的經驗來看,業務規則通常是以更為精細的方式進行跟蹤管理的。其中,決策邏輯變化的可追溯性在長期看將發揮巨大的作用。下面我將舉例說明決策邏輯的生命周期管理在現實場景中的應用。
基本的版本控制
? ? ? ?首先,我們簡單闡明一下什么是最基本的“可追溯性”。對于業務規則來說,版本控制的必要性是顯而易見的:萬一有人不慎刪掉了你所有的業務規則,你會有何感想?這就是為什么我們會在源代碼管理系統中進行版本控制,甚至在文檔管理系統中也進行同樣的應用。我們想確保如業務規則一般的資產是被妥善保護的,一旦發生任何修改,我們都能夠發現是誰做出了這些修改,并且當遇到不當修改時,我們能夠恢復至初始版本。
? ? ? ?我會在下一篇文章中對版本控制進行更為詳盡的分析。但本篇文章中,我將關注生命周期管理中更有趣的一面:即如何安全地把決策邏輯從開發環境發布到生產環境中。
將業務規則推送到預發布環境
? ? ? ?雖然我偶爾見到業務規則在生產環境中被修改的情況,但讓我們現實一點,我們仍然需要至少有幾個不同的環境來將承載開發與生產部署等功能。在將業務規則推進到生產環境進行發布之前,所做出的修改必須進行測試。無論如何,IT人員是不會允許你直接在生產環境中進行修改的。
? ? ? ?一般而言,公司有著兩種發布業務規則的方法:
- 增量法
- 封裝法
? ? ? ?當使用增量法時,我們可以將需要添加或修改的規則獨立出來,單獨的對這些規則進行開發測試以及部署上線。例如,你可以用相關標簽標記這些業務規則,然后通過規則過濾器進行篩選 ,并只將帶有標記的規則發布到目標環境中。使用這種方法的好處顯而易見,我們可以先行對已修改好的那部分規則進行發布——比如說當有20條規則需要增添或修改時——只選擇已通過測試和批準后的6,7條規則進行發布。規則制定者并不需要按順序依次來完成對應修改。
? ? ? ?而封裝法中,整個項目則作為一個整體進行測試,并作為一個新的“部署包”來進行移植。我此處用部署包(Deployment Package)并不特指什么內容,因為不同架構之間會有細微的差異。但總的來說,封裝法就是在生產環境中最終部署了一個嶄新的項目,其中同時包含了新、舊規則。這樣做的好處是它允許你,或IT人員,對將要部署的規則進行全面的QA測試。
? ? ? ?無論你更傾向于哪種部署方案,規則發布都可以進行自動化的測試與模擬。甚至在必要的情況下,與人工審批相結合。因此,你能夠隨時查看是誰做出了相關修改,并瀏覽相應的修改日志。
回退到最新的可用版本
? ? ? ?盡管規則的修改在發布前已經進行了測試和評估。但有時候,哪怕已經進入到生產環境中了,我們仍然想返回進行修改。為什么呢?比方說,在此之前,你只是在現有的數據上測試了規則并得到了期望中的反饋,但并沒有機會結合相關業務指標來進行模擬測試。這樣很可能帶來一種結果,那就是規則的業務表現和業務目標并不匹配。比方說,導致過多的申請需要人工復審。當然也有一種情況是外部條件發生了變化,讓你不得不回退到之前的版本。例如新的數據格式就可能會導致與現有的業務規則不兼容。總之,這樣的原因有很多。
? ? ? ?現有的回退方式有兩種,其中一種方式是回到開發環境,利用版本控制的機制,重新啟用出現問題的規則的上一個版本,然后重新發布它們。盡管我們使用這種方式進行回退很久了,但每次回退時,你仍需要確保你只更新了所有出現問題的業務規則。
? ? ? ?另外一種方式是利用現有的發布機制。當然如果之前使用增量法進行規則發布的話,利用這種方式進行回退會有點困難。但如果使用的是封裝法,你就可以直接選取最新的一個“好”包,并且重新部署它。這種方法在過去被更為頻繁的使用,因為它能更快的提供給你一個經過完整測試的業務規則包。
? ? ? ?當然還有一種能更好的處理這種回退需求的辦法,那就是使用發布版本(Release)的概念。針對每一個項目,都創建一個項目視圖,并及時凍結,然后只在執行的時候進行調用。這樣做的好處是它允許你在生產環境中中同時部署多個發布版本。這樣處理有什么優勢呢?請允許我列舉兩個基本的場景應用進行說明。
? ? ? ?比方說,你可能想對新規則進行灰度發布,只針對生產環境中的部分業務試驗新規則。通過使用發布版本,你可以用版本8去執行大部分業務,同時用版本9執行選定的小部分樣本。不管你是出于安全考慮,還是想要進行冠軍/挑戰者實驗,通過使用發布版本的方法,都可以讓業務操作變得更加靈活高效。
? ? ? ?然而第二種場景就涉及到了級聯的概念。假設你的業務規則覆蓋到了內外部兩個不同群體的客戶,并且當內部用戶已經完成版本更新時,外部用戶仍然需要一定時間去升級到新的發布版本。在這一段時間內,你不僅需要為滯后的外部客戶提供版本8的支持,同時也需要為領先的內部客戶提供版本9的支持。總的來說,發布版本管理讓你能同時運行同一項目的不同發布版本。但是需要提醒的是,不要試圖通過復制業務規則來達到此目的。這又涉及到另外一個話題了。
? ? ? ?生命周期管理方法和我以上所敘述的很多技術,優勢都在于它們強大的兼容性。你并不必依賴于單一的機制,就可以根據你的需要進行分層(類)處理并進行優勢整合。
原文作者:Carole-Ann Berlioz
原文地址:http://www.xinshu.ai/blog.html/25
-----------------------------------------------------上海信數金融信息服務有限公司成立于2015年5月,是中國領先的金融科技公司。公司的產品包括新一代智能決策管理平臺、企業級數據管理平臺以及大數據征信服務等。
明策智能決策平臺,是信數公司和美國硅谷公司Sparkling Logic合作研發的一款引領未來的智能決策管理平臺,已經被包括PayPal、摩根大通、LTCG保險、京東金融、掌眾金服、中望金服等超過100家國內外知名企業所采用。
Sparkling Logic是一家專業的智能決策引擎研發公司,由FICO Blaze Advisor創始團隊建立于2009年,通過對規則引擎、智能決策的不斷研究,致力于幫助商業、教育、非盈利和政府組織利用他們的數據和專業知識來更好地自動化決策,推動發展。
轉載于:https://www.cnblogs.com/xscredit/p/8535407.html
總結
以上是生活随笔為你收集整理的业务规则的生命周期管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 .NET Framework 4.0
- 下一篇: laravel 服务提供者介绍和使用