2.3 独特的云特性对DevOps的影响


云影响DevOps的3个独特特性是简单地创建和切换环境的能力;轻松创建虚拟机的能力,以及数据库的管理。我们首先讨论环境。

2.3.1 环境

在我们的上下文中,环境是足够执行软件系统的一组计算资源,包括所有支持软件、数据集、网络通信,以及执行软件系统所需定义的外部实体。

这个定义的关键点是:除了明确定义的外部实体外,环境是自包含的。一个环境通常独立于其他环境。在第5章中,我们会看到一些环境,例如开发、集成、用户测试,以及生产环境。在第12章的案例研究中,环境的生命周期是其部署流水线的一部分。在开发、测试和部署过程的各阶段有多个环境并不是云独有的特性,但简单地创建和迁移环境的能力是云独有的特性——像克隆新实例一样容易。通过使环境之间没有可修改的共享资源来实现一个环境与另一个环境的隔离。只读资源,例如各种订阅源,可以共享而不会带来问题。因为环境与外部世界的通信只通过已定义的外部实体,所以这些实体能够通过URL访问,因此可以单独管理。写或修改这些外部实体的状态应该只在生产环境中进行,并为所有其他环境创建独立的外部实体(例如,仿制品或测试克隆)。

将环境可视化的一种方法是将其看作一个竖井。图2-5展示了两个不同环境(测试环境和生产环境)的两个变体。每一个包含了同一个系统稍有差异的版本。两个负载均衡器(负责它们各自的环境)有不同的IP地址。如图2-5a所示,测试可以通过分流到生产环境的输入流并将副本发送到测试环境来实现。这种情况下,重要的是测试数据库与生产数据库隔离。图2-5b给出了一个替代方案。这种情况下,将实际生产消息的某个子集发送到测试环境来执行现场测试。我们在第6章讨论金丝雀测试以及其他现场测试方法。环境之间的移动能够用一个脚本来实现,在使用脚本之前要测试其正确性。我们将在第6章看看其他在测试和生产环境之间移动的技术。

图2-5 a)使用实际数据测试;b)使用一个用户子集进行现场测试[标注法:架构]

将生产轻松地从一个环境切换到另一个环境的结果是使业务连续性的实现变得更容易。业务连续性意味着当主数据中心发生灾难时业务能够继续运作。在第11章,我们将看到管理多数据中心的案例,但此刻并没有要求将两个环境放在同一个数据中心。如果目标是从一个环境迅速切换到备份环境,就需要同步两个数据库。

2.3.2 轻松创建虚拟机

由于分配新虚拟机过于容易,所以用户管理云方面的一些问题就浮现出来。虚拟机需要打最新的补丁,就像物理机一样,还需要付费。没有打补丁的机器会成为安全风险。而且,在公有云中,用户要付费使用虚拟机。我们听闻过一个发生在主要美国大学的事件,有个学生出去过暑假,但没有清理自己分配的资源,结果回来发现一个$80 000的账单。

术语虚拟机蔓延用来描述管理过多虚拟机的复杂性。类似地,拥有太多虚拟机镜像的挑战称为镜像蔓延。有工具(如Janitor Monkey)可以扫描账户并确定分配了哪些机器以及它们最近的使用情况。当利用云即平台时,必不可少的活动之一就是为机器的分配和虚拟机镜像归档开发并执行一个策略。

2.3.3 数据考量

云的经济效益伴随NoSQL数据库系统一同到来。许多系统利用多个不同的数据库系统,既有关系数据库也有NoSQL。此外,大量数据为了不同的商务智能或运营目的从各种渠道汇聚在一起。如同云中的计算资源能够通过扩展增加,存储资源也能够增加。我们先探讨Hadoop分布式文件系统,它为一个集群内的应用提供存储。Hadoop 分布式文件系统为许多NoSQL数据库系统提供文件系统。然后,我们探讨与分布式文件系统相关的运维注意事项。

1. Hadoop分布式文件系统

Hadoop分布式文件系统提供了一个共享的存储资源池。应用通过Java、C或其他流行语言实现的一个常规文件系统接口来访问Hadoop分布式文件系统。可用的命令包括open(打开)、create(创建)、read(读)、write(写)、close(关闭)和append(追加)。由于多个应用共享Hadoop分布式文件系统提供的存储,所以一个管理器控制文件名的命名空间并在应用程序想写新块时分配空间。该管理器还提供信息以便应用程序能够直接访问特定的块。Hadoop分布式文件系统还有一个存储节点池。

Hadoop分布式文件系统中,这个管理器称为NameNode,存储池的每个元素称为DataNode。Hadoop分布式文件系统还分配了一个NameNode用于热备份。每个DataNode是一个单独的物理机或虚拟机。限制应用程序写固定大小的块——通常是64MB。当应用程序要向文件写一个新块时,它联系NameNode并请求存储该块的DataNode。每块将复制多次,通常是3次。NameNode用一个DataNode列表响应写请求,并得到可写块,之后应用程序把块写入每一个DataNode中。

Hadoop分布式文件系统的许多特性都是用来防范单个DataNode的故障并提高Hadoop分布式文件系统的性能。就我们的目的而言,关键要素是Hadoop分布式文件系统提供了一个在应用程序之间共享的存储池。

2.运维注意事项

与Hadoop分布式文件系统这样的共享文件系统相关的运维注意事项是双重的。

1)谁管理Hadoop分布式文件系统的安装?Hadoop分布式文件系统既可以是多个应用程序之间共享的一个系统,也可以只是一个应用程序的实例化。在单一应用程序的情况下,其管理职责将落在该应用程序的开发团队身上。在共享的情况下,系统的管理必须指派给组织内的某处。

