原创 Gutenberg:Netflix推出的一項數據集發佈訂閱服務

爲了將數據集從單個生產者傳播到多個消費者,Netflix創建了Gutenberg服務,它使用發佈/訂閱技術在微服務之間傳播版本化的數據集——消費者訂閱數據集,並在有新版本可用時更新數據集。Netflix公司高級軟件工程師Ammar Khak

原创 基於DDD、CQRS、微服務和事件溯源構建系統

對於構建系統來說,模塊化是至關重要的,但實現模塊化需要應對一些反模塊化的做法。兩種典型的反模塊化做法就是在不考慮業務領域的情況下走捷徑和拆分微服務,這會增加技術債務。最近,在由AxonIQ舉辦的阿姆斯特丹事件驅動微服務大會上,Allard

原创 基於DDD設計並實現模塊化單體應用

一個最近由Kamil Grzybek在Github發佈的項目,給出了使用領域驅動設計(DDD,Domain-Driven Design)方法設計並實現一個單體(monolith)應用的詳細介紹。該項目的目標,就是展示如何以模塊化方式設計並實

原创 論無服務器架構的特徵

Wisen Tanasa在最近的博文當中提到,在目前關於無服務器架構的文獻當中,有相當一部分由雲服務供應商提供贊助,因此在內容上存在單純強調優勢的傾向。但Tanasa認爲,每當有新的技術出現時,最重要的是全面瞭解其意義,因此我們應該從客觀角

原创 構建事件溯源系統時犯的錯誤和恢復措施

當Nat Pryce和他的團隊開始構建基於事件溯源架構的新系統時,在設計上犯了幾個重大的錯誤,但最後成功地修復了這些錯誤,修復過程也並不複雜。在一篇博文中,Pryce詳細描述了他們所犯的錯誤以及促使他們重構架構並從錯誤中恢復的因素。 他們犯

原创 eBay 的 API 策略

在使用未能正確版本化的SOAP API多年之後,eBay決定轉向新的RESTful API,其中包含語義版本控制和棄用標準。他們的重點放在了可擴展性和適應性上,目標是使開發人員更容易創建使用eBay API的新應用程序。在一篇博客文章中,T

原创 微服務框架Lagom 1.5發佈,支持Kubernetes和OpenShift部署

最新版的微服務框架Lagom帶來了Akka Management,一組用於支持Akka應用程序的工具,並支持Kubernetes和OpenShift部署。最新版的Lagom 1.5以Play 2.7.0、Alpakka Kafka 1.0和

原创 事件流和工作流引擎——Kafka與Zeebe

Apache Kafka是一個高度可伸縮的分佈式流平臺,通常用於在基於微服務的系統中分發消息或事件。這些事件有時是業務流程的一部分,其中的任務分佈在多個微服務上。要處理複雜的業務流程,可以使用工作流引擎,但是要匹配Kafka,它就必須提供與

原创 Serverless世界中,我們仍然需要狀態

如今,企業的體系架構朝着Serverless架構邁進了一大步。在一篇博文中,Jonas Bonér認爲,儘管他堅信Serverless的趨勢,但編程的模式不應只關注無狀態函數,這會限制能支持的用戶場景的範圍。 Bonér是Akka的發明者和

原创 微服務?還是先構建一個單體吧

大多數開發人員都在規模較小的公司工作,可能最多50-80名開發人員,不需要進行大規模擴張。在這種情況下,正確構建的單體(Monolith)系統要優於構建基於微服務的系統。有了一個結構良好的單體系統之後,必要的時候也可以很容易地把服務遷移出

原创 我們究竟應不應該使用框架?

AxonIQ商業主管及Axon框架佈道師Frans van Buul近日在其博客中發表了一篇關於框架和類庫孰優孰劣的文章,引起了人們的熱議。雖然很多人提倡類庫反對框架,但Frans仍然提出了一些傾向於框架的見解,詳細內容請見正文。 Ax

原创 想要確保架構目標達成?適合度函數了解一下

Paula Paul和Rosemary Wang撰寫的一篇博文中介紹了適應度函數(fitness function)的基本概念、入門方法,並給出瞭如何驗證各種架構質量的一些實例。文中提出,適應度函數驅動開發的方法可用於編寫測定系統符合架構

原创 從微服務遷移到工作流的經驗之談

Jet公司的訂單管理系統(OMS)負責處理很多業務功能,最初是由一系列微服務組成的。隨着公司的發展,這種架構所面臨的挑戰也越來越大,直到他們決定構建一個新的基於工作流的平臺。Jet工程師James Novino在一篇博文中介紹了舊系統面臨的

原创 NGINX最新API管理模塊已可用,針對內部和外部API進行了優化

去年10月在NGINX大會上發佈的NGINX API管理模塊現已普遍可用。 NGINX產品管理總監Liam Crilly將新模塊與NGINX Plus和NGINX Controller一起描述爲下一代API管理解決方案,並且指出,它針對外部

原创 單體到微服務是一個演化過程,別在一開始就過度設計

大多數應用程序(可能是其中的90%)採用了單體架構。爲了避免過度工程化,我們應該從一個簡單的架構開始,並根據需求進行演變。在Reactive Summit 2018大會上,Randy Shoup在演講中分享了他與小公司一起,逐步發展成爲大型