对于想了解当我们在抢红包时,微信运维在做什么?的读者,本文将是一篇不可错过的文章,我们将详细介绍当我们在抢红包时,微信运维在做什么呢,并且为您提供关于"当我们在说DevOps/SRE/PE/NoOps
对于想了解当我们在抢红包时,微信运维在做什么?的读者,本文将是一篇不可错过的文章,我们将详细介绍当我们在抢红包时,微信运维在做什么呢,并且为您提供关于"当我们在说 DevOps/SRE/PE/NoOps 的时,我们在说什么"?、0. 当我们谈设计时,我们在谈什么、2015最全抢红包攻略(支付宝 微信 QQ) 2015抢红包时间表一览、2016微信过年什么时候开抢红包雨?微信红包雨抢红包攻略的有价值信息。
本文目录一览:- 当我们在抢红包时,微信运维在做什么?(当我们在抢红包时,微信运维在做什么呢)
- "当我们在说 DevOps/SRE/PE/NoOps 的时,我们在说什么"?
- 0. 当我们谈设计时,我们在谈什么
- 2015最全抢红包攻略(支付宝 微信 QQ) 2015抢红包时间表一览
- 2016微信过年什么时候开抢红包雨?微信红包雨抢红包攻略
当我们在抢红包时,微信运维在做什么?(当我们在抢红包时,微信运维在做什么呢)

