这些年来,模式在软件开发,体系结构和操作中的价值已得到广泛记录。 例如,TOGAF中的 The Open Group的Architecture模式讨论,以及Kyle Brown在运行时模式上下文中的所有级别的Patterns讨论。

在本文中,您将学习一种称为食谱的新型模式。 您可以使用配方来评估候选应用程序以迁移到云或在云中实施。 这些应用程序可以专门在云中或在混合模型中运行,其中某些组件在其他云平台或传统环境中运行。

食谱简化了分析应用程序并确定如何最好地将应用程序部署到IaaS或PaaS云平台中的时间和精力。 使用下面概述的三个基本构建块,您可以评估每个应用程序,以定义所需的内容以及如何最佳地将您的应用程序与云系统和服务保持一致。 此外,您可以通过两个附加服务层来扩展基本模式。 特定配方的生态系统服务和一般生态系统服务

食谱

核心模式或配方可提供有关如何从一组运行时和服务中构建应用程序或组件的见解。 它们不是样板文件 (暗示特定服务的特定组合),而是有关如何组合一般服务类型的一组说明。 样板更像是冷冻的比萨饼或拉面包装的杯子,而不是食谱。

本文探讨了三种通用的食谱类型,每种都有特定的子类型。 您将学习不同的配方类型以及支持每种配方类型的服务类型。 首先,您需要了解与可在云中构建的系统类型相关的三个概念。 您将看到定义第一个配方时为什么这很重要。 系统类型为:

  • 记录系统–记录系统是您在其中记录有关真实对象或事件的信息的系统。 如果在您的应用程序中,您在持久性存储中具有有关人员,事件和事物的复杂数据,那么您可能正在建立一个记录系统。
  • 互动系统–互动系统是指您主要与人互动的系统,而不是其他系统。 如果您的应用程序旨在访问现有数据,或者最多只允许对现有数据进行简单更改,那么您可能正在构建一个参与系统。
  • 洞察力系统–洞察力系统也许是最难理解的系统类型。 如果您的系统可以回答有关过去的问题,或试图以某种方式预测未来,那么您很可能会建立一个洞察力的系统。

这很重要,因为这三种系统类型均对应于该类型唯一的运行时和服务的特定组合。 换句话说,这些是我们的第一个配方。 但是,食谱包含一组核心成分。 例如,记录系统通常需要数据库来满足其特定的功能和非功能要求。 您可以改变的是适合当前特定问题的其他成分; 就像烹饪食谱中的食谱一样,可以指导您“按时品尝”。

实际上,最简单的配方是用于记录系统的配方。 在回顾了数十个已在developerWorks上记录或通过IBM®Bluemix Garage构建的记录系统示例之后,我们发现该方法是:

记录系统=运行时+数据源+(可选)网关

图1.示例数据源

这是什么意思呢?

运行时是IBM®Bluemix中的第一部分,它可能意味着Cloud Foundry Instant Runtime(例如Liberty Buildpack)或Docker容器或可以承载您的应用程序代码的VM。

数据源是下一个组件。 它可以是Bluemix中SQL的任何一种选择(例如DB2即服务或Compose Service的PostgreSQL),也可以是NoSQL的任何选择,例如Compose的IBM®Cloudant®或Redis。

网关是可能更难理解的部分。 一些(但不是全部)记录系统依赖于多种数据源类型,其中某些可能位于公司防火墙之后。 因此,网关可以包括API Management之类的服务,甚至可以包括安全网关,以获取对这些数据源的访问权限。 同样,记录系统也可以具有前端网关。 如果您的运行时是作为异步服务构建的,那么您将需要诸如Message Hub或IBM®MQLight服务之类的网关,以允许其他系统与其通信。

洞察力系统与记录系统(数据源)共享一件事。 数据源通常是唯一的通用性。 这是洞察系统的秘诀:

洞察力系统=数据源+(可选)可视化+(可选)分析工具+(可选)数据移动

值得研究引入的两种新型服务。 分析工具是一项服务,可帮助您对数据进行专门的分析。 分析工具的示例包括用于Apache Hadoop的IBM®BigInsights®,Apache Spark甚至IBM®DashDB™。 可视化是一种服务,可以帮助您的用户查看分析结果。 它可以是文本形式,例如“可嵌入报告”中的报告。 或者,它可以位于IOT Real-Time Insights之类的可视工具中。 最后,您可能需要在洞察力系统中将数据移入或移出不同的数据源–这是IBM®DataWorks之类的数据移动工具的工作。

使用参与系统,您将始终拥有一个运行时,通常还有一个网关,但是您可能有也可能没有数据源。 如果您的参与系统在本地缓存数据,则可能有一个数据源充当缓存,但是您不应该将任何数据永久存储在参与系统中-这是记录系统的工作。 因此,参与系统的简单方法是:

