微设计基础架构(MDI)

了解微设计基础架构(MDI)的概念,它们如何帮助开发,以及它们与DevOps和微服务等技术的关系

技术决策既困难又严肃,可以决定项目的成败。如何找到合适的技术栈?“微设计基础架构”(MDI)是一种新方法,它使用“设计思维”中的回忆来开发最佳,易于理解且是公司范围内公认的基础架构或技术堆栈。

技术和基础设施决策具有挑战性,因为必须结合不同的要求(公司,应用,未来的安全等),找到合适的解决方案。在某些情况下,项目的复杂性如此之高,以至于应用了类似项目的最佳实践方法,但这些方法具有不同的背景。这可能导致做出最终不适合应用程序或公司的决策。管理层对成本和速度的期望未得到满足,部署或移交IT运营成为绊脚石。如何防止这种情况?

1.原则

解决复杂问题的方法有两种:解决问题的结构化流程,将大问题分解成更小的部分,每个部分都更容易,更清晰地解决。

1.1 解决方案的结构化发展:设计思维

设计思维是基于这样的假设:当来自不同学科的人在鼓励创造力的环境中一起工作时,问题会得到更好的解决。他们共同了解人们的需求和动机,以便得出经过多次测试的概念和解决方案。

这个过程的一部分是共鸣,定义,构思,原型设计和测试。例如,设计思维用于开发应用程序或业务单元的数字化。

1.2 分解问题:微块

IT服务和应用程序的问题在于需求的复杂性,从开发,集成和部署流程开始,到数据备份,IT安全和数据保护结束。如果将IT服务划分为单个部分,则特定要求变得更易于管理。

在软件开发中使用类似的方法与微服务一起使用。所谓的垂直将应用程序划分为松散耦合的功能块。这简化了软件开发并提高了解决方案的弹性。但是,不考虑企业,IT操作和数据上下文。

Microblock(参考微服务命名)是与其他块分离的IT服务的一部分,它实现了特殊功能。该块必须满足以下要求:

  • 明确功能的定义。
  • 不依赖于其他块的技术和基础设施。
  • 标准化界面REST,HTML,SQL,DNS等
  • 可以独立于其他块进行更改/安装

1.3 设计思维+微块=微设计基础设施

“微设计基础设施(MDI)将设计思维应用于IT服务的基础设施设计。任何形式的模块化应用程序或IT功能都被视为IT服务。这种IT服务被分解为微块。这些构成了技术决策的基础(在设计思维中称为:Persona)。

具体的基础设施和技术要求源自微块的背景。由于需求较少但必不可少,因此更容易做出合适的技术决策。重要的是要考虑IT服务的每个功能部分,不仅是应用程序模块(微服务)等显而易见的部分,还包括访问或PKI管理,DNS,服务发现,监视,日志记录和数据备份。

MDI流程使用基于设计思维的流程步骤:理解,定义,构思,原型设计和测试。在自由展开的意义上,步骤不必按此顺序完全处理,创建一个涵盖尽可能多的解决方案的框架更为重要。

2.过程

2.1.建立:选择团队和环境

MDI团队的组成基于不同的IT学科。目的是能够理解和评估服务和单个微块的所有上下文和要求。这包括IT管理,架构,开发和运营,信息安全和数据保护。该团队应由多种的人才组成,他们在各自的学科和广泛的跨学科方面具有出色的专业知识。

2.2.理解问题

此阶段的目的是了解流程和数据流,并将IT服务分为微块。此阶段应与软件架构团队并行执行。 MDI团队成员共享,讨论和记录他们看到微块的上下文。

2.3.定义:分析要求

接口(类型,协议),数据(输入,灵敏度,数量,输出),处理(并行化,编程语言),监视(监视,KPI,日志数据)是定义需求的微块的一部分。此外,还有开发和运营流程(部署和集成)。最后,添加了公司特定的要求(数据保护,信息安全,成本规范)。

2.4.构思:开发可能的解决方案

对于每个单独的微块,开发了几种技术解决方案的想法,唯一的要求是必须满足规范。通过不断询问,检查技术的选择是否客观和明智。例如,5-Why方法是一种很好的方法。

2.5.原型设计:创建原型