作者简介
周汤
腾讯 微信支付运维负责人
就职于腾讯 - 微信事业群 - 技术架构部 - 运维中心。2009 年加入腾讯,先后负责过拍拍、网购、易迅、充值、团购等业务的运维工作。2014 年转入微信,负责微信支付业务的运维工作。
一、背景
这图是 2016 年互联网女皇发布的互联网报告里的截图,左图是讲用户每月支付的频率,可以看到微信支付排在最前面的,大概每月支付超过 50 次,排在第二的是全美借记卡的支付次数。
微信支付单月支付次数大于全美借记卡 + 信用卡的次数总和,在这数据背后反应出移动支付时代的全面到来,同时也可以看出我们国内的移动支付,无论是产品、用户量、支付频率上,个人认为都是领先全球的。
互联网其他一些产品比如我们所知道的搜索、电商、即时通讯都是国外诞生,国内再做本地化后发展起来的,但是移动支付在国内的发展应该是一直领先国外的。
右图展示的是 2016 年农历新年,微信支付的支付金额达到 80 亿人民币,看金额可能不够直观,我们看一下具体的背后技术层面的数据。
从监控上统计到的数据是支付峰值达到每秒 15 万次,拆红包大概是每秒 50 万次,这个业务量是非常巨大的,我个人认为这应该是当前全球最大的支付和结算系统。
我们看一下背后是什么样的环境来支撑这样的业务。传统支付很多都是直接上小型机 + 商业数据库;而我们直接采用 PC+MySQL 这种最互联网的做法,PC 硬件的故障率比较高,从我们经验来看大概有 2% 左右;数据库软件我们也是使用的开源版本,少量的定制,没有购买专门的技术支持服务;排障、优化都是靠自己团队解决。
规模大概如下,设备一千多台,数据库实例一千多个,数据库业务 500 多个,但是我们 DBA 只有 3 位同学,所以压力和挑战还是非常大的。
这个背景下争取做到的几个目标:
第一个是高性能,我们现在日常的支付量大概每秒几万,传到数据库层面 TPS 应该是百万量级,在这样的环境下达到这个性能还是不容易的;
第二个是高可靠,产品业务特性是和金融基本上类似的,数据一致性不能有任何差错,有相当多的场景可能会导致不一致,比如红包拆了多次、重复支付、支付状态不准确等,最直接的后果就是导致平台赔付;
第三个是高可用,线下的商家、医院、服务场所、用户对支付可用性是非常敏感的,如果用户发一个微信、微博消息出现失败,客户端是比较容易做重试和延时处理,用户很少感知到,即使失败绝大部分可能忍忍就过去了,但是支付一旦出现失败,或者是用户、商户侧看到的订单状态不一致,我们基本马上就收到投诉,这个故障投诉比跟其他业务相比是天壤差别。
最后是安全方面,做为一个支付平台,这里有很多敏感数据,怎么保证不会被内部人员或者外部人员非法的查询和篡改,这个对我们也是一个很大的挑战。
总结挑战
PC 硬件 + PC 开源软件平台下,每分钟百万支付、千万流水的业务量;业务高速成长,变更和迭代也非常频率,这也是和传统银行差别很大的地方;任何软硬件故障、运维不当都可能是百万级别的损失;所以我们 DBA 压力非常大,万一故障要赔钱可真心赔不起。
业界的《MySQL 从入门到删库跑路》这些书我们还是希望 DBA 尽量不去看。这样的背景下怎么避免 DBA 跑路,怎么把数据运维质量做的更好?这是我们今天要介绍的主题!
二、DBCMDB
DBCMDB 个人认为这是数据库运维管理的基石,CMDB 概念大家应该都比较熟悉,我认为应该是分三个层级:
基础 CMDB,这里存储的是 IDC 运维的基础配置,比如硬件、IP、物理位置等信息;
运维 CMDB,大部分做系统运维的同学都有接触和使用,里面存储的有程序、端口、任务、服务等等信息,这是逻辑层部署、扩容的关键配置;
数据库管理也应该有独立的 DBCMDB,存储业务相关的具体数据库实例、端口、库、表这样的信息。
只有在这些信息的基础上才可以开展 DB 的运维管理工作。
为什么做 DBCMDB?
初创公司可能没有这样的烦恼,但是业务成长之后肯定有这样的问题,业务非常多,配置非常复杂,像我们刚才前面讲的上千台服务器,各种部署,比如一个业务分了多组,可能有的为了优化一台机器上运行多个实例。
一个实例上有很多库,各个业务分布分表又不一样,比如有的分 1000 表,有的分 1024 表,命名规则也不一样,这么复杂的配置关系,靠人工管理肯定是不足的。这种情况下,最基本的一个数据库表结构变更需求,你要找到准确的机器、实例、库、表都是个困难的事情。
除此外,还有些主动或故障带来的部署调整、业务调整,机器的具体用途都在动态的变化,这种情况下怎么保证调整之后,与之配套的变更、监控、备份是能同步更新?
怎么做 DBCMDB?
首先需要存储一些基本核心配置,比如 IP、Port、业务、责任人,分表数量、主从关系等等。在这些基本信息之上还要提供友好、完备的 Web 界面管理工具。
下面是我们系统的一些简单的截图,左边是大概的关系模型,中间是我们的某个业务对立物理部署的树状型,右边是某个业务库表的情况。
DBCMDB 到底能做什么?
有了 DBCMDB 以后,我们就可以基于这个配置数据,建设整套数据库运维工具和体系,后面给大家分享的能力也是基本此,比如可以建设自动化部署工具、变更、监控…,在线业务系统的 DB 连接配置,也是从这里获取的。
DB 变更
变更类型非常多,比如切换、机器挂了或者是扩容之类的。移动支付也是互联网产品,迭代非常快,每天有几十上百个变更;这在传统 IT 行业上是不可能发生的,银行可能每周左右变更一次,我们是每天都是不停的变更,那怎么在这种快速迭代、不断变更的场景下做到类似银行的稳定性和可用性,这对我们来说是很大的挑战。
早期 DB 变更
早期我们人力很紧张的时候,都是开发人员直接连数据库进行变更的,相信很多初创公司也是这样场景,这里主要的问题。
一是专业度是不够的,没有数据库开发规范或是规范没法落地,每个开发人员按他自己的思路、做法来变更数据库,一些用法方面也不够专业,常常用学校的那套数据库设计理论来做产品,管理极为困难。
二是由于变更导致的故障频发,比如针对一些海量数据的表加个索引,可能就把线上系统搞挂了,或是 SQL 不严谨,经常出现数据误删误改的情况,非常头痛。
中期 DB 变更
后来我们做了个数据库需求系统,所有变更必须经过 DBA 审批后才可以执行,经过 DBA 后的变更在专业性、稳定性得到了明显提升,但是需求提上来后, DBA 还是需要花很多时间和精力去评估需求,沟通成本非常高,同时这阶段 DBA 也还是手动执行,效率是非常低下,不少变更需求会在凌晨进行,DBA 同学都非常辛苦。
现在的 DB 变更
现在我们把这工具做成 DB 变更系统,首先所有变更开发自助提单,提单过程是基于前面讲的 DBCMDB,从 CMDB 选出所属业务,库表,物理部署这些信息,以及表的数据量级等信息,再给出一个 SQL 语句,最终执行还是 DBA 来做,DBA 会评估这个 SQL 是否合理,并且制定一个执行计划。
简单介绍一下我们执行计划上的一些能力,因为我们现在业务量非常大,白天业务高峰期变更,DB 性能影响还是比较大,DB 访问上升几十毫秒就有一堆告警和反馈了。
所以大多变更都在业务低峰期实施,我们现在基本做到了凌晨无人执守的数据库变更,另外变更时我们也能精确控制灰度、并发度,以及执行间隔,借助这些手段,基本保障了变更对数据库性能的影响,变更这块的质量、效率也得到了一个比较好的提升。
三、DB 监控
早期监控
监控是 DBA 的眼睛,没有监控数据的话我们无法掌握数据库的健康状况。最早我们是使用 Nagios、Zabbix 这些工具来实现,确实也可以解决很多问题,监控点是比较全面的,基本上想到的都有,功能也比较完备。
但是在管理上挑战就比较大,我们业务比较多,比如上千个实例,经常加、减配置,使用这些工具配置漏了很难发现也容易出故障,比如今天做数据便变更,但是忘记加监控,哪天 DB 性能有问题是完全不知情的。
另外就是缺少监控告警后的事件跟进处理能力,告警出来后有没有跟进处理,处理进度如何都是不清晰的,历史上我们曾经出现过一个比较严重的事故。
我们有一批 DB 业务量涨的非常快,磁盘快满已经告警出来,然后 DBA 同学赶紧处理了,但是遗漏处理了一组,他自己没有发现其他人也没有发现,监控系统也没有发现因为还是在故障中所以没有持续告警出来,结果过两三天之后磁盘直接爆掉了。
还有就是我个人认为这些国外的开源的产品,在用户体验和 UI 方面,国人使用起来还是不够顺畅的。
现在的 BD 监控
我们现在自建了整个数据库监控系统,从底层的 Agent 到存储、告警,全部自己开发。重构的设计也是基于前面讲的 DBCMDB,管理有了很多的优化,后续的部署调整只需要对 DBCMDB 更新,监控系统自动适配,基本不需要频繁的操作和修改监控配置。
告警策略上也做了很多优化,不再针对单个 IP 级别去配置,而是配置一些策略模板,再将模板应用到业务上;监控数据采集上来后,通过一系列的换算找到某个 DB 应用哪些告警策略,极大的简化了策略的配置管理。
还有前面讲到完备的事件处理流程,就是针对前面说的类似事故,告警后会有持续的事件跟进,所有告警、预警分级处理。
告警产生后会由事件系统跟踪确保异常能够及时无误的得到处理,比如五星级告警,我们要求 DBA 需要在 5 分钟内响应,30 分钟内处理完成,如果处理超时就会有自动上升和通知到更多的人关注。
四、数据安全
整体安全
任何一家公司的数据安全都是企业的生命,数据泄露或者丢失对任何企业、业务带来影响都是不可估量的。
大概介绍一下我们整体做的事情:首先主机层面,我们数据库只能从专门跳板机要登陆,非授权人员无法登录服务器,DBA 所有的操作都有记录和审计,如果有风险的操作会预警出来。
监控方面,一般 MySQL 攻击都会尝试登录,攻击者都会扫描猜测密码,我们可以在这个阶段就能有效的发现,现在特别监控非法连接,如果账号、密码错误的登录,不在授权管理范围之内我们马上告警出来,就可以跟进分析真的是业务用错了,还是有人在攻击。
授权方面我们基本上是最小化按需授权,非常精细度控制,这个后面会给大家介绍。还有业务上需要针对一些关键数据作保护,比如账户余额这个字段,如果内部人员想给自己加钱,是否直接一条 update 语句,就能从一百块变成一百万呢?
程序上、技术上需要防止内部人员干这些事情,就要有防篡改和校验的能力。此外还有一些安全扫描和开发规范,及时的发现和规避一些类似 SQL 注入这样的高风险漏洞。
还有备份,脱库大部分是来自于内部的,在职期间把数据库备份拉下来存硬盘里,离职后往业界一放这个影响非常大的,那怎么防止这个事情?
这个很难绝对防,只能不断加固,我们现在所有备份都是加密的。通常备份存储有很多人可以接触得到,加密备份就是防止其他人员、业务人员拿走。再就是规范上的从管理、实践上约束这些人不能尝试做这些事情,技术只是手段。
授权系统
再看一下授权,以前授权是开发提需求,DBA 逐 IP 手动执行。主要问题有效率低,每次上线、扩容都需要操作。权限容易遗漏、容易出错,扩容时提供的密码与原密码不同,只管授权,没有回收,权限被放大。
我们现在是建设授权系统来管理,思路是这样的:基于业务模块加业务 DB 来管理权限,系统自动根据 CMDB 换成 IP 来授权,部署调整无须手动变更权限。另外与发布系统联动,废弃权限做到了自动回收,基本解决了我们前面讲到的一些问题。
五、高可用性
数据库高可用性
通常会分两个层级来做,一个是数据库层,一个是业务层。先看一下数据库怎么做。这是我们的主从自动切换工具,我们会在每个 MySQL 前面运行一个 HAProxy 来做 TCP 转发,将写请求转到真正的 Master 上面,在每台 DB 服务器上都会运行一个 Agent 来监控 Master 的存活状况。
如果所有 Agent 都判断 Master 挂了,我们就会通过 etcd 存储来决策切换,由 Agent 来负责调整主从关系以及 TCP 转发设置;这个工具非常专注,只做快速自动切换,完全兼容现有部署、运维方式,升级回退也相当容易;同时具备三机读写、三园区容灾等特性;稳定和可靠,有效解决这种单机硬件故障的问题。
另外我们目前其它团队也在开发 PhxSQL 组件,这个比前面的方案改动更大一些,会在 SQL 同步的中间加一个强大的、完全一致的队列解决数据一致性的问题,所以它的主要特点是强一致和快速切换。
业务高可用性
业务上怎么应对 DB 故障的问题,光有数据层防范还是不够的,我们要求无论 DB 发生什么事情,业务层都要能活下去,不能完全信任 DB,DB 也有很多不可预期的事情,DBA 也控制不了。
所以我们的研发团队推出了一个跳单的方案,这个只适用于 ID 内部生成的,且不需要连续的场景;当前我们的订单库就是这样处理的,首先数据库分成很多组,比如几十组,每组都是可以读写的。
如果某组 DB 故障,读写失败后,业务层会把这个状态信息反馈到上面,上层在分配 ID 的时候可以根据状态做调配,自动跳过故障号段,这个好处是可以快速的让业务继续跑下去,新的支付订单完全不受影响,而老的订单读写的可用性对支付体验影响较小。
六、Golang
简单介绍一下 Golang,我个人认为非常不错推荐给大家。以下是它的一些主要特性:
首先是来自谷歌,由一堆大神级人物开发的;
语法简洁、清晰、高效,性能非常强大,跨平台,基本能做到同样一份代码能跑在多个平台上;
我们之前的开发语言绝大多数是单机单核时代的产物,针对多核的使用,大部分是通过多进程或是操作系统的多线程之类的能力来做的,但是 Golang 语言本身就是在多核的前提下设计和实现的,对高并发和分布式都有很好的优化;
还有自动垃圾回收,和 JAVA 的功能类似,目前国内最大的 C++ 开发团队应该是在腾讯,开发人员的水平也是参差不齐的,在内存泄漏方面还是很难做到杜绝,所以还是能看到程序运行多少次后通过重启来规避内存泄露的现象;
有这个 GC 能力后,开发同学就相当轻松了,基本不需要管理内存分配和回收;还有强类型、静态编译,内制高级类型,还有本地程序,部署非常简单,这个是我最喜欢的地方,没有任何依赖;堪称互联网语言,所以里面内置了大量网络通信、加密、解压缩、数据库的类库,基本语言内部把这个活给干了。
所以我个人对它的总结就是:拥有 C/C++ 级别的性能、稳定性、部署便捷性,以及拥有 3P、Java 等语言的易用性和高级语言特性。
对于使用场景,应该适用于绝大数分布式后台型的业务、可以用 Java 的地方就可以用它,但是它的性能和易用性我个人觉得比 JAVA 优秀。
还有一种特别场景,假设你是一个软件开发厂商,你想保护自己的代码不被反编译出来,目前来看用 3P,Java 之类的是比较困难的,有相当多的工具可以反编译出源码。
用 C/C++ 可以很容易做到,但是开发效率比较低下,对开发人员要求也比较高,招人也不容易,用 Golang 就非常有优势了,简单、高性能,还能防止反编译。
Golang 当前发展也比较快,业界也有相当多的一些软件在使用,我们可以看到的有 Docker、Etcd、Nsq,一些新的项目慢慢倾向于用它开发。我的团队也有比较多尝试,比如外网质量监控,DB 监控,DB 快速切换都是用 Golang 开发的。
Q & A
提问:刚才你讲的 Golang 跨平台比 Java 好,到底是怎么实现的?
周汤:两者的跨平台实现有些区别,Java 是编译成中间字节码,再由 Java 虚拟机来解释执行,不同平台同的 Java 虚拟机实现是不一样的;而 Golang 是直接编译成目标平台的机器码;个人认为在部署角度上,Golang 更方便一些;
提问:刚才你说的有一个问题,经常有很多业务创建一些账号权限之后,业务下线很多还有人用,这方面有什么好的经验和工具吗?
周汤:这个就是权限管理的深度问题,不管是 MySQL 还是网络策略,很多公司和业务都是只管授权,没有回收的。我们的做法是授权的时候不是 IP 粒度的,而是业务粒度的,部署有调整的时候会重新计算权限并进行回收;
提问:是业务下线或者迁移账号就清除了?
周汤:部署系统发生调整后,会调用授权系统接口,如果上线做授权动作,下限就把权限清理。这些能力和工具都是需要自己建设的,目前还没有一些通用的工具可以用,但这思路可以借鉴;
提问:刚才你最后讲的,用 Golang 程序开发语言,用什么样 IDE,Window 有 Window 的程序, 他们不同环境下,是怎么样做的?
周汤: Golang 语言本身比较简单,代码的组织结构和目录结构都比较清晰,你可以用所有的文本编辑器来开发,但效率相对低一些,目前有相当多的 IDE 已经支持 Golang 的开发,这个在网上很容易搜到,比如 Vim, Eclipse, Visual Studio;另外也有一个专门给 Golang 定制的 IDE 叫 LiteIDE 比较简单易用,我主要用这个,这个 IDE 在 Windows 和 Linux 都可以使用。
Golang 同一份代码,可以在不同的平台编译出对应平台的二进制执行程序,甚至可以跨平台的编译。基本是一个命令就可以搞定。
近期好文
《360 网络运维自动化演进之路》
《广发银行:Docker 适配传统运维的那些事》
《全链路压测军演系统 — ForceBot》
还有更多 BAT 的资深运维汇集 GOPS・深圳站
腾讯游戏蓝鲸产品总监、腾讯 SNG 运维专家、阿里游戏运维负责人、百度敏捷教练...... 不容错过的阵容和演讲,带你领略运维前沿技术。
GOPS2017・深圳站
GOPS 在 2016 年从深圳出发,当时门票提前几周收盘,一年之后承载着运维人的期望,GOPS 再次来到了深圳。
会议地点:南山区圣淘沙酒店(翡翠店)
会议时间:2017 年 4 月 21 日 - 22 日
点击 “阅读原文” 抢早鸟价哦~
本文分享自微信公众号 - DB 宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
"当我们在说 DevOps/SRE/PE/NoOps 的时,我们在说什么"?
本文作者:柯浩
GitHub 地址: http://github.com/KeHaohaoke
Note: 以下观点不代表本人就职的公司。系作者个人观点。这些观点和作者的本人工作经历有关,可能不够面面俱到。
从 Devops 的由来说起
近些年,DevOps 以及 SRE 的宣传和布道在国内越来越多,在各招聘平台也可以看到这些职位的招聘信息(出现具体公司信息的,隐去),以某招聘网站,地点选择北京,分别搜索 devops 和 sre 我们可以看到
devops 的职位
sre 的职位
几乎所有的互联网公司都在提出做 DevOps 建设(当然了,不然怎么会有这些职位的招聘呢:)
有的公司还有SRE团队
- 有的公司并没有区分 DevOps/SRE ,他们有所不同吗?
- DevOps 与 CICD 有什么关系呢?
- 稳定性建设/ SLA/SLO 究竟是谁来负责呢?
- 等等,好像还看到过PE工程师,还有 NoOps 的提出
- 安全的同学说,我们还有 DevSecOps
各位,有没有好奇过这些?没有的话,那现在你可以好奇一下,本文会一一道来。
这些职位到现在的发展,在有的招聘中已经和当时提出来的时候的概念不太一样了。
但这不要紧,我们可以先从这些职位的溯源来看他们提出来的时候的背景和当时的要求。
其实,DevOps 本身是一种技术文化,它本身旨在打破 Dev 和 Ops 之间的墙,让大家的沟通更顺畅。
DevOps 正式的被提出是在计算机届知名的出版公司 O''reilly 举办的 Velocity 大会上,在2008年的 Velocity 大会上,一场名为10+ Deploys per Day: Dev and Ops Cooperation at Flickr的演讲带来了 DevOps 的说法,我们现在还可以在 O''reilly 的网站上看到这个视频。
在这场演讲中,John Allspaw ( Flickr 的运维团队的总监)提出了要“构建快速发布软件的工具和文化”,注意,敲黑板,这里不仅有工具,还有文化。
此后,几乎所有谈到 DevOps 理念的都会提到这场演讲。Patrick 当时并没有在会议现场,但他后来观看了会议视频,深有同感,这为 DevOps 埋下了种子。
Patrick 随后在 Twitter 上表示,他也想参加 Velocity 大会,一些工程师回应他,你可以举办你自己的 Velocity 大会,我们都去参加。
时间又到了2009年,这一年,Patrick 通过 Twitter 召集了本年的社区版“ Velocity 大会”,并在比利时举行。由于是个会议,Patrick 得起个名字,他就想到了 Dev 和 Ops,由于会议举行了两天,于是会议被命名为 DevOps Days。
这也是 DevOps 领域著名的会议:DevOps Days 的第一次首秀,本次会议结束后,参会的工程师和管理人员们带着 Devops 的理念回到世界各地,逐渐的在全世界范围内推广和实践 DevOps 。
DevOps在做什么
Photo by PCB-TECH on https://pixabay.com
说了这么多,那么 DevOps 究竟要做什么?
正如最早提出 DevOps 的2008年的 Velocity 大会所说,DevOps 的关注点之一,在快速发布软件的工具和文化。
与此对应,并由此延伸的:持续集成,持续交付,持续部署,甚至发展了持续规划,持续测试等等。如果你想知道还有哪些持续什么,可以参看这篇文档微软关于DevOps的介绍
不管怎样,DevOps 的宗旨都在于尽可能多的,尽可能快的集成/部署/交付。
通过 CICD(持续集成和持续交付)流水线的设计,尽可能“快速失败”。所谓尽可能“快速失败”是为了让失败能尽早进行,尽早看到,尽快修改。
在这过程中,提倡测试尤其是自动化的测试更早的介入,所谓“测试左移”。
我们回忆一下(可能有的同学回忆不了,没经历过那个时代)手工运维的时代:在没有任何自动化设施的软件公司,怎么发布软件:研发按需求开发,在本地打包构建,把包给运维同学,运维同学把包上传到服务器,修改配置文件为生产环境配置,重启服务以生效。
哦,好吧,每次发布都是折磨人,尤其是随着节点规模的逐步的扩大,每操作一个节点,就要把上述操作全部进行一次,简直了,忍受不了。是的,那就需要 DevOps ,拒绝手工。
流水线,CICD
如上,想象一下没有流水线的场景,我们需要手工做CI持续集成:代码lint,单元测试,构建。然后再做发布验证。
如果不能自动化的做这些,那么,就不能尽可能多和尽可能快的持续交付价值。
在这个过程中,可以从几个纬度来考量 DevOps 带来的益处:
- 提高部署效率和频率
- 缩短部署前置修改时间
- 快速回滚(恢复)的速度
- 提高更高的失败率
这些为什么重要呢?从交付速度 角度来说,越快的加速交付,就能越快的去验证商业逻辑、试错、提高bug修复到客户看到效果等各种过程的速度。
敏捷与DevOps
不管是国内,还是国外,提到敏捷,就绕不开 DevOps 。
我们回忆一下上文提到的 Patrick 老哥,他在Agile 2008 大会上的演讲中谈到可以将 Scrum(敏捷一种实现)结合运维中。Patrick 在一个测试数据中心迁移的项目与开发和运维团队一起工作。在他的工作中,需要频繁往返于开发与运维之间。
而敏捷所强调的小步快跑,持续交付等理念正需要 DevOps 在技术上的有效支持才能落地,否则,敏捷的这些环节就是空中楼阁。
同时,DevOps 也借鉴了 Scrum 的理念,在 Dev 的用户故事之外提出了测试故事和运维故事。
并且在继承了 Agile 的理念的同时,更强调了软件开发生命周期的理念(SDLC),强调了并不是编码和测试完成就是软件开发的结束。还需要运维的管控。
而对于传统的运维流程 ITIL 。DevOps 则是有选择的吸收,要有流程,但不是受制于流程,且流程的变更应该是自动化工具实现的推动和数据的流转,而不是依赖人工。
DevOps 文化
打破部门墙,树立 Ownership
这是在务虚吗?不完全是。
DevOps 的确强调文化。我们又要提到 Patrick 老哥,前文已述,他的工作要频繁的往返于开发和运维之间。
而这两个团队,其实在 DevOps 理念广泛的被接受之前,两个团队是割裂的:Dev 更喜欢尽快验证上线,而 OPS 团队则希望尽可能少的变更,毕竟,越少的变更,越不容易出错。
而且,这两个团队的技术栈也有所不同,比如在早点的时候,国内一些公司,以本文作者经历过的一些不同的100多人的技术团队到几百人的技术团队到2000人左右的技术团队:一些传统的运维不会开发,只写业务逻辑的开发不懂系统层/网络层的技术,这会导致两个团队的沟通成本比较高,除此之外,由于 Dev 如果只关注写业务逻辑,不知道生产环境的整体架构全貌,生产环境出了问题,需要找 OPS 了解生产环境,排查时间也会变长。
DevOps 正是要打破这种部门墙,让 Dev 和 OPS 有效的沟通:
- 从技术栈来说:OPS 需要学习开发的知识,以便可以开发 DevOps 工具和平台,高效的完成 DevOps 工作。Dev 也需要了解系统层面、网络层面的知识,去了解生产环境的架构,以更清楚的知道产品在技术层面的全貌,有利于对问题的分析和排查。
- 从Ownership的角度来说,都要有主人翁精神,对自己负责的产品有 Ownership 意识,而Ownership并不是务虚的,而是要通过 DevOps 的技术建设,让研发能够参与到发布之中。而在自动化建设不好的环境下,甚至需要专人来进行发布,Dev 也不知道如何进行 CICD,这里,建议不要用权限控制来说事,权限控制可以通过技术来实现,给予必要且刚好够用的权限,让 Dev 能够自己发布自己的产品,解放 OPS 的人力不是去专门的做发布点击工程师:)
关于 DevOps 不仅仅是工具,更应该是关于有效协作和沟通的文化,可以参看scrum.org的一段描述:
DevOps is more about Organisation Culture than about Tools
In fact, as we have learned tools and automation is only one-third of DevOps (I would say it is even less). In overall, DevOps is about Collaboration & Collective Ownership, Focus on the flow of value delivery and Learning and experimentation culture. But sadly, many tooling vendors position DevOps as tools and process for delivery pipeline (the vendors that I''ve witnessed in my market are more focused on tools but your experience may be different to mine). This will get the management excited because many managers whom I''ve met think that after buying and installing the "DevOps" tools without changing their organisation will make their company instantly agile. This is like putting the cart in front of the horse.
仅仅以为引入了自动化工具就是 DevOps 是不够的,还需要协作,关注价值传递。
康威定律与组织建设
康威定律: 设计系统的组织,其产生的设计和架构等价于组织间的沟通结构。
组织架构和技术架构是有相应的映射关系的,有什么样子的组织,就有什么样的技术架构。
严格讲究职能边界的企业是很难有效的推广微服务和 DevOps 的。
在一个企业发展初期,工程师可能都是多面手,可以完成开发和运维等诸多工作,这种情形下,沟通是高效的。随着企业的发展, 有了独立的 PM、QA、DEV、OPS 等部门,不同的团队之间就会出现耦合和依赖,这会降低沟通效率和提高部署的成本:一个产品的上线要经过诸多沟通甚至人工的审批。
微服务的提出,要求团队之间解耦,团队要能在技术上自治,可以自己进行开发和运维,通过系统调用或者接口调用完成自服务和自运维。
我们如果朝着减少组织各个团队之间不必要的沟通和协同(注意,不是不要沟通和协同,而是减少不必要的沟通和协同)的时候,组织的自运行效率就会上升。
反之,各个团队之间通过比如PM来协调资源和沟通,就难以形成微服务的技术架构,而是会形成分层的技术架构。
这里,要特别指出,让运维团队参与研发日常活动,比如每日站会,也会让运维更好的理解研发工作和分享团队内部信息,对齐目标。
PS:安全的同学吸收 DevOps 的理念,强调 Dev/Sec/Ops 三者的协作,并把 DevOps 的方法融入到安全的工作中,就是DevSecOps了。
说了这么多,DevOps只关注交付吗
好了,这个标题是故意的,是为了引出 SRE。
交付之后呢?就不管了吗?
一个应用上线之后,优化它,持续迭代(持续迭代还是偏 Dev 和 CICD ),还有,还要持续监控它,最好能提前发现故障的迹象,及早的消除故障,甚至消除故障出现的可能。
当遇到流量压力,应该可以快速的水平扩容,扩容是无感知的。
应当关注 SLO(service-level object),并有合理的 SLA(service-level agreement)。
而这些是 DevOps 应该关注的吗?其实这个说法不一,以作者的个人经历认为:DevOps 既然是持续的关注交付价值和价值的流动,那么价值的流动并没有到交付就结束。而监控/无感知扩容/服务质量保证都是 DevOps 可以关注的。不应该局限于具体的技术名词的限制。但在实际工作中,可以有专注的领域,毕竟,人的精力和专注度是有限的。
SRE & SRE vs DevOps
sre 是由 google 提出的:Site Reliability Engineer (网站可靠性工程师)。
在 google 的说法里,sre 是 devops 的落地。
SRE 的首要任务是保证 SLA, 重要的是 SRE 的工作出发是以开发人员扮演的角色,SRE 都是从研发来的,而不是传统的运维。这是 SRE 和传统运维最大的不同。
SRE 是替代原有IT操作的一种方式,强调以自动化,编写工具的方法解决,即 treat [IT] operations as if it’s a software problem。
SRE 关注以下几个方面
- 容量规划
- 冗余和容错
- 流量过载
- 负载均衡
- 监控
- 救火(没有看错)
SRE 强调尽可能自动化的以编程的方式完成这些工作,但必须承认,有些工作可能是不好自动化的,比如Troubleshooting。
在 Google 的 SRE 体系中,SRE 工程师将花费大约一半的时间来开发新的工具和服务,这些工具的一部分用于自动化一些手动任务,而其他部分用于来不断填补和修复整个 SRE 体系内部的其他系统。
对 Google 的 SRE 理念和他们的实践感兴趣的,可以阅读[SRE: Google 运维解密],英文版是[Site Reliability Engineering: How Google Runs Production Systems]。
这是 GoogleSRE 团队编写的书籍,全书从 SRE 工作的各个方面讲述了 SRE 在 Google 是如何落地实践的。
同时,也可以看到,对于流量过载和容量规划的需要,以及系统应对流量过载的做法:快速无感知的水平扩容,这就需要云原生的技术,k8s 容器化、自动化的扩容,加入服务。
SRE 对于监控系统的需要,在传统的监控系统的基础上发展了可观测性的理念。
SRE 是 DevOps 的落地,SRE 更偏向技术实践,而 DevOps 还有组织文化和流程等内容。
但两者不是对立的,恰恰相反,SRE 工作就是开发和运维有效的结合,正是 DevOps 理念非常好的实践。
PE/NoOps/AIOps
PE就是应用运维工程师,是国内很多公司的运维的实际角色。和 SRE(真正的 SRE)的不同是,PE 偏向只是应用运维。
NoOps 是一些公司提出的理念,本质还是在于消除手工运维,而不是消除运维,而是要通过解放原来的手工或者低效的沟通,解放原来运维做的大量的重复的、手工的比如仅仅是权限原因,有专职的发布运维;DBA 天天在复制粘贴开发提交的 SQL 等工作。
而通过 DevOps/SRE 的建设,让运维和 DBA 去干真正有价值的事情,比如关注中间件的原理和大规模实践,成为有专长和深耕的技术人,并在这些方面的运维有建树。
AIOps 是这几年才有的概念,但作者个人的经历结合看到的 DevOps 产品来说,由于实际生产环境的复杂多样性,目前还没有 AI 来做 OPS/DevOps/SRE,哪个公司敢让AI决定怎么 Troubleshooging ?至少目前还没有,当然,技术的发展是超出人们想象的,也许有一天,AIOps 或者是其他的某个XXOps 真的可以实现智能运维。
总结
国内很多公司,SRE 还停留在口头,参看很多招聘的 jd 就可以知道,其实只是应用运维换了个说法,包括一些 DevOps/运维开发的岗位需求也是,其实主要工作还是应用运维,即:部署/上线/监控/ TroubleShooting/On call。
其实,不管是 DevOps, 还是 SRE,都在强调自动化。在这一点上,我们可以不那么在意这么多上述名词的区别,毕竟落地到工作中,都是很实在的工作。
可以先从高效的自动化开始,建设自己的 DevOps/SRE 体系。
可以尝试向真正的 DevOps 或者 SRE 转变,可以做先吃螃蟹的人。
如果你还在为部署/配置/整合打通各种 Devops 工具费神,可以看看一个神奇的网站:DevStream官网的开源工具:DevStream,它会帮助你向真正的 DevOps 更进一步,在此基础上,你可以更好的学习和成长,以至于成为 google 定义的真正的 SRE。
0. 当我们谈设计时,我们在谈什么
功能、设计与审美
开始之前,我们先来看张图片:
多功能瑞士军刀 & MUJI 壁挂 CD 机
这两样都是享誉世界的产品:一件是多种实用工具集于一身的瑞士军刀;另一件则是秉持“less is more”简约范儿的 CD 机。这是两种完全不同的设计风格,却都是各自领域的佼佼者。
它们所应用的场景完全不同,也都有着众多的拥趸。相信大家都能欣赏这两种风格迥异的设计之美。这就是审美多元化带来的好处:设计的多样性也随之蓬勃发展。
但无论如何,一个真正的极简主义者不可能喜欢繁复的英式下午茶。如果极简主义者来设计茶具,想必北欧“性冷淡”风才是 ta 的白月光。
设计是一个取舍的过程
如上文所述,设计师有着自己的品味。当设计师因为某个原因设计产品的时候,他的理论、审美和经验,他设计的目的,都影响着最终的产品。比如,茶具与涡扇的设计,肯定是截然不同的。
设计师需要通过设计来发挥原料的优势、绕开原料的缺点,在最终成品上甚至能发现原料完全不具备的特性、化腐朽为神奇。这需要他不断的与作品进行对话。
对话的过程,也是一个不断取舍的过程。例如:汽车的维护经济性与维护效率,究竟哪个更重要呢?显然,家用车与赛车在这方面的要求截然不同。在设计的过程中很有可能发生反复、甚至把原有方案推倒重来。
但无论如何,设计的产物都是设计师怀着对美好的憧憬与世界交互之后得到的。它或有意、或无意的对这个世界造成了切实的影响。
程序设计亦如是
在不同的设计目标下,程序设计也面临取舍。以JavaScript工具库来说:Lodash 是一个功能众多、性能出众的 JavaScript 工具库,它通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。
如果说 Lodash 是瑞士军刀,那么只负责状态管理的 Redux 库无疑走的是简约挂:无论是单一数据源、state只读还是对纯函数的要求,都为了且仅为了更优雅的进行状态管理。
对于应用设计师来说,也同样需要根据功能场景对设计进行取舍。毕竟我们的设计、我们的代码切实的影响着世界。
所以...
所以当我们谈设计的时候,我们其实谈的是如何改变世界。
Happy Hacking !
2015最全抢红包攻略(支付宝 微信 QQ) 2015抢红包时间表一览
春节红包异常热闹,随着支付宝、手机QQ、微信加入红包大军,大家也更加积极参与,本文小编为大家带来抢红包的方法以及抢红包的时间表,小伙伴们不要错过哦
今年的春节红包异常热闹,随着支付宝、手机QQ、微信加入红包大军,微信与支付宝的红包大战一触即发。2月9日,支付宝与微信同一天宣布,从2月11日、12日开始,联合各类商家向全国人民发春节红包。其中微信将联合各类商家推出春节“摇红包“活动,送出金额超过5亿的现金红包(单个最大红包为4999元),以及超过30亿卡券红包。支付宝宣布从2月11日到2月19日,与品牌商户一起向用户发放约6亿元的红包。其中,现金超过1.56亿元,购物消费红包约4.3亿元。手机QQ也不失时机凑热闹,也于当日宣布广邀各路大牌明星、土豪企业豪掷总价值30亿的红包,还不跟微信重复。面对汹涌来袭、眼花缭乱的红包,小伙伴们准备好了吗?小编整理出史上最全的抢红包攻略,小编先祝各位看官财源滚滚来。
(一)支付宝红包
怎么玩:新春红包形式有个人红包、接龙红包、群红包、面对面红包和讨红包等五种玩法。
个人红包分为普通现金红包和逗比红包两种;逗比红包会根据你红包的金额随机生成三个数字让朋友来猜,猜中则全拿走,猜不中则只能拿一半,剩下的一半可以继续分享给朋友;接龙红包可以分享给朋友和群,最先猜到红包金额的分享链路上的所有人将平分红包;面对面红包,必须要在现实中朋友们面对面一起玩,随机将红包分成多个小包,以玩游戏的形式抢红包;讨红包则可以向家人、老板、朋友甚至朋友群发布讨红包链接。
新“抢”法:除了收到好友发出的红包外,还可以通过“红包口令”抢红包,当用户将红包分享到微信或QQ的时候,支付宝红包会自动生成一张带有数字口令的图片,用户点击“保存图片并打开微信”就可以将这张图保存到手机相册中,同时还打开了微信。这张图片可以任意发到微信群、朋友圈或者qq里面。 而收红包的人只要看到这张图,记住图上的数字口令,再进入支付宝钱包首页,点击“红包口令”输入这串数字,就可以领红包了。
小道消息:用户抢到的现金红包,将直接进入用户的支付宝账户余额,与一般的支付宝资金一样,可以在所有支持支付宝消费的地方使用,同时也支持提现到银行卡。
此外,从2月11-19日(16、17日除外)这7天时间,每天都有红包“从天掉落”,你不用抢,只要打开支付宝钱包就能白拿。
具体来说:
2月11日(明天)10点、16点、20点,每个整点都有1000万现金红包发放,购物红包分别为3000万、5000万、5000万;
从2月12日-15日,每天固定10点发放,现金红包分别为300万、250万、300万、250万;购物红包只有13日、15日有。
2月16日、17日休息;
2月18日(除夕)将迎来高潮,20点、21点、22点、23点、24点五个整点,共1亿现金红包发出,购物红包2亿。
除了官方之外,按照惯例,支付宝还提供了用户之间的发红包、抢红包玩法,具体可参见《支付宝抢红包攻略》,这里就不再赘述了。
需要注意的就是,要开通支付宝实名认证功能,支付宝要升级到最新的8.5版,打开支付宝钱包的消息推送功能。
(二)微信红包
怎么玩:最新版的微信优化了“红包功能”,用户不仅可以通过“我——钱包——微信红包”的传统流程发红包,还可以在好友对话框和微信群里直接点“加号”发红包。红包的种类有“拼手气群红包”和“普通红包”两种。
微信方面介绍,首轮春节“摇红包”活动将于2月12日晚上正式开启,当晚将派送2500万个现金红包。用户只需要升级微信至刚刚更新的6.1.1版本,打开微信“摇一摇”页面,即有机会获取现金红包。与此同时,除夕夜商家还会通过微信派发更多现金红包。
新“抢”法:具体抢红包的方法是,2月12日晚21时开始,已更新到微信6.1.1版的用户,在“发现-摇一摇”的栏目里会出现红点提示,只需点击即可进入微信摇一摇红包专场。
小道消息:据微信团队相关人士透露,此轮抢红包被视为微信羊年春节抢红包大战的“热身赛”。年除夕当晚,还将有一大波红包来袭,而那一夜,才是微信红包真正的“大招”。
(三)手机QQ红包
怎么玩:QQ红包有“拼手气红包”和“普通红包”两种形式,“普通红包”是定额红包。用户还可以通过“红包排行榜”查看好友收、发红包的排名,看看哪些人进入了爱发红包的“土豪榜”,而哪些人抢到最多成为“人气王”。在好友、群、讨论组聊天窗口点击输入框旁的“+”,都可找到“发红包”入口,还可以直接在“QQ钱包”中找到“QQ红包”入口。
新“抢”法:
抢“明星”
1、2月11日起每晚7点半、8点半,准时打开手机QQ!在右下角找到明星头像点击,就可进入活动页面,点击“元宝”就能为明星的红包提升总金额。
2、等待开抢倒计时结束,疯狂点“抢”就能抢明星红包,抢到“现金”红包,将会自动存入你的QQ钱包哦。
3、如果没抢到的话,还有机会随机得到“许愿神灯”。点击神灯,支付一分钱,就会得到一个一定有钱的红包。
抢“企业”
1、在除夕,QQ将会联合企业一起为所有用户疯狂发福利!记住每个整点时间准时守候,或提前1分钟赶去蹲点哦。
2、如果当时在使用手机QQ与好友聊天,也没有关系!上方会弹出开抢提示,点击也可以进入。
3、进入活动后,点击“传递祝福抢红包”,选择群组后,点选“传递祝福”,之后将自动跳出红包弹窗,点击即可获得红包。
小道消息:手机QQ红包将会从小年夜一直持续到除夕,共有两种形式,一种是明星红包,将有范冰冰、李晨、郑恺等十多位国内当红明星助阵,从小年夜开始到除夕前一天会在手机QQ发放现金红包;另一种是企业红包,在除夕当天,会有十多家知名企业联合手机QQ一起发放红包,红包由现金和代金券组成,两种红包的金额加起来共超过30亿元。
明星红包:每个明星共有1小时时间,前半小时是用户给明星塞钱,后半小时才正式开抢。
1)“先塞钱”流程:在每天的晚8点、9点,准时打开手机QQ,在右下角找到明星头像,即可进入活动页面,点击“元宝”就能为明星的红包提升总金额;
2)“后抢钱”流程:等待开抢倒计时结束,点击“抢”就能抢明星红包,抢到“现金”红包,会自动存入QQ钱包。
企业红包发放具体时间如下:
企业红包:每个账号每个时段可以抢一次企业红包,机会不可积累。记住每个整点时间,提前1分钟打开手机QQ,能前五分钟打开抢红包页面,中奖几率会提高。
1)对照开抢时间,进入手机QQ,在QQ界面右下角将有“企业红包”气泡,点击进入活动页面;如果当时在使用手机QQ与好聊天,则上方会弹出开抢提示,点击也可以进入。
2)进入活动后,点击“传递祝福抢红包”,选择群组后,点选“传递祝福”,之后将自动跳出红包弹窗,点击即可获得红包。
(四)微博
此前,微博已经开启了“让红包飞2015”活动进行预热,活动时间为2015年2月2日至2015年3月6日,主要是明星大V与用户之间的红包。除此之外,除夕夜春晚播出期间,微博将联合支付宝、四季沐歌等企业向用户送出将近上亿的现金红包。
以四季沐歌为例,该公司此前冠名了12组“四季沐歌号”列车,沿途经过20多个省市,春运期间将覆盖近亿人次。
届时,“四季沐歌号”将在车身彩贴、列车展板、海报、票卡等物品上植入活动二维码,用户通过微博手机客户端扫码,即可抽取现金红包、福利卡券及其他礼物,总价值超过2.5亿元,单个红包最高金额为4999元。
后记:听了半天,可能有人觉得有点晕了,不过,只要有人发红包,哪怕再也复杂小编也要抢。小伙伴们,准备好抢红包了吗?
2016微信过年什么时候开抢红包雨?微信红包雨抢红包攻略
微信推出了红包雨活动,一点也不落后于老对手,今天小编就为大家带来大家带来微信红包雨抢红包攻略,一起来了解下吧
微信推出了红包雨活动,一点也不落后于老对手,今天小编就为大家带来大家带来微信红包雨抢红包攻略,一起来了解下吧!
2016年微信红包雨活动将于1月26日20:00点整正式开抢,在活动期间玩微信的摇一摇功能就能有机会抢到红包哦!
2016年微信红包雨抢红包攻略
请将微信更新至最新版本
一、微信官方将在1月26日晚8点,开启一轮红包雨
通过手机摇一摇的方式即可抢红包,所以一定要手快手快手快!
二、买单有红包,全国合作门店线下开抢
1月26日起,在全国合作门店使用微信支付买单后,可在支付成功页面,点“抢红包”参与活动,红包金额随机,最高为666.66元。
三、回家有惊喜,机场直接摇红包
1月26日到2月1日
用户在以下机场内,打开手机蓝牙,使用【微信】-【摇一摇】,选择【摇周边】即有机会摇到最高1888元现金红包(名额有限,领完即止)
可以摇红包的机场有:北京首都国际机场、广州白云国际机场、长沙黄花国际机场、西安咸阳国际机场、西双版纳嘎洒国际机场、福州长乐国际机场
同时,活动期间用户在以下机场内的合作门店使用微信支付买单后,还可参与“抢红包”活动,红包金额随机,最高为666.66元。
可以抢红包的机场有:北京首都国际机场、广州白云国际机场、长沙黄花国际机场、西安咸阳国际机场、西双版纳嘎洒国际机场、福州长乐国际机场、南昌昌北机场。
我们今天的关于当我们在抢红包时,微信运维在做什么?和当我们在抢红包时,微信运维在做什么呢的分享已经告一段落,感谢您的关注,如果您想了解更多关于"当我们在说 DevOps/SRE/PE/NoOps 的时,我们在说什么"?、0. 当我们谈设计时,我们在谈什么、2015最全抢红包攻略(支付宝 微信 QQ) 2015抢红包时间表一览、2016微信过年什么时候开抢红包雨?微信红包雨抢红包攻略的相关信息,请在本站查询。
本文标签: