DevOps is dirty work - Dream in One-Click

真是一晃就到年底,年初许的梦想实现了吗?这么残忍的问题还是不要知道答案了吧:)

这恍若隔世的大半年,不仅没有承接着上篇继续聊Continuous Delivery (CD),反而疑似荒废。然而,梦想还是在的,即使工作再繁忙,至少老板也会这样时不时地提醒我。还记得去年的年末开始学着用Stackstorm做Orchestration,当时满心觉得One-Click已经不再遥远。而时至今日,事实也差一点证明了这一点。还差的那一点便在于过于乐观地估计了对改造已有项目部署方式的难度。做过Code Refectory的同行们一定有过这种心情,梦想明明就在眼前,却总是隔着一个Regression的距离。即使超过3个月的代码也偶尔会赋予挫败感,何况我们面对的是虚年6岁的壮年项目。虽然还是遗憾地遥望着One-Click,但是大概也就差着一片雾霾的距离,而一路到此,不虚此行。

安迪·格鲁夫在《只有偏执狂才能生存》中说过,“为了成功地穿越死亡之谷,第一件事就是设想出公司到达彼岸后的形象。”所以梦想要有,还要具体,不然谁知道实现了没有。One-Click的形象是什么?一千个人眼里有一千个哈姆雷特。我就聊聊我眼里的One-Click为何物。

在我的梦想中,One-Click的终极形象包括两个方面,

1. DevOps工程师可通过一条指令完成从建虚拟机到部署服务并使其在产线运行,这里自然也包括Scale up和Scale down。

2. 当工程师将代码逻辑push到CI系统之后,在没有任何人工特殊干预的情况下,代码逻辑自动部署到产线并运行服务。

关于第一个形象,如今IAAS的出现已经帮忙解决了关于自动建立定制化的虚拟机(VM)这道难题,从而令一个SAAS/PAAS运营者头疼的问题已经从怎么建虚拟机进化为该选谁的IAAS服务好。岔开一句,目前AWS的风头正劲,业界对它的肯定已经几乎到了无以复加的地步。于是在这个形象里,最难的其实是如何将需要部署的服务以及所需要涉及的整个拓扑结构(topology)根据应有的配置,该新建的新建,该连接的连接。头疼的事情当然有很多,比如:

a. 一边建VM,一边建拓扑,需要把控好逻辑顺序。

b. SSL所需要的证书随着VM的新建也需要根据拓扑新建和更新,并且需要实现自动化签名。

c. 纷繁复杂的配置信息需要精确地推送到某一个VM上,这要求配置管理做到层次分明和自适应调整。(自适应调整是指配置信息应随着环境变量的变化而自我更新)

d. 应用本身应是无状态的,状态信息的存取可依赖外部服务,比如由PAAS层提供的cache服务。

以上当然不是全部麻烦,不然怎么称得上梦想。对于很多问题,业界相应的solution每天都在更新,时不时便会听说某个问题已有了解。从个人经验以及道听途说的角度出发,有效的solution之一由 Jenkins (CI-CD管理) + Stackstorm (Orchestration) + OpenStack (IAAS) + Puppet with Hiera(部署应用及静态配置) + Consul(动态配置管理服务) 组合而成。当然这还不是整张蓝图的全部,毕竟这里只考虑了可行性,还没来得及考虑HA(High Availability)和性能。

关于第二个形象,参阅草图如下:

其实从CI的下游开始,第二个形象便与第一个形象多有类似了,不同点在于第二个形象更倾向于在正在运行的环境上操作。在What‘s the deal的结尾我说,“DevOps is dirty work where you have to be more than a Dev”。这第二个形象便是对“more than a Dev”的要求所在。如果没有对你所要部署的应用服务足够了解,CD将会是最让你手足无措的部分。比如,如果没有弄明白某个应用对另一个应用或服务的依赖是配置型的(即配或不配以及多种选配暂不影响HA)还是强制型的(即不配置便会挂),甚至有时这样的依赖关系只在应用的代码级别定义,那么一旦出现服务停摆,在老板眼皮底下于无数VM的云中查找root cause的心灵之伤可不是几顿加班餐就能挽回的。从solution的角度来说,在没有scale up或scale down的情况下,除了IAAS部分也许不是必要的,上面提到的组合中其他部分还是很管用的,即 Jenkins (CI-CD管理) + Stackstorm (Orchestration) + Puppet with Hiera(部署应用及静态配置) + Consul(动态配置管理服务)。但由于第二个形象的不同点在于已有运行环境,那么HA和部署速度应该被纳入必须考虑的因素。