在开发原型时,应从一开始就使用自动化,因为它简化了微块原型的可重用性和配置。对于每个原型,必须实施运行状况检查和自动安全检查。

2.6.测试:服务的功能检查

在最后一步中,服务由微块组装而成。功能测试和性能测试显示每个单独的微块是否正确结合。如果此处发生错误,则必须对其进行详细分析以找出原点(例如,忽略的要求,不合适的技术,原型结构中的错误等)。它会跳回到相应的流程步骤并进行更正。如果一切都符合要求,那么没有什么能阻碍上线。

3.摘要

“微设计基础架构”的目标是通过一组创意专家为IT服务开发最佳基础架构。由于模块化结构,专注于单个块的分离和高度自动化,所需软件环境的数量可以减少到最小,并且可以降低服务成本。

如果在公司中始终如一地应用此方法,则会创建基于相同技术的微块集群,因为上下文只会稍微改变(通常只是应用程序上下文),因此决策很可能会导致相同的技术。这也是高效的核心技术的基础设施。

4.差异

4.1.软件架构


软件架构是指软件系统的基本结构和创建这种结构和系统的学科。
每个结构包括软件元素,它们之间的关系,以及元素和关系的属性。软件系统的体系结构是一种隐喻,类似于建筑物的体系结构。它作为系统和开发项目的蓝图,规划了由设计团队执行的必要任务。

Wikipedia


软件架构设计了软件组件的大致轮廓,不考虑技术方面。 MDI将这方面添加到软件架构中。这意味着Micro Design Infrastructures不是一种替代方案,而是一种应该并行运行的补充流程。

4.2.微服务


微服务是一种软件开发技术,它将应用程序构建为松散耦合服务的集合。在微服务架构中,服务是细粒度的,协议是轻量级的。将应用程序分解为不同的较小服务的好处是它可以提高模块性。这使得应用程序更易于理解,开发,测试,并且对架构入侵更具弹性。

Wikipedia


微服务主要涉及应用程序开发。在垂直和水平可伸缩性方面,基于应用程序上下文分解应用程序。微设计基础架构(MDI)考虑了一个更全面的上下文,用于定义和分区应用程序,并定义了一个可理解和企业范围内可接受决策的过程。

4.3.独立系统架构(ISA)


ISA是基于经验的最佳实践的集合,特别是微服务和自包含系统以及这些项目所面临的挑战。

ISA Principles


ISA中定义的原则与MDI中的MicroBlocks概念非常相似。此外,Micro Designed Infrastructures定义了一个在上下文中根据这些原则开发IT服务基础架构的过程。

4.4.DevOps


DevOps是两个主要相关趋势碰撞中出现的新术语。第一个也被称为“敏捷基础设施”或“敏捷运营”;它源于将敏捷和精益方法应用于运营工作。第二是对发展和运营人员之间合作价值的更广泛理解[...]。

The agile admin


DevOps描述了一种更好合作的文化。这种文化是IT领域任何建设性合作的基础,包括微设计基础设施。然而,MDI提供了有关如何通过此协作解决特定问题的具体流程和原则。

4.5.领域驱动设计(DDD)


DDD是一种通过将实现连接到不断发展的模型来满足复杂需求的软件开发方法。域驱动设计的前提如下:

  • 将项目的主要重点放在核心域和域逻辑上;

  • 在域的模型上进行复杂的设计;

  • 启动技术专家和领域专家之间的创造性协作,以迭代方式完善解决特定领域问题的概念模型。

    Wikipedia


DDD在解决问题方面也有类似的方法,特别是通过关注功能和背景。主要地,DDD中的元素是基于域的,与MDI使用的基于功能的微块相反。这意味着Micro Design Infrastructure不是替代方案,而是DDD的补充流程。

4.6.自包含系统(SCS)


SCS方法是一种架构,专注于将功能分离到许多独立系统中,使完整的逻辑系统成为许多小型软件系统的协作。这避免了大型单块体不断增长并最终变得不可维护的问题。在过去几年中,我们已经看到它在许多中型和大型项目中的优势。

scs-architecture.org


SCS将各个模块视为包含数据逻辑和应用程序逻辑的自治Web应用程序。每个Web应用程序都有自己的用户界面,由不同的团队处理。 Micro Designed Infrastructures纯粹从功能角度来看待技术决策。没有理由组合几个功能。此外,MDI定义了一个为IT服务开发无偏见和创造性基础架构的流程。

