云的革命(一)

云的革命
      从一个世界开始的时候,因为它像圆圈一样四处转动,并且在它开始的圆圈上没有地方。
      第一次革命是云的创造,我们将解释它是什么以及它为什么重要。第二个是DevOps的曙光,你会发现它涉及到什么以及它如何改变运营。第三次革命是集装箱的到来。这三个变化浪潮共同创造了一个新的软件世界:云原生世界。这个世界的操作系统叫做Kubernetes。

     在本文中,我们将简要叙述这些革命的历史和重要性,并探讨这些变化如何影响我们所有部署和运行软件的方式。我们将概述云本机的含义,以及如果您从事软件开发,运营,部署,工程,网络或安全工作,您可以在这个新世界中看到哪些变化。

     由于这些相互关联的革命的影响,我们认为计算的未来在于基于云的容器化分布式系统,由Kubernetes平台(或非常类似的东西)通过自动化动态管理。开发和运行这些应用程序的技术 - 云原生DevOps  - 是我们将在本文其余部分探讨的内容。

     如果您已经熟悉所有这些背景材料,并且您只想开始享受Kubernetes的乐趣,请舒服地安顿下来,喝一杯最喜欢的饮料,我们会开始的。

云的创造
      一开始(无论如何,20世纪60年代),计算机在大型,远程,空调数据中心中逐个机架,用户永远不会看到它们或直接与它们交互。相反,开发人员将他们的工作远程提交到机器并等待结果。

      云的核心思想是:购买计算而不是购买计算机。 也就是说,不是将大量资金投入到难以扩展的物理机械中,且机械地分解,并且迅速变得过时,您只需在别人的计算机上花时间,让他们负责扩展,维护和升级。 在裸机的时代 - “铁器时代”,如果你喜欢 - 计算能力是一笔资本支出。 这是一项运营费用。

      云不仅仅是远程租用的计算能力。它也是关于分布式系统的。您可以购买原始计算资源(例如Google Compute实例或AWS Lambda函数)并使用它来运行您自己的软件,但您也越来越多地租用云服务:本质上,使用其他人的软件。例如,如果您使用PagerDuty监控系统并在出现故障时提醒您,则您使用的是云服务(有时称为软件即服务或当您使用云基础架构来运行自己的服务时,您所购买的是基础架构即服务(IaaS)。 您不必花费资金购买它,您不必构建它,云计算是企业与其IT基础架构之间关系的一次革命。外包硬件只是故事的一部分; 云还允许您外包您不编写的软件:操作系统,数据库,群集,复制,网络,监控,高可用性,队列和流处理,以及跨越差距的所有无数软件和配置层 在你的代码和CPU之间。 托管服务可以为您处理几乎所有这些无差别的繁重工作。

      在DevOps之前,开发和运行软件本质上是两个独立的工作,由两个不同的人群执行。 开发人员编写软件,然后将其传递给操作员,操作人员在生产中运行和维护软件(也就是说,为真实用户提供服务,而不仅仅是在测试条件下运行)。 就像需要自己建筑物楼层的计算机一样,这种分离的根源在于上个世纪中叶。 软件开发是一项非常专业的工作,计算机操作也是如此,两者之间几乎没有重叠。

     云计算的革命也引发了使用它的人们的另一场革命:DevOps运动。实际上,这两个部门的目标和激励措施完全不同,往往相互冲突(图1-2)。 开发人员倾向于专注于快速发布新功能,而运营团队则关注长期稳定可靠的服务。当云层出现时,情况发生了变化。分布式系统很复杂,互联网非常庞大。操作系统的技术 - 从故障中恢复,处理超时,平滑升级版本 - 并不与系统的设计,架构和实现分离。

      此外,“系统”不再仅仅是您的软件:它包括内部软件,云服务,网络资源,负载平衡器,监控,内容分发网络,防火墙,DNS等。所有这些事情都密切相关,相互依存。编写软件的人必须了解它与系统其他部分的关系,操作系统的人必须了解软件的工作原理或失败。

     DevOps的起源在于尝试将这两个群体聚集在一起:协作,分享理解,分担系统可靠性和软件正确性的责任,以及提高软件系统和构建人员团队的可扩展性。

理解DevOps

      DevOps偶尔也是一个有争议的想法,无论是那些坚持认为它只不过是现有的软件开发良好实践标签的人,还是那些拒绝在开发和运营之间加强协作的人。DevOps
实际上是存在普遍的误解:职称?团队?方法论?技能?颇具影响力的DevOps作家John Willis已经确定了DevOps的四个关键支柱,他称之为文化,自动化,测量和共享(CAMS)。另一种分解方法是Brian Dawson称之为DevOps三位一体:人与文化,流程与实践,工具与技术。

     有些人认为云和容器意味着我们不再需要DevOps  - 有时称为NoOps的观点。我们的想法是,由于所有IT运营都外包给云提供商或其他第三方服务,因此企业不需要全职运营人员。NoOps谬误是基于对DevOps工作实际涉及的内容的误解:使用DevOps,许多传统的IT操作工作都会在代码到达生产之前完成。每个版本都包括监控,日志记录和A / B测试。 CI / CD管道会在每次提交时自动运行单元测试,安全扫描程序和策略检查。部署是自动的。控制,任务和非功能需求现在在发布之前实现,而不是在严重中断的狂热和后果期间实现。  
业务优势
     从业务角度来看,DevOps被描述为“通过利用云来自动化和实践加速发布周期来提高软件质量,以及实际停留在生产中的软件的额外好处”(The Register)。采用DevOps需要对企业进行深刻的文化转型,这需要从执行,战略层面开始,逐步传播到组织的每个部分。速度,敏捷性,协作,自动化和软件质量是DevOps的关键目标,对于许多公司而言,这意味着思维方式的重大转变。
     但DevOps可以运行,并且定期研究表明,采用DevOps原则的公司可以更快地发布更好的软件,更好,更快地应对故障和问题,在市场上更灵活,并大大提高产品质量:
DevOps不是一种时尚;相反,它是成功的组织今天实现高质量软件产业化的方式,并将成为明天和未来几年的新基准。

 基础设施代码

     曾几何时,开发人员处理软件,而运营团队则处理硬件和在该硬件上运行的操作系统。现在硬件在云中,从某种意义上说,一切都是软件。 DevOps运动为操作带来了软件开发技能:工具和工作流程,用于快速,灵活,协作地构建复杂系统。与DevOps密不可分的是基础设施作为代码的概念。云计算基础设施可以由软件自动配置,而不是对计算机和交换机进行物理架设和布线。操作工程师已经成为编写自动化云的软件的人,而不是手动部署和升级硬件。交通不仅仅是单向的。开发人员正在向运营团队学习如何预测分布式,基于云的系统中固有的故障和问题,如何减轻其后果,以及如何设计降级优雅且安全性低的软件。

     云的大规模扩展以及DevOps运动的以代码为中心的协作性质已将运营转变为软件问题。 与此同时,他们也将软件转变为操作问题,所有这些都引发了以下问题:如何在不同服务器架构和操作系统的大型,多样化网络中部署和升级软件?如何使用基本标准化的组件以可靠且可重现的方式部署到分布式环境?

从而进入第三次革命:容器。

 

 

posted @ 2019-05-18 18:40  mashaoli  阅读(217)  评论(0编辑  收藏  举报