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

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分布式文件系统中的数据的业务来说,业务连续性成为一个必须解决的问题。

时间: 2024-08-30 04:34:59

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

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

随着互联网+的不断兴起,"科技+行业"的融合创新已经成为行业转型的核心策略.比如金融+科技造就了众安保险.天弘基金.网商银行等创新金融企业,塑造了行业转型的标杆.为了能够更好地支撑业务的创新,如何塑造企业的共享业务中台,如何支撑互联网架构下研发工程效率的提升,将会是企业遇到的核心挑战.面对这些挑战,阿里巴巴企业级分布式应用服务EDAS与云效平台联合推出了一整套研发平台支撑解决方案,步实现DevOps闭环的关键一步.   产品背后的思考 DevOps是软件开发.运维和质量保证三个部门之间

基于Asterisk的VoIP开发指南——Asterisk 模块编写指南(1)

原文:基于Asterisk的VoIP开发指南--Asterisk 模块编写指南(1) 1 开源项目概述 Asterisk是一个开源的软件包,通常运行在Linux操作系统平台上.Asterisk可以用三种协议来实现VoIP,同时可以与目前电话使用的标准硬件进行交互通信,Asterisk在实现VoIP时,不需要任何附加硬件,本文所采用的也是这种使用方式.但是,如果企业没有与VoIP语音网关运营商建立合作关系,想要自己构建这样的一个平台,那么要和数字电话设备与模拟电话设备进行交互通信,Asterisk

2017年云趋势——从DevOps到NoOps

本文讲的是2017年云趋势--从DevOps到NoOps[编者的话]本文介绍了2017年DevOps的最新趋势,提出了NoOps的概念,并且提出了采用智能化技术来促进DevOps向NoOps转型的思想. 伴随着容器的兴起,微服务架构的落地以及机器智能的深入,DevOps工程师们将更倾向于使用这些技术来解决日常工作中的问题.我相信,对于DevOps工程师们来说,2017年绝对是值得为之兴奋的一年.在过去的7年里,我们一直持续关注着从手动运维到DevOps的变化趋势,然而,伴随着运维机器智能的兴起,

五大技巧实现面向云的坚固DevOps模型

在IT业的今天,DevOps正成为一个公认的概念.DevOps模型最初被创建来用于加强开发和运营团队之间的联系,以此达到更高效的软件交付.尽管很多公司通过DevOps获得了敏捷性,DevOps还是有其缺点-尤其是在安全方面. 在一般情况下,DevOps关注于加速应用,以及包括那些会在云端运行的应用的交付过程.但是,安全性往往是事后才考虑的.许多组织如果有实施安全也是在开发过程结束的时候才做.这种追加的方式意味着安全过程没有渗透到整个服务,因而让服务易于遭受攻击. DevOps和安全之间的差距可能

《Visual C++ 2012 开发权威指南》——第2章 Visual C++2012语言新特性2.1 Visual C++2012的语言新特性(1)

第2章 Visual C++2012语言新特性 Visual C++ 2012 开发权威指南 有一种新的C++标准就有一种新版本的Visual C++,新的版本Visual C++将更加符合C++标准!在其发展过程中新的C++标准被(乐观)称为C++0x.它最后被发布在2011年,现在称为C++11. 对于Visual C++,它有三个不同版本的数字,有不同的内部版本和编译器版本(cl.exe和_MSC_VER宏-显示不同,因为我们C++编译器早在Visual C++中的"可视化").

《Visual C++ 2012 开发权威指南》——第1章 Visual Studio 2012的新特性1.1 如何安装Windows 8

第1章 Visual Studio 2012的新特性 Visual C++ 2012 开发权威指南 1.1 如何安装Windows 8 Windows 7进入市场已有3年,凭借其简洁.快速.个性和绚丽等特点,Windows 7号称微软历史上最成功的操作系统.作为微软下一代的主流操作系统Windows 8,在Windows 7速度和可靠性的基础上,对Windows操作系统进行了重塑.它提供全新的触控界面,是一种适用于新设备的新型Windows操作系统.现在市场上已有Windows 8 RP(Rel

EGit用户指南,使用手册,(基础指南,创建仓库,版本跟踪,检查历史)

个人原创,版权所有,转发请标明出处:http://blog.csdn.net/wanghantong 基础指南 1.Adding a project to version control(给项目添加一个版本控制) 当我们的repository发生了变化的时候,我们需要知道是谁触发了这次提交,这个标识是由两部分组成:1.name 2.e-mail address 这个信息是存储在文件 ~/.gitconfig 中. 在我们创建第一次commit(提交)的时候,EGit会询问这个信息.在默认情况下:

Google C++编程风格指南(四):智能指针和其他C++特性

1.对于智能指针,安全第一.方便第二,尽可能局部化(scoped_ptr): 2.引用形参加上const,否则使用指针形参:3.函数重载的使用要清晰.易读:4.鉴于容易误用,禁止使用缺省函数参数(值得商榷):5.禁止使用变长数组:6.合理使用友元-- Google特有的风情 Google有很多自己实现的使C++代码更加健壮的技巧.功能,以及有异于别处的C++的使用方式. 1.智能指针(Smart Pointers) 如果确实需要使用智能指针的话,scoped_ptr完全可以胜任.在非常特殊的情况

《DevOps:软件架构师行动指南.》导读

本节书摘来自华章出版社<DevOps:软件架构师行动指南.>一书中作者伦恩·拜斯(Len Bass) [澳]   英戈·韦伯(Ingo Weber)    著 朱黎明(Liming Zhu)   前言   多年以来,我们一直在探索研究运维中的问题.自然而然地,我们也一直在追踪DevOps运动.它正在沿着Gartner成熟度曲线向上发展.这种现象有着坚实的业务原因.我们能够找到从信息技术经理视角对DevOps的探讨(例如小说<凤凰项目:一个IT运维的传奇故事>),也能找到从项目经理视