HA一直是做云服务运维最核心的部分。如果某天早晨起床发现你的微信朋友圈刷不出来,对于广大互联网依赖征重症患者来说大概一整天都不会好过,更别提那些把大笔资金堆在上面的商家了。当HA出了问题,消费市场尚且生不如死,那些企业市场的用户也许会有动武的可能,压力大了吧:)梦想嘛,就是被逼出来的。合理的HA策略在One-Click的场景中应该经过反复推敲,从高稳定性向高效率逐步推进。A-B和Rolling Upgrade是目前相对比较稳妥且不失效率的方式。A-B也是灰度发布的一种方式,即让部分用户继续使用A版本,同时让另外部分用户先使用B版本,然后适时决定是否所有应用都升级到B版本还是需要回滚到A版本。如此以来,加上合理的回滚策略,监控策略以及数据分析策略便可在One-Click过程中保证HA。Rolling Upgrade是指通过添加新的节点安装新版本,当达到适当规模的时候将老版本的节点去除,期间允许短期的新老版本共存。A-B和Rolling Upagrade两者是理念和方法的结合。Rolling Upgrade可通过新老节点的控制得以实现A-B方式,但这就需要IAAS的支持。当然这不是唯一的方法,对于一些对Capacity要求不明显的应用来说,在已有节点上做分批处理也能达到A-B的目的。不难发现,One-Click的第二种形象中最麻烦的便是HA,也是这个美好梦想中最有趣的部分。

关于One-Click的部署速度,每个人都会有不同的观点吧。对于有些SAAS服务来说,快速上线和bug fix是铁律,而对于一些PAAS服务则稳定大于速度。但不管如何,从理论上来说,One-Click在效率上必须比N-Click来的高。各种保障策略的联动机制将需要发挥作用,比如如何verify应用服务已正常运行,如何在一些条件下触发下一步流水线,如何对出错快速恢复并从断点继续任务等等。如今业界的监控工具和智能分析工具已是五花八门了,只要API好用,都可以在One-Click的场景中贡献力量。当然,时下炒得火热的AI概念自然适用于One-Click,这会使得梦想更丰满更华丽。

梦想描述至此,是不是勾起实现的冲动了:)大家都喜欢一杯咖啡一个Pad就把工作搞定,我一直认为懒人的梦想是最有价值的。然而如今的云端,世道沧桑,列强割据,风云变幻,每一分每一秒都有旧梦想破灭和新梦想实现。DevOps世界随着云端的格局更迭也是日新月异,One-Click的作用或许也是解放一部分重复劳动的时间去呼吸新世界的新鲜空气。眼前的那一段雾霾的距离应很快会缩短,我已经开始憧憬下一个梦想了,或许真的是脑电波替代Click,叫做One-Mind?好了,换一杯咖啡,Carry on!

时间: 2024-10-12 19:13:25

DevOps is dirty work - Dream in One-Click的相关文章

DevOps is dirty work - What's the deal

什么是DevOps?终于又回到这个最初的问题. 第一次看到这个词的时候,还身陷于各种敏捷概念轰炸中.用“身陷”这个词其实并不准确,因为那个年代的我也是那些热情洋溢地无处不宣传敏捷的热血文艺青年中的一员.就像天生的一样,我从未接触或真正实践过瀑布模型.瀑布开发对我来说一直是书里的概念,各种流程背得滚瓜烂熟都是应付考试用的东西.打从第一脚踏入老东家N记,Scrum Master骄傲地带着我各楼层领略五颜六色的进度小纸条和大小各异的手写燃尽图的那一刻开始,我就被敏捷浸淫而无法自拔.N记也不愧为国内敏捷

