吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過微服務原理、領域驅動設計概念等來成功實現微服務

如意 ? 來源:360機房 ? 作者:Harris ? 2020-08-14 10:02 ? 次閱讀

組織通過微服務基本準則、領域驅動的設計概念和編碼優秀實踐成功地使用微服務,可以充分利用Kubernetes/容器原生的優勢。

行業專家參加了DevOps Institue日前在企業Kubernetes上進行的SkiLUp演講。在一個名為“通過持續交付導航Kubernetes之旅”的會議中,行業討論了企業Kubernetes的狀態以及持續交付對于那些使用容器技術的組織的影響。其演講的中心主題是Kubernetes如何為交付團隊引入新的范例。

對于使用微服務的組織來說,其成功應用可能是多種多樣的,從云計算中獲益可能是一個代價高昂的過程。以下將分享如何通過微服務原理、領域驅動的設計概念以及有關編碼優秀實踐的注意事項來成功實現微服務。云原生應用程序、Kubernetes實例和微服務都代表了一個由層組成的系統。了解這些層使人們能夠獲得釋放云計算和容器原生優勢所需的見解。

系統設計的本質

系統設計是一個權衡的游戲。當脫離組織環境時,許多架構決策在本質上并不是對與錯。組織做出決策的優秀建議是盡可能擴大決策范圍和框架,以在初始時理解決策。其基本準則始終是將這些決策與組織的目標聯系起來。在組織環境中,基本準則、實踐和模式需要與組織的目標保持一致。基本準則為實現目標確定方向,而實踐和模式代表團隊為實現這些目標而采取的實際步驟。

例如,很多組織的目標可能是成為面向全球市場的事實上的軟件解決方案。其基本原則之一就是實行持續交付,以確保高質量的生產部署并很大程度地減少可能造成高昂成本的事故。實踐是針對團隊的,并且是特定的。為了支持組織的工程業務部門遵循的原則,可以讓SRE團隊針對事件管理進行實踐,其中包括使用持續交付平臺來跟蹤或審計失敗的部署。可以讓開發人員使用持續交付解決方案進行頻繁的發布或自助部署。組織的開發團隊的另一個實踐是測試所有代碼。

雖然不可能知道每一個決策在未來會對整個系統產生怎樣的影響,但組織能做的最好的事情就是確定目標,以及基本原則和實踐如何幫助其實現這些目標。

微服務

微服務是一種小型的、自主的、協同工作的服務。松散耦合和高內聚性是指微服務的兩個概念。內聚性是將相關代碼分組在一起的方式,而耦合性是指不同的服務如何相互依賴。軟件工程大師RobertC.Martin對“單一責任原則”的定義是微服務的核心,它的定義是“將因相同原因而發生變化的那些事物聚集在一起,并將因不同原因而發生變化的那些事物分開。”

這兩個概念推動了微服務的七個原則,允許團隊獨立地工作、部署、失敗、交付和擴展。

面向服務的架構(SOA)旨在應對大型單片應用程序、代碼的可重用性和維護方面的挑戰。微服務是通過獨立服務實現面向服務的架構(SOA)的一種方法,其中每個服務都充當組織業務領域的邊界。在微服務架構中,每個更改都可以彼此獨立地實現和部署,而無需用戶更改。

微服務的原則

使用微服務時,常見的故障點是過早分解。在通常情況下,團隊在與應用程序的用例相關的更改中會付出高昂的成本,或者初始服務邊界是錯誤的。將應用程序分解為微服務通常是開始微服務之旅的最簡單方法。

域驅動設計的原則

域驅動設計(DDD)是如何通過代碼對現實世界進行建模。因此,域驅動設計(DDD)介于出色的代碼和微服務成功之間。盡管有許多文獻討論了如何從戰略和戰術上實施域驅動設計(DDD),但在沒有實踐和指導的情況下,這仍然是一個相當復雜的話題。以下是利用域驅動設計(DDD)概念的入門方法。

首先必須理解,組織使用的任何代碼都始于存在于域中的問題以及存在業務愿望的問題。因此,領域驅動設計的旅程始于領域專家和開發人員。通常,組織可能有多位領域專家一名開發人員或各種開發人員,但只有一名領域專家。無論組織結構如何,團隊的目標都是著眼于全局并創建所謂的場景地圖。

構建場景映射時,組織可以通過了解問題空間、發現通用語言并為系統創建表示模型來提取領域知識。系統由代表問題空間的域和子域組成。這些域在場景映射中稱為場景,并且可以描述組織內的不同系統。例如,組織可能需要表示一個銷售場景和客戶支持場景,以對處理食品包裝廠的銷售和客戶支持的新軟件應用程序進行建模。

示例場景映射

這些域為組織提供了有關如何創建有限場景的好主意。有界場景表示屬于系統的服務,它封裝并定義了該模型的特定職責。創建有界場景就是要建立一個邊界,在這個邊界中,域語言在這個空間中不會造成混淆的問題。