参与系统=运行时+ [作为缓存的数据源] + [网关]

在此示例中,一切似乎都是可选的! 那没有太大帮助。 真正的区别在于下一层–当您考虑使用来自特定配方生态系统的服务的更特定配方时。

图2.逻辑配方类型

食谱特定的生态系统

下一层是特定配方的生态系统中的服务,除了基本配方外,还包括一个或多个特定配方使用的系统或服务,以便在测试或生产环境中完全发挥作用。

食谱通常具有特定的子类型,可帮助您确定所需的核心服务和特定于食谱的生态系统服务:

交互系统分为Web交互 系统和移动交互系统:

  • 交互的Web系统可能会使用特定于配方的生态系统服务,例如会话缓存单点登录
  • 交互的移动系统可以使用特定于配方的服务,例如推送通知移动质量保证移动安全性

我们还经常看到记录的物联网系统通过IOT网关发送和接收消息。 通常,它将与允许用户与该记录系统存储在数据存储中的信息进行交互的参与系统结合在一起。

最后,洞察力系统可以分为历史洞察力 系统和实时洞察力系统

  • 历史洞察系统使用DashDB中可用的表透视之类的技术。
  • 实时洞察系统可以使用流分析Apache Spark等技术

该层中的系统或服务可以分为两组。 这些包括以下系统或服务:

  • 实现运营成功 。 这包括监视,负载平衡和缓存之类的服务。 例如,在为Web交互(SOI)食谱选择云服务时,您可能会发现需要会话缓存,负载平衡或自动缩放。
  • 与应用程序交互以支持功能需求。 操作。 交互可以使用多种协议(SOAP,REST,JDBC等)。 这些系统或服务的可用性随环境(Dev,QA,Prod)的不同而不同,并且在某些情况下以发布的API或虚拟服务表示。

一般生态系统

最后一种服务类型是支持软件开发,交付和发布生命周期的常规生态系统服务。 对于部署到混合,传统或大型机环境的组织,此生态系统为应用程序交付生命周期中的多个环境提供了系统和服务。 例如,如果您在Bluemix public中部署Web应用程序,则可以选择BlazeMeter或LoadImpact来测试应用程序的性能。 而且,如果您要开发一个本机云应用程序以部署到Public Bluemix上,请选择使用DevOps Services Delivery Pipeline来构建应用程序并将其部署到不同阶段。 相反,如果您使用带有混合工作流的应用程序来开发应用程序,这些工作流将部署到传统的内部环境和一个或多个云(IaaS,PaaS)平台,则可以使用UrbanCode Deploy在云平台中进行应用程序部署和全栈置备。

了解可用功能

使用这种方法时,您可能希望通过确定您的应用程序是否支持云来限定您的应用程序和模式。 此评估遵循的一个很好的框架是“ 云应用程序的前9条规则 ”(developerWorks,2014年4月)。

您还应该了解您的云提供商或传统平台功能,尤其是希望利用的提供的服务。 许多提供商都有网站,例如IBM的云服务。

如果您打算在混合模型中跨平台运行某些应用程序,请了解集成平台的功能。 API和混合云集成就是一个很好的例子。

评估云提供商,跨提供商或在本地托管的系统或服务。 例如,博客“ 用于混合云部署的带有Bluemix的UrbanCode ”展示了跨混合和传统平台的交付管道的通用功能。

建立食谱

最好将配方应用于每个应用程序,然后寻找可重复的生态系统,以将您的应用程序分类为通用模式。 这应该迭代执行,并且仅在需要时引入新的要求或服务。

  • 步骤1 :建立食谱。 实验并确定最适合您的核心配方的运行时和服务。
  • 步骤2 :您的应用程序是否需要配方生态系统服务来实现特定于配方的功能或满足配方核心的NFR? 如果是这样,请添加特定于配方的生态系统服务。
  • 步骤3 :您的应用程序是否需要生态系统服务来在可维护性,性能或可靠性或安全性方面满足您解决方案的NFR? 如果是这样,请添加一般的生态系统服务,例如DevOps Services或Security Services中的一项或多项。

下图显示了一个示例Bluemix配方。 它包括Java运行时,Cloudant DB,安全网关和CUPS的核心配方,用于连接到其他本地数据源。 它还以DevOps开放工具链,自动扩展分析和消息中心的形式包括特定于配方的常规生态系统。

图3.示例Bluemix配方

结论

在本文中,您了解了可用于计划将应用程序迁移到IaaS或PaaS云平台的体系结构模式。 三步分层方法提供了一种定义核心和生态系统模式的方法,使您能够为应用程序定义运行时拓扑和必要的云服务。 通过使用这种方法,当您使用相似的配方模式移动多个应用程序时,将减少计划迁移的时间和精力,并降低复杂性。