原文:https://dzone.com/articles/take-the-lead-on-technology-decisions-sustainable-1

作者:Kai Grotelueschen

译者:Emma------

微设计基础架构(MDI)的更多相关文章

  1. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  2. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

    在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...

  3. WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例

    最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架 ...

  4. 网易蜂巢微服务架构:用RabbitMQ实现轻量级通信

    本次分享内容由三个部分组成: 微服务架构与MQ RabbitMQ场景分析与优化 RabbitMQ在网易蜂巢中的应用和案例分享 1微服务架构与MQ 微服务架构是一种架构模式,它将单体应用划分成一组微小的 ...

  5. Atitit.架构设计趋势 设计模式 ---微服务架构  soa

    Atitit.架构设计趋势 设计模式 ---微服务架构  soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...

  6. 《2016ThoughtWorks技术雷达峰会----微服务架构》

    微服务架构   王键,ThoughtWorks, 首席咨询师 首先微服务架构的定义,thoughtWorks在2012年3月的技术雷达中这样定义: “微服务架构是一种架构,它提倡将单一应用程序划分为一 ...

  7. 基于netty的微服务架构

    基于netty的微服务架构 微服务一篇好文章 http://san-yun.iteye.com/blog/1693759 教程 http://udn.yyuap.com/doc/essential-n ...

  8. 微服务架构:Eureka集群搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 服务注册.发现是微服务架构的关键原理之一,由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就必 ...

  9. ThoughtWorks微服务架构交流心得

      ThoughtWorks微服务架构交流心得: (1)<人月神话>中谈到软件开发没有银弹,根源在于软件所解决的领域问题本身固有的复杂性,微服务正是从领域问题角度上进行服务拆分,来降低软件 ...

随机推荐

  1. destoon系统结构大全

    自己整理的destoon系统结构目录,希望对开发者有些帮助! ( /代表的是目录  ├ 代表的是文件 ) /about关于我们页面 ├index.html关于我们 ├copyright.html版权隐 ...

  2. samba服务器的搭建和用户权限,文件夹权限设置

    一.简介:samba服务是基于netbios  安装: 通过yum安装 [root@localhost ~]# yum install samba samba-client samba-swat 查看 ...

  3. STLNormalFunc

    #include <iostream> #include <vector> using namespace std; void main_1() { vector<int ...

  4. Windows 2008R2 安装PostgreSQL 11.6

    前些天在CentOS 7.5 下安装了PostgreSQL 11.6.除了在无外网环境下需要另外配置之外,其他没有什么差别.今天主要写一下在Windows下面安装PostgreSQL的问题. 在官网看 ...

  5. Visual C++ 里的异常处理

    微软Visual C++是Win32最广泛使用的编译器,因此Win32反向器对其内部工作非常熟悉.能够识别编译器生成的粘合代码有助于快速集中于程序员编写的实际代码.它还有助于恢复程序的高级结构.我将集 ...

  6. 开源项目 04 PdfSharp

    using PdfSharp.Drawing; using PdfSharp.Pdf; using System; using System.Collections.Generic; using Sy ...

  7. 在windows环境下可以裁剪.jpg格式的图片

    发现在windows操作系统下,可以利用图片编辑器裁剪.jpg格式的尺寸大小.其四方有四个推子.可以移动.注意点击右方的“确定”按钮.

  8. 让你的shell更体贴

    使用shell的时候很多,特别是拉幕式终端,使用时更加方便,同时可以利用 echo "Did you know that:" ;whatis $(ls /bin | shuf -n ...

  9. 帝国CMS 7.5编辑器从WORD中粘贴过来无法保留格式和图片的解决办法

      配置过滤js文件 首先打开  \editor\plugins\pastefromword\filter\default.js  在文件的最后部分又如下代码(修改前的代码),也可以搜索CKEDITO ...

  10. P1981 表达式求值

    P1981 表达式求值 题解 这个题联想一下  P1310 表达式的值  思路就是输入中缀式,转成后缀式,然后按后缀式计算,完美!!       but!! 会严重RE,因为你可能会输入中缀式的时候输 ...