2)存储在Hadoop分布式文件系统内的数据是如何防范灾难的?Hadoop分布式文件系统本身会在多个DataNode上备份数据,但数据中心的一般故障可能造成Hadoop分布式文件系统无法访问或者Hadoop分布式文件系统管理的数据被损坏或丢失。对于那些部分业务依赖于Hadoop分布式文件系统的持续执行并访问存储在Hadoop分布式文件系统中的数据的业务来说,业务连续性成为一个必须解决的问题。

DevOps:软件架构师行动指南DevOps:软件架构师行动指南2.3 独特的云特性对DevOps的影响...相关推荐

  1. devops基础扫盲篇_在2020年取得成功的8篇必读的DevOps文章

    devops基础扫盲篇 我是一个狂热的读者,但是我经历了非常忙的时期,很难找到时间跟上我的阅读清单. 即使在我最忙的时候,我也尽量保持关注DevOps新闻,因为这是我关注的领域之一. 在这里,我总结了 ...

  2. 云效一站式DevOps平台

    云效一站式DevOps平台,开箱即用云效DevOps平台为企业提供项目协作.代码管理.持续交付流水线.云原生应用交付.在线IDE.制品仓库.测试管理.知识库 .效能洞察9大产品,云效一站式DevOps ...

  3. DevOps关键能力之持续交付 - 新书预览《加速:精益软件和DevOps的科学》

    " 持续交付需要哪些关键能力呢?" 本文是重磅新书<加速>读后感系列文章DevOps需要哪些关键能力?新书预览<加速:精益软件和DevOps的科学>的续篇. ...

  4. 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门

    新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...

  5. 腾讯云推出一站式 DevOps 解决方案 —— CODING DevOps

    腾讯云推出一站式 DevOps 解决方案 -- CODING DevOps 参考文章: (1)腾讯云推出一站式 DevOps 解决方案 -- CODING DevOps (2)https://www. ...

  6. 云原生思想 — 云原生的 DevOps

    目录 文章目录 目录 DevOps DevOps 平台 云原生的 DevOps 特征 DevOps DevOps 是一组用于促进开发.测试以及运维人员之间协作的过程.方法和系统的统称. 开发:研发部门 ...

  7. dedecms使用php语法,dedecms中使用php语句指南,dedecmsphp语句指南_PHP教程

    dedecms中使用php语句指南,dedecmsphp语句指南 在DEDECMS中,使用php语句的话,本身是有{dede:php}标签可以使用的,最简单的输入如 复制代码 代码如下: {dede: ...

  8. 构建闭环式的研发运维体系----云效EDAS DevOps

    随着互联网+的不断兴起,"科技+行业"的融合创新已经成为行业转型的核心策略.比如金融+科技造就了众安保险.天弘基金.网商银行等创新金融企业,塑造了行业转型的标杆.为了能够更好地支撑 ...

  9. ZooKeeper管理员指南 部署和管理指南

    ZooKeeper管理员指南 部署和管理指南 PDF 部署 系统要求 支持的平台 必备软件 群集(多服务器)安装程序 单服务器和开发人员设置 管理 设计ZooKeeper部署 跨机器要求 单机要求 供 ...

  10. 华为云落地敏捷+DevOps,助力大企业高效能

    2019年5月27-28日,QCon 全球软件开发大会在广州希尔顿举办.QCon是由InfoQ主办的综合性技术盛会,每年在伦敦.北京.纽约.圣保罗.上海.旧金山召开.自2007年3月份开始举办以来,已 ...

最新文章

  1. C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——删除
  2. XCTF-Reverse:insanity
  3. pycharm替换和查找文件中所有相同代码方法
  4. python 2.6下 No module named sysconfig
  5. 病毒的手工排除与分析(更新完毕)
  6. 华为服务器上传文件后怎么通过链接查看,远程服务器文件上传后的操作
  7. PL/SQL中的=作用
  8. js中substr,substring,indexOf,lastIndexOf的用法小结
  9. Array类型的扩展
  10. grpc python stream_grpc| python 实战 grpc【h】
  11. Mac Book Pro桌面隐藏文件
  12. 破解电信光猫(个人真实经验)
  13. java实现网络下载进度_Retrofit+Rxjava下载文件进度的实现
  14. 制作软件工程师风格的qq头像
  15. html5小猫钓鱼游戏思路,小猫钓鱼的游戏算法
  16. Unity3D协程介绍以及使用
  17. git for Mac安装(包含客户端软件Github Desktop的安装配置)
  18. Python学员信息管理系统
  19. unity的九宫格切割
  20. 微服务架构总结性介绍 (深度好文)

热门文章

  1. 异动处理中的发票类型应用(Complaint Processing)
  2. 三分钟了解APS系统中生产计划排程模块的基本原理
  3. 第十四章 深度确定性策略梯度(Deep Deterministic Policy Gradient Algorithms,DDPG)-强化学习理论学习与代码实现(强化学习导论第二版)
  4. leetcode刷题日记-边界着色
  5. [python] 对于arcpy的简单使用。
  6. (bfs)广度优先 实现图的遍历
  7. K-fold vs. Monte Carlo cross-validation(K折交叉验证与蒙特卡洛交叉验证(MCCV))
  8. nginx配置php虚拟主机
  9. hpdl388安装2012系统_2010、2012型双端面中压釜用机械密封-安装指导
  10. 使用SQL语句操作数据库-01