了解微设计基础架构(MDI)的概念,它们如何帮助开发,以及它们与DevOps和微服务等技术的关系。html
技术决策既困难又严肃,能够决定项目的成败。如何找到合适的技术栈?“微设计基础架构”(MDI)是一种新方法,它使用“设计思惟”中的回忆来开发最佳,易于理解且是公司范围内公认的基础架构或技术堆栈。编程
技术和基础设施决策具备挑战性,由于必须结合不一样的要求(公司,应用,将来的安全等),找到合适的解决方案。在某些状况下,项目的复杂性如此之高,以致于应用了相似项目的最佳实践方法,但这些方法具备不一样的背景。这可能致使作出最终不适合应用程序或公司的决策。管理层对成本和速度的指望未获得知足,部署或移交IT运营成为绊脚石。如何防止这种状况?安全
解决复杂问题的方法有两种:解决问题的结构化流程,将大问题分解成更小的部分,每一个部分都更容易,更清晰地解决。架构
设计思惟是基于这样的假设:当来自不一样学科的人在鼓励创造力的环境中一块儿工做时,问题会获得更好的解决。他们共同了解人们的需求和动机,以便得出通过屡次测试的概念和解决方案。框架
这个过程的一部分是共鸣,定义,构思,原型设计和测试。例如,设计思惟用于开发应用程序或业务单元的数字化。编程语言
IT服务和应用程序的问题在于需求的复杂性,从开发,集成和部署流程开始,到数据备份,IT安全和数据保护结束。若是将IT服务划分为单个部分,则特定要求变得更易于管理。模块化
在软件开发中使用相似的方法与微服务一块儿使用。所谓的垂直将应用程序划分为松散耦合的功能块。这简化了软件开发并提升了解决方案的弹性。可是,不考虑企业,IT操做和数据上下文。微服务
Microblock(参考微服务命名)是与其余块分离的IT服务的一部分,它实现了特殊功能。该块必须知足如下要求:性能
“微设计基础设施(MDI)将设计思惟应用于IT服务的基础设施设计。任何形式的模块化应用程序或IT功能都被视为IT服务。这种IT服务被分解为微块。这些构成了技术决策的基础(在设计思惟中称为:Persona)。测试
具体的基础设施和技术要求源自微块的背景。因为需求较少但必不可少,所以更容易作出合适的技术决策。重要的是要考虑IT服务的每一个功能部分,不只是应用程序模块(微服务)等显而易见的部分,还包括访问或PKI管理,DNS,服务发现,监视,日志记录和数据备份。
MDI流程使用基于设计思惟的流程步骤:理解,定义,构思,原型设计和测试。在自由展开的意义上,步骤没必要按此顺序彻底处理,建立一个涵盖尽量多的解决方案的框架更为重要。
MDI团队的组成基于不一样的IT学科。目的是可以理解和评估服务和单个微块的全部上下文和要求。这包括IT管理,架构,开发和运营,信息安全和数据保护。该团队应由多种的人才组成,他们在各自的学科和普遍的跨学科方面具备出色的专业知识。
此阶段的目的是了解流程和数据流,并将IT服务分为微块。此阶段应与软件架构团队并行执行。 MDI团队成员共享,讨论和记录他们看到微块的上下文。
接口(类型,协议),数据(输入,灵敏度,数量,输出),处理(并行化,编程语言),监视(监视,KPI,日志数据)是定义需求的微块的一部分。此外,还有开发和运营流程(部署和集成)。最后,添加了公司特定的要求(数据保护,信息安全,成本规范)。
对于每一个单独的微块,开发了几种技术解决方案的想法,惟一的要求是必须知足规范。经过不断询问,检查技术的选择是否客观和明智。例如,5-Why方法是一种很好的方法。
在开发原型时,应从一开始就使用自动化,由于它简化了微块原型的可重用性和配置。对于每一个原型,必须实施运行情况检查和自动安全检查。
在最后一步中,服务由微块组装而成。功能测试和性能测试显示每一个单独的微块是否正确结合。若是此处发生错误,则必须对其进行详细分析以找出原点(例如,忽略的要求,不合适的技术,原型结构中的错误等)。它会跳回到相应的流程步骤并进行更正。若是一切都符合要求,那么没有什么能阻碍上线。
“微设计基础架构”的目标是经过一组创意专家为IT服务开发最佳基础架构。因为模块化结构,专一于单个块的分离和高度自动化,所需软件环境的数量能够减小到最小,而且能够下降服务成本。
若是在公司中始终如一地应用此方法,则会建立基于相同技术的微块集群,由于上下文只会稍微改变(一般只是应用程序上下文),所以决策极可能会致使相同的技术。这也是高效的核心技术的基础设施。
软件架构是指软件系统的基本结构和建立这种结构和系统的学科。 每一个结构包括软件元素,它们之间的关系,以及元素和关系的属性。软件系统的体系结构是一种隐喻,相似于建筑物的体系结构。它做为系统和开发项目的蓝图,规划了由设计团队执行的必要任务。
软件架构设计了软件组件的大体轮廓,不考虑技术方面。 MDI将这方面添加到软件架构中。这意味着Micro Design Infrastructures不是一种替代方案,而是一种应该并行运行的补充流程。
微服务是一种软件开发技术,它将应用程序构建为松散耦合服务的集合。在微服务架构中,服务是细粒度的,协议是轻量级的。将应用程序分解为不一样的较小服务的好处是它能够提升模块性。这使得应用程序更易于理解,开发,测试,而且对架构入侵更具弹性。
微服务主要涉及应用程序开发。在垂直和水平可伸缩性方面,基于应用程序上下文分解应用程序。微设计基础架构(MDI)考虑了一个更全面的上下文,用于定义和分区应用程序,并定义了一个可理解和企业范围内可接受决策的过程。
ISA是基于经验的最佳实践的集合,特别是微服务和自包含系统以及这些项目所面临的挑战。
ISA中定义的原则与MDI中的MicroBlocks概念很是类似。此外,Micro Designed Infrastructures定义了一个在上下文中根据这些原则开发IT服务基础架构的过程。
DevOps是两个主要相关趋势碰撞中出现的新术语。第一个也被称为“敏捷基础设施”或“敏捷运营”;它源于将敏捷和精益方法应用于运营工做。第二是对发展和运营人员之间合做价值的更普遍理解[...]。
DevOps描述了一种更好合做的文化。这种文化是IT领域任何建设性合做的基础,包括微设计基础设施。然而,MDI提供了有关如何经过此协做解决特定问题的具体流程和原则。
DDD是一种经过将实现链接到不断发展的模型来知足复杂需求的软件开发方法。域驱动设计的前提以下:
将项目的主要重点放在核心域和域逻辑上;
在域的模型上进行复杂的设计;
启动技术专家和领域专家之间的创造性协做,以迭代方式完善解决特定领域问题的概念模型。
DDD在解决问题方面也有相似的方法,特别是经过关注功能和背景。主要地,DDD中的元素是基于域的,与MDI使用的基于功能的微块相反。这意味着Micro Design Infrastructure不是替代方案,而是DDD的补充流程。
SCS方法是一种架构,专一于将功能分离到许多独立系统中,使完整的逻辑系统成为许多小型软件系统的协做。这避免了大型单块体不断增加并最终变得不可维护的问题。在过去几年中,咱们已经看到它在许多中型和大型项目中的优点。
SCS将各个模块视为包含数据逻辑和应用程序逻辑的自治Web应用程序。每一个Web应用程序都有本身的用户界面,由不一样的团队处理。 Micro Designed Infrastructures纯粹从功能角度来看待技术决策。没有理由组合几个功能。此外,MDI定义了一个为IT服务开发无偏见和创造性基础架构的流程。
译者:Emma------
送福利啦~ 近期将以前已翻译文章,整理成了PDF。 在公众号后台回复:002便可领取哦~ 后续也会不断更新PDF的内容,敬请期待!