2019 DevOps 技术指南

原文链接:https://hackernoon.com/the-2018-devops-roadmap-31588d8670cb 原文作者:javinpaul 翻译君:CODING?戴维奥普斯 写在前面 我们在推进国内研发团队 DevOps 落地的过程中,发现不少研发组织在积极寻求 DevOps 技能方面的提升.今天翻译的这篇深受欢迎的 DevOps 技术雷达来自一位国外的 Java 博主,他也是一位非常热爱学习的开发者,接下来让我们马上进入到正文. DevOps 技术指南 DevOps 目前非

《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》

DevOps实践:驭DevOps之力强化技术栈并优化IT运行 主旨 这本书并非坐而论道,而是介绍了DevOps全流程中的许多实践,以及相应工具的运用.虽然随着时代的推移,工具将来可能会过时,但是这些实践的应用和相应的方法是不会过时的,所以对于其中各种实践必要性和相关方法的讲解,是特别值得注意的.作者认为一切皆代码,所以各个章节是围绕代码的生命周期展开的,提到了这些环节的实践: 管理代码 构建代码 测试代码 部署代码 监控代码 DevOps和持续交付简介 DevOps的由来 Patrick Deb

Click Models for Web Search(2) - Parameter Estimation

在Click Model中进行参数预估的方法有两种:最大似然(MLE)和期望最大(EM).至于每个click model使用哪种参数预估的方法取决于此model中的随机变量的特性.如果model中的随机变量都是可以observed,那么无疑使用MLE,而如果model中含有某些hidden variables,则应该使用EM算法. 1. THE MLE ALGORITHM 似然函数为: 则需要预估的参数的在似然函数最大时候的值为: 1)MLE FOR THE RCM AND CTR MODELS

Click Models for Web Search(1) - Basic Click Models

这篇文章主要是介绍一些基本的click model,这些不同的click model对用户与搜索结果页的交互行为进行不同的假设. 为了定义一个model,我们需要描述出observed variables,hidden variables,以及它们之间的关联,以及它们对model parameters的依赖关系.当我们获取了model parameters之后,我们便可以进行CTR 预估,或者计算数据的最大似然估计. 1. RANDOM CLICK MODEL (RCM) 这是最简单的一个mod

POJ2411(Mondriaan's Dream)

题目链接:传送门 题目大意:用1*2大小的砖块去铺满n*m大小的地面,有多少种方案 题目思路:因为1<=n,m<=11,并且砖块是1*2,故可以用二进制思想,也就是状态压缩DP,其中矩阵中为0的元素表示当前位置竖着放一块砖,而连着 两个1表示横着放一块砖(状态压缩真的很奇妙) #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <

dirty memory

关于各种内存的解释,来源于stackoverflow Wired : This refers to kernel code and such. Memory that should not   ever be moved out of the RAM. Also know as resident memory. Shared : Memory that is shared between two or more processes. Both   processes would show thi

为 DevOps 提供专业级、全栈式性能监控服务

相信大家都清楚,深谙 DevOps 的公司做起事情来更加高效.相较于竞争对手而言,他们的代码重用率更高,错误率更低.但是,成功取决于多种因素,其中就包括:是否能够准确监控应用在不同环境下(可能是多语言环境)的所有变化.所以,运维团队还需要一个支持连续开发与测试的软件分析方案,同时加强与其他部门的协作.沟通. 国内应用性能管理领军企业 OneAPM 提供的数据既能检测和监控开发团队提交的新性能,也能确保运维的稳定性.作为一家 DevOps 为导向的公司,OneAPM 完全理解软件团队所面临的诸多挑

poj 2411 Mondriaan&#39;s Dream(状压DP)

Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 12232   Accepted: 7142 Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series