定義有限的場景、通用語言和場景映射可以使組織在使用微服務時專注于全局。域驅動設計指導開發人員討論系統設計時,因為組織經常在尋找通過代碼表示真實世界的方法。域驅動設計(DDD)對于不熟悉特定領域的組織或開發人員,或者對于希望將其應用程序分解為微服務的組織而言,域驅動設計(DDD)尤其有用。

清潔代碼

微服務成功的最后一件事是如何維護和使用組織的代碼。有許多建議可以鼓勵持久和可理解的企業代碼庫。它們中的一些引入了額外的權衡,但通常的經驗法則是避免對不斷增長的代碼庫感到自滿,并尋找對組織有用的做法。

提供共享庫。跨領域、行業、團隊和各種代碼庫重復的方法是共享庫的理想選擇。第三方庫或自定義庫是使代碼庫得到良好管理和測試的一種很好方法,尤其是當組織繼續在域內開發更多功能和服務時。建議不要為頻繁更改的代碼引入自定義庫。定制庫添加了應用程序依賴項,其中對庫的更新迫使使用者重新部署。受信任或成熟的第三方庫通常是避免與自定義庫相關的某些維護和不穩定的很好資源。

強制執行模塊化分離。正如人們經常聽到關于模塊化隔離的建議一樣,由于變更的性質,它在實踐中經常失敗。作為新功能,開發人員和流程已引入代碼庫,人們構造提供這些功能的模塊和文件的方式也發生了變化。保持每個適當大小的模塊和文件也很重要。作為準則,以團隊為單位設置一些實踐,以指導組織如何在代碼庫中組織業務邏輯。一些團隊具有三個組織層,包括表示層、邏輯層和數據層。該策略確保業務邏輯不會在應用程序邏輯內丟失。強制執行代碼的模塊化分離也可以幫助團隊成功實現域驅動設計(DDD)。

保持較小的代碼庫。以前的建議都會導致維護較小的代碼庫。但是,圍繞使代碼庫保持精簡和小型化經常會出現一個常見的問題,即小型化小到什么程度?在許多方面,小型代碼庫成為一種反模式,因為團隊無法理解他們的服務在整個系統的場景中提供了業務責任。同樣,對于大型代碼庫來說,團隊將難以分散決策,了解其代碼庫,并應對其他形式的更改。這兩個挑戰的關鍵指標是問題的增加。

維護干凈的代碼庫是域驅動設計(DDD)、微服務以及編寫Kubernetes或云原生應用程序所不可或缺的。正如Kubernetes、微服務和域驅動設計(DDD)影響組織設計代碼的方式一樣。希望這些解釋能夠說明其應用程序是如何由相互重疊和互補的層組成的,從而形成一個有效且成功的系統。

結語

許多投資Kubernetes計劃的組織都希望通過微服務獲得成功。本文展示了如何通過微服務獲得成功。擁有如此多的工具、流程和原則來管理流程可能會很困難,尤其是當最終客戶無法獲得頻繁的軟件交付時。持續交付可幫助組織交付價值、管理微服務部署、定義發布和回滾策略,并降低微服務的總體成本。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 云計算
    +關注

    關注

    39

    文章

    7850

    瀏覽量

    137879
  • SOA
    SOA
    +關注

    關注

    1

    文章

    294

    瀏覽量

    27575
  • 微服務
    +關注

    關注

    0

    文章

    142

    瀏覽量

    7433
收藏 人收藏

    評論

    相關推薦

    NVIDIA 發布保障代理式 AI 應用安全的 NIM 微服務

    的“知識機器人”,提升全球數十億知識工作者的生產力。為了開發 AI 智能體,企業需要解決信任、物理安全、網絡安全以及合規性關鍵問題。 全新 NVIDIA NIM AI Guardrail 微服務
    發表于 01-17 16:29 ?73次閱讀

    微服務容器化部署好處多嗎?

    微服務容器化部署好處有很多,包括環境一致性、資源高效利用、快速部署與啟動、隔離性與安全性、版本控制與回滾以及持續集成與持續部署。這些優勢助力應用可靠穩定運行,提升開發運維效率,是現代軟件架構的優質選擇。UU云小編認為微服務容器化部署好處主要體現在以下幾個方面:
    的頭像 發表于 01-17 10:22 ?80次閱讀

    容器化能替代微服務嗎?兩者有何區別

    和可維護性。而容器化技術則是一種輕量級的虛擬化技術,它將應用程序及其依賴項打包到一個獨立的容器中,使其能夠在不同的環境中一致地運行。雖然容器化技術為微服務提供了一個理想的運行環境,但微服務架構本身所強調的服務拆分、獨立部署和擴展
    的頭像 發表于 01-13 10:40 ?105次閱讀

    Java微服務中如何確保安全性?

    訪問資源,而OpenID Connect提供了基于OAuth2的身份驗證協議。 利用Spring Security OAuth2進行配置,實現統一的身份驗證和授權。 服務間安全通信: 通過配置TLS
    的頭像 發表于 01-02 15:21 ?160次閱讀

    寶藏級微服務架構工具合集

    寶藏級熱門微服務架構工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka。其中,Spring Boot簡化了微服務
    的頭像 發表于 12-21 16:33 ?231次閱讀

    NVIDIA NIM微服務登陸亞馬遜云科技

    經過優化的 NIM 微服務現可在 Amazon Bedrock Marketplace、SageMaker JumpStart 和 AWS Marketplace 上獲取,用于各種 NVIDIA 和生態系統模型。
    的頭像 發表于 12-06 13:33 ?308次閱讀

    全新NVIDIA NIM微服務實現突破性進展

    全新 NVIDIA NIM 微服務實現突破性進展,可助力氣象技術公司開發和部署 AI 模型,實現對降雪、結冰和冰雹的預測。
    的頭像 發表于 11-21 10:07 ?303次閱讀

    SSR與微服務架構的結合應用

    隨著互聯網技術的快速發展,前端技術棧不斷更新迭代,后端架構也經歷了從單體應用到微服務的變革。在這個過程中,服務端渲染(SSR)作為一種提升頁面加載速度和SEO性能的技術,與微服務架構的結合應用,為
    的頭像 發表于 11-18 11:34 ?396次閱讀

    微服務架構與容器云的關系與區別

    微服務架構與容器云密切相關又有所區別。微服務將大型應用拆分為小型、獨立的服務,而容器云基于容器技術,為微服務提供構建、發布和運行的平臺。區別在于,
    的頭像 發表于 10-21 17:28 ?283次閱讀

    入門級攻略:如何容器化部署微服務

    第一步理解容器化基礎,第二步創建Dockerfile,第三步構建推送鏡像,第四步部署微服務,第五步管理微服務、第六步優化更新。容器化部署微服務是現代軟件開發中的一種高效方法,可提供良好的可移植性、可擴展性和管理性。容器化部署
    的頭像 發表于 10-09 10:08 ?205次閱讀

    Proxyless的多活流量和微服務治理

    1. 引言 1.1 項目的背景及意義 在當今的微服務架構中,應用程序通常被拆分成多個獨立的服務,這些服務通過網絡進行通信。這種架構的優勢在于可以提高系統的可擴展性和靈活性,但也帶來了新
    的頭像 發表于 08-28 16:54 ?1642次閱讀
    Proxyless的多活流量和<b class='flag-5'>微服務</b>治理

    NVIDIA NIM微服務帶來巨大優勢

    服務通過熱門 AI 模型為數百萬開發者帶來高達 5 倍的 token 效率提升,使他們能夠立即訪問在 NVIDIA DGX Cloud 上運行的 NIM 微服務
    的頭像 發表于 08-23 15:20 ?599次閱讀

    采用OpenUSD和NVIDIA NIM微服務創建精準品牌視覺

    全球領先的創意和制作服務機構率先采用 OpenUSD 和 NVIDIA NIM 微服務創建精準的品牌視覺。
    的頭像 發表于 08-01 14:33 ?486次閱讀

    全新 NVIDIA NeMo Retriever微服務大幅提升LLM的準確性和吞吐量

    企業能夠通過提供檢索增強生成功能的生產就緒型 NVIDIA NIM 推理微服務,充分挖掘業務數據的價值。這些微服務現已集成到 Cohesity、DataStax、NetApp 和 Sn
    的頭像 發表于 07-26 11:13 ?927次閱讀
    全新 NVIDIA NeMo Retriever<b class='flag-5'>微服務</b>大幅提升LLM的準確性和吞吐量

    【算能RADXA微服務器試用體驗】Radxa Fogwise 1684X Mini 規格

    通過網絡可以了解到,算能RADXA微服務器的具體規格: 處理器:BM1684X 算力:高達32Tops INT8峰值算力 內存:16GB LPDDR4X 內存 存儲:64GB eMMC 編程框架
    發表于 02-28 11:21
    百家乐官网大小点桌子| 网上百家乐有哪些玩法| 大发888送钱58元| 百家乐官网金海岸| 百家乐游戏机论坛| 沙坪坝区| 百家乐筹码价格| 大发888官方网站登录| 百家乐官网保单机解码| 大发888娱乐城客户端迅雷下载| 百家乐官网桌折叠| 至尊百家乐20| 赌场百家乐官网投注公式| 八大胜百家乐的玩法技巧和规则| 大世界百家乐官网娱乐城| 百家乐游戏试| 百家乐官网如何投注技巧| 广州百家乐赌场娱乐网规则| 至尊百家乐官网年代| 玩百家乐请高手指点| 百家乐官网赌博论谈| 百家乐德州扑克桌布| 三公百家乐官网在线哪里可以玩| 大发888登不上| 百家乐官网波音独家注册送彩| 百乐门娱乐城注册| 百家乐赢家公式| 百家乐官网怎么开户| 电玩百家乐的玩法技巧和规则| 百家乐官网平注7s88| 大发888游戏平台dafa888 gw | 龙博百家乐官网的玩法技巧和规则 | 百家乐长玩必输| 雁荡棋牌游戏| 明升国际| 百家乐免费试玩游戏| 利高网上娱乐| 百家乐娱乐城优惠| 伊宁市| 大发888葡京下载地址| 大发888赌博违法吗|