Activiti7官方博客翻譯3——12個factor的應用


要構建雲本地應用程序和服務,僅僅在Docker映像中封裝舊的整體並在Kubernetes中運行它是不夠的。我們重視Heroku定義的被稱為“The Twelve-Factor App”的原則:https://12factor.net(從關鍵的角度看https://content.pivotal.io/ebooks/beyond-the-12-factor-app)。沒有這些指導原則,就很難在分布式環境中進行擴展。Activiti Cloud對流程引擎進行了重新定位,以便更好地與此類分布式環境中的其他組件進行交互。Activiti Cloud成功的衡量標准是與其他微服務及其設計、構建和部署方式的低阻抗不匹配。

1.一個代碼庫,一個應用

我們的示例服務都位於不同的存儲庫中,每個存儲庫都表示一個Spring引導應用程序,Spring Cloud庫也支持該應用程序。每個服務存儲庫都包含一組構件,這些構件使它們適合於CI/CD管道:

  • Jenkinsfile:(或其他pipiline定義)管道,用於構建、部署和將當前服務提升到Kubernetes集群。
  • Maven項目:定義使用Spring Boot和Activiti Cloud starter構建的服務。
  • Dockerfile:定義如何為服務構建docker映像
  • HELM Charts:定義一組清單(kubernetes描述符),將服務部署到正在運行的kubernetes集群中。

我們為每個構建塊提供了一個Spring啟動器,可以根據您的領域特定需求進行定制和擴展。

我們的Spring啟動器可以在這里找到:

2.API優先

REST和 Message Driven APIs(消息驅動api)為每個服務定義,每個服務的規范可以在組件文檔中找到。我們希望確保契約定義良好,以便支持不同的實現。支持不同實現(基於不同的技術)背后的目標使我們能夠支持更廣泛的場景(低延遲、數據密集型、自定義需求等)。

3.依賴關系管理

Activiti Core和Activiti Cloud依賴關系使用物料清單(BoMs)進行管理,這些物料清單集成了服務和庫依賴關系。這些bom可在以下兩個資料庫找到:

4.設計、構建、發布、運行

  • 設計:我們在設計、RFC和編碼之間保持一個閉環,以確保我們能夠快速構建小的特性,從而改進我們的服務,並且能夠頻繁地發布(至少每月一次)。
  • 構建:我們的CI服務器構建我們的每個服務,並將其發布到Alfresco Nexus和Maven central,因此您可以依賴頻繁發布的工件。我們所有的服務都可以使用環境變量進行配置,因此我們保持它們不變,您可以使用標准容器實踐更改它們的配置
  • 發布:對於特定於領域的模塊/服務,我們提供了一些機制來確保您能夠重新生成您的發布,以便在出現問題時能夠進行審計和故障排除
  • 運行:我們提供分級HELM圖,支持基礎設施和應用程序的簡單部署。你可以在我們的入門指南中找到如何開始使用這些HELM圖。

5.配置、證書和代碼

所有Activiti Cloud服務的配置都由env變量提供,系統/平台范圍的配置可以使用Spring cloud配置服務。這些配置可以根據環境進行划分,通過使用Kubernetes的Secret,我們可以與其他Secret提供者集成。

6.日志

Activiti Cloud服務的日志被委托給基礎設施。您可以連接您的ELK堆棧來分析和監控您的日志。環境變量用於配置日志寫入的位置。我們希望依靠公共工具進行監視和日志記錄,而不是為此提供我們自己的定制解決方案。

7.可任意部署使用

Activiti Cloud服務的啟動速度很快,不到30秒,因此可以根據需要快速擴展。這些服務不存儲狀態,因此基礎設施可以隨時處理和重新創建它們。Activiti Cloud團隊致力於改善啟動時間,並確保將前期操作保持在最低水平。

8.支持服務

Activiti Cloud服務將有限資源的概念用於安全、電子郵件、數據源、存儲和其他資源。它還使用服務注冊中心來抽象其他服務的位置以及它們之間的通信方式。

9.環境奇偶性

Activiti Cloud為我們的用戶和實現者提供了一個類似於生產環境的環境,以生產特定於領域的產品,這些產品稍后可以發布到生產環境中。Activiti Cloud依賴於行業標准,以確保處理用於開發、測試/QA和生產的多個環境盡可能簡單和真實。我們依靠HELM和GitOps實踐等技術來確保這些環境能夠在不同的集群中輕松復制。

10.管理流程

在Activiti中,最初與流程引擎捆綁在一起的雲管理流程正在外部重構,以重用基礎設施提供的服務。管理流程是大多數開源BPM項目中的主要問題之一。由於這個原因,我們正在努力將這些流程中的每個流程從流程引擎范圍中移除。

11.端口綁定

所有Activiti Cloud服務都是Spring引導應用程序,允許環境變量配置它們的名稱(用於自動發現)和它們將運行的端口,作為對其他應用程序和服務的支持服務。我們所有的服務都在同一個端口上運行,它們利用Kubernetes網絡進行映射和綁定。

12.無狀態流程

Activiti Cloud服務在設計上是無狀態的,如果它們需要存儲狀態,它們將綁定到一個數據源來存儲它。緩存機制(如Redis)將用於在需要時共享狀態。

13.並發

運行時捆綁包的設計理念是可伸縮的流程執行——如果有太多的請求來創建一個類型的流程實例,或者有太多針對一組特定流程實例的交互,可以根據需要創建新的運行時捆綁包實例來處理負載。要在Activiti Cloud中實現這種可伸縮性,不需要額外的配置——這是平台的固有特性。

14.遙測

Activiti Cloud服務通過標准Spring Boot(micrometeractuators 和健康指示器提供遙測,但它還提供業務級遙測my,它發出一組公開運行時操作的標准化事件。所有這些信息都可以用於數據倉庫、報告和預測目的。

15.認證和授權

Activiti Cloud的所有服務都依賴於SSO和IDM。RBAC(基於角色的訪問控制)是我們所有服務的本機部分。Activiti Cloud組件將為領域特定的擴展提供掛鈎點,以構建更復雜的用例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM