[譯] Python 架構相關:咱們須要更多嗎?

最近,我一直在學習有關應用程序架構的不少新東西。親愛的讀者,我想知道你是否對這些想法感興趣,以及咱們是否應該嘗試圍繞它構建更多的資源(博客、會談等)。html

咱們應該如何構建一個應用程序來充分利用測試?

對我而言一切都始於這個問題。在個人書尾 ,我用結束章節討論瞭如何充分利用你的測試,在單元、集成和端到端的測試中作出權衡,並對我沒有真正理解的一些主題作出些模糊淺顯的指示:端口與適配器(ports and adapters),六角架構(hexagonal architecture),函數式內核/命令式外殼(functional core imperative shell),乾淨架構(the clean architecture),等等。前端

從那以後,我和一個正在用 Python 積極實現這些模式的技術團隊達成合做。其實,這些架構模式並非什麼新鮮事,人們多年來一直在用 Java 和 C# 進行探索。只是我對它們很陌生……從我的經驗而言,我在這裏可能會有些深刻(我對你的反應很感興趣),但它們對 Python 社區的大部分人可能也是個新鮮事?python

隨着咱們的成熟,確實能感受到愈來愈多的曾經的小項目和大膽的初創公司變成了複雜的業務和(偷偷的說)商業軟件,因此這些東西可能會變得愈來愈顯著。android

我最初從測試的角度看待它,正確的架構真得能夠幫助你充分利用測試,經過分離出一個業務邏輯核心(「領域模型」)並讓其擺脫全部的架構依賴,它能徹底的用快速、靈活的單元測試進行測試。最終讓人感受測試金字塔是一個可實現的目標,而非一個奢望。ios

關於該主題的經典書籍(均爲 Java)

Evans 的領域驅動設計(DDD)Fowler 的架構模式都是很經典的書籍,任何對這些感興趣的人都應該閱讀。但若是你像我同樣,費力閱讀那些 public static void main AbstractFactoryManager之類的東西實在讓人有點煩。也許一些更輕量級的、Python 化的介紹能讓人感受更加合理,少點雲裏霧裏?git

Python 領域中的一些現有資源:

Made 的首席架構師,尊敬的 Bob 先生,就咱們如今討論的問題寫過一個分爲四部分的博客系列。我開始時特別喜歡閱讀它。這系列是 DDD 基本概念、端口與適配器/依賴倒置、和某種程度上的事件驅動架構的快速使用介紹。都是 Python 適用。(觸發警告:Type Hints)。github

  1. Python 中具備命令處理模式(Command Handler pattern)的端口和適配器
  2. Python 中的庫(Repository)和工做單元模式
  3. 命令和查詢,處理程序(Handler)和視圖
  4. 爲何要用領域事件(Domain Events)?

在 io.made.com 上還有不少,但以上四篇爲主要內容。咱們但願獲得一些關於它們的反饋,哪些被闡述到了,哪些須要進一步解釋,等等。shell

另:一個去年聖誕節及時發佈的的書,Leonardo Giordani 的 Python 乾淨架構(Clean Architectures in Python)。這本書是兩本書合二爲一,第一部分是 TDD 的介紹,但第二部分有四章介紹了與我在這裏討論的相似的模式。後端

我也很喜歡一年前 David Seddon 的一個演講 岩石河:如何構建你的 Django 單體應用(monolith),顯示出其餘人開始思考咱們如何超越基本的 Django 模型/視圖/模板架構。架構

在 Valentin Ignatev 的 DDD 資源列表還有更多的內容,這是我最近在推特上看到的。彷佛不少人對此都有想法。

號召行動:這個東西有趣嗎?

Bob已經獲得一些對他博客帖子很好的反饋,Leonardo 也有了一些很不錯的初始銷量,因此我感受到 Python 社區的一些興趣,可是我想對它進行一個理性考察。

  • 這些東西有趣或者有意義嗎?你要了解更多嗎?
  • 你用 Python 正在作的事超出 「基礎網頁應用開發」 或 「數據管道(Data Pipeline)」的範圍了嗎?你是否發現編寫快速單元測試很困難?你是否開始想把你的業務邏輯從任何你使用的框架中解放出來?
  • 你是否在使用 DDD 或任何 Python 的經典模式?你可能已有全部的答案,願意告訴我嗎?或者你只想告訴我一些適用你的答案和事情?
  • 你認爲這些東西聽起來很抽象且沒有意義嗎?也許 Made.com 在 Python 領域裏有點像大綱,由於咱們用 Python 編寫物流/ERP/企業軟件,而這一切和你平常工做很是不一樣嗎?
  • 從這些主題的新指南而言,你認爲 Python/動態語言社區最受益的是什麼?

我很樂意聽到你的意見。文末評論開放,或者你也能夠在推特上給我留言@hjwp

我說過讀經典書籍了沒?去閱讀經典吧。

  • 企業應用架構模式(Patterns of Enterprise Architecture),Martin Fowler 著, amazon.com / .co.uk
  • 領域驅動設計(Domain-Driven Design),Eric Evans 著,amazon.com / .co.uk

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索