翻译自: https://www.ibm.com/developerworks/library/d-cloud-application-recipes-trs/index.html

菜谱小程序_云应用程序食谱相关推荐

  1. 开发用于互操作性的应用程序_云标准:确保云应用互操作性的工具

    大约两年前,IBM软件标准和云实验室副总裁Angel Diaz展示了云计算的未来: 通过改变商业和社会的运行方式,云计算正在开拓巨大的创新渠道. 开发人员现在正在将记录系统与参与系统相结合,并且一种新 ...

  2. 移动应用程序和网页应用程序_移动应用程序的站点可靠性工程

    移动应用程序和网页应用程序 理论指导 (A Theoretical Guide) You must have heard about the term Site Reliability Enginee ...

  3. 云服务器运行python程序_云服务器部署python项目

    发现python的一个识别验证码识别模块 muggle-ocr(https://pypi.org/project/muggle-ocr/) 成功率还是可以的,打算把把部署到云服务器上 这里记录一下部署 ...

  4. python字符串输入小圆点_心理学实验程序编程(python)

    任务一:实现简单的屏幕的颜色之间的切换 importpygamefrom pygame.locals import *pygame.init() win= pygame.display.set_mod ...

  5. navicat连接oracle无监听程序_一个Java程序员的成长历程(022天)

    第43次(Oracle数据库的使用) 学习主题:Oracle数据库的使用 学习目标: 1 掌握数据库相关概念 2 掌握oracle的安装,认识oracle的目录以及系统用户 3 掌握oracle常用命 ...

  6. 计算机行业中的烧写怎么翻译,单片机怎么烧录程序_单片机烧录程序步骤说明...

    描述 单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU.随机存储器RAM.只读存储器ROM.多种I/O口和中断系统.定时器/ ...

  7. traceroute程序_来!程序猿教你们玩微信代码~

    让你们装一下 程序猿 差友们应该都知道,世超其实是个程序猿,所以今天世超决定教你们一些微信的隐藏装逼代码. 提前说一下,这些代码只有Android手机能使用? I. 把聊天页和文章页拆分 代码://m ...

  8. 应用程序_构建应用程序12 条参考准则

    作者:NDOER(来源:掘金) 链接:https://juejin.im/post/5dfdd9aef265da33b50740ee 0.前奏曲 12 要素应用程序(12-factor-app)是 H ...

  9. python怎么重复程序_利用Python程序完成ABAQUS中的一些重复性操作

    对于建立过大型的ABAQUS分析模型的同学们,肯定会面对繁琐的重复性建模过程.比如对上百个点施加集中力,比如建立几百个耦合约束.这些重复性操作,如果使用cae操作的话,不仅费时,而且极其容易出错. 利 ...

最新文章

  1. Eigen/Matlab 使用小结
  2. python现在好找工作吗-Python就业前景如何?培训后好找工作吗?
  3. 5-Error:failed to find Build Tools revision 28.0.0 rc1解决方案
  4. 计算机应用电子技术课程,中专计算机应用有什么课程
  5. 计算机学院会会,欢迎访问武汉理工大学计算机科学与技术学院
  6. 代码行数越少就越“简单”吗?
  7. windous和Linux桌面版的比较
  8. javaweb文件压缩下载
  9. elasticdump 数据导入导出
  10. linux怎么备份文件夹命令,linux环境文件备份命令
  11. Anaconda下载安装Pytorch遇到的几个问题及解决办法
  12. 如何下载spring sts
  13. 文件后缀对应文件类型表
  14. MATLAB线型英文名字
  15. GD32(4)存储管理
  16. python mysqldb_python MySQLdb API手册
  17. python新手入门指导_Python初学者入门指导,Python自学者的福音来了
  18. Tensorflow2.0 利用LSTM和爬虫做自动生成七言律诗
  19. Byte的数值范围为何是-128到127
  20. sealos+rook 部署 kubeSphere+TiDB

热门文章

  1. 浏览器兼容平台f2etest搭建详细记录
  2. 大鱼app是什么 大鱼怎么省钱 ?
  3. IndentationError:expected an indented block错误解决
  4. 错过短视频,微博奔向新浪
  5. 认知计算主义的重建与反思
  6. ios定位权限plist_最新版ios权限描述文字plist的权限描述文字...
  7. Mac 软件专题:教学参考工具软件-外语/医学/天文/地理/数学等
  8. 低噪声前置高增益放大器设计
  9. FineReport公式函数
  10. PHPstudy搭建外网(个人电脑当做服务器)