1月6号,像往常一样,在工作的间隙,我打开手机上的今日头条。点开了其中一个新闻,发现进去后页面提示网络不给力,请稍后重试。前两天我的4G网络上不去,折腾了半天正要打联通客服咒骂,在IVR语音提示时才发现已经欠费了。但现在话费可是本月刚充的啊,何况现在连的是公司的WIFI,难道公司网络有问题?这时通知中心弹出了其他应用的提醒,貌似其他应用是正常的。那么就是被头条的提示的忽悠了,任何错误提示给用户的都是你的网络不给力。
果不其然,稍后其他的新闻看到头条的服务挂了许久的消息。
SRE - Site Reliability Engineering, Google提出的一个概念,综合了Google多年运维大规模服务器集群的经验演变出的一个职位。其目的就是为了最大限度的保障Google服务的可靠性,其演进方向是从运维工程师向开发工程师边界的扩展,要求运维工程师以软件工程的思路解决大规模运维的问题,用工具而不是人力来解决不断扩大的服务器集群对管理的需求。
如何保障网站可靠性,通常是在运维,基础架构,系统管理员的范畴。关注业务开发的软件工程师不关心这个,他们要忙着应付PD的最后期限,让飞速发展的平台支撑上层的业务需求。
在云计算基础设施还没成型时,互联网公司都会有个运维团队负责搞各种各样跟系统有关的活。在企业发展的不同阶段,这只团队可能会忙着提采购需求给财务;评估系统容量,要多少IOPS的SSD硬盘, 多大的内存才能满足应用需求;写各种各样的发布脚本,将开发提供的war包(如果是java应用)批量分发服务器的目录上并启动tomcat;搭LVS为机房入口提供热备的负载均衡设施;用keeplived提供VIP去单点,为后端服务提供故障迁移能力;跑到机房去为机器上架,布设机架网线,甚至配合容灾演练去拔网线测试;还要制定线上应用的发布规范,保证成千上万的应用能按照统一的规范发布,秉着约定优于配置的原则,让整个公司的人可以不加思索的找到应用的启动脚本,log目录;新机器上线需要初始化系统,随着虚拟化大潮物理机都要切分成虚拟机才交付给开发部门;出了个紧急安全漏洞得给系统或应用打补丁;线上生产机的权限要管好,别被黑客提权出了篓子;往往可能还要客串一把网络工程师粗排一下千奇百怪的运营商到IDC网络丢包,缓慢问题。
以上还不是最累的,运维团队还要为线上故障排查负责,软件工程师半夜只会收到自己应用的报警,运维团队是要接受自己管理全部应用的报警的,出了问题往往开发和运维都要一起排查,一个高速发展的公司都会经历那么一段故障频发的苦逼日子,运维成天到晚在忙着救火。
由于运维与开发部门不在一个部门,且各自关注的目标不同,伴随着长期的冲突和博弈。开发只关心功能上线,运维部门关心应用稳定运行。从前,开发可以快乐的自己登录到线上机器上发布代码,scp个本地的war包过去,就跑起来了;自从xxx日出了故障导致网站宕机1小时,错过了促销的黄金时间后,发布就被套上了流程的管控,层层审批,就是为了减少发布的次数,因为理论上发的越多,越容易出问题,一个一年只发布一次的系统,基本没什么可能出问题。
Devops理念是伴着云计算理念出来的,在amazon的云计算成熟后,以上说的传统运维已经可以通过买云服务实现了,不用自己采购机器,买个EC2,数据库服务也可以直接买RDS,对象存储用S3, Load Balancing也可以买。开发人员自助在上面操作一下,部署上自己的应用就可以提供服务了,买个域名将DNS直接A记录指向服务器就行了。可以说是中小公司的福音,互联网创业不用考虑太多的服务器问题了,把有限的人力投入到至关重要的业务功能开发商,其他的服务器运维工作交给专业的云计算公司来做。
网络视频租赁商Netflix就是个知名的例子,其服务都运行在AWS上。由于其多年跑在云上的分布式经验,还在github上开源了不少分布式处理的组件,回馈了社区。其迁移的路程也算长的,从2008年到2015年,7年,完成了全部应用到AWS的迁移。他们认为AWS提供了更可靠的服务。
有迁入也有迁出的,著名的网络存储提供商Dropbox由于嫌AWS太贵,将自家服务重新移到了自家机房运维。
很有意思不是吗?
那么
想体验自己的服务被上亿人使用的感觉吗?
想参与每年双11的技术狂欢吗?
想了解一线大厂的分布式技术如何抗住海量流量吗?
阿里集团客户体验事业群旨在建立更高的客户服务标准,让客户在阿里享受到最“爽”的服务,让“客户第一”成为阿里的百年口碑。
CRM产品技术部作为支撑全网服务的产品技术团队,希望通过我们的产品、数据、技术去提升阿里集团服务几亿客户的能力,提升全网客户体验。这里是最能听到“炮火”的地方,可以通过我们的努力,最直接的看到产品的改善。
在这里可以接触第一手的大数据。
这是一个以用户为中心的多角色无边界团队,一个有梦想的欢乐团队,一个能近距离感受用户温度的团队。无论你是何种角色,只要站在用户的角度思考问题,你的意见都有机会被采纳实施,去产品中落地。
关于用户体验的经验和妙想会得到重视,可以站在集团层面,推动与解决难以落地的用户问题。
如果你来到我们团队,那么你的职责可能包括但不限于:
- 负责Alibaba客户服务相关的产品研发
- 深入发掘和分析业务需求,撰写技术方案和系统设计
- 核心代码编写、指导和培训工程师、不断进行系统优化
- 参与或领导跨团队的研发项目
岗位要求:
- JAVA基础扎实,理解io、多线程、集合等基础框架,对JVM原理有一定的了解;
- 3年及以上使用JAVA开发的经验,对于你用过的开源框架,能了解到它的原理和机制;对Spring,ibatis,struts等开源框架熟悉;
- 熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制;能对分布式常用技术进行合理应用,解决问题;
- 掌握多线程及高性能的设计与编码及性能调优;有高并发应用开发经验;
- 掌握Linux 操作系统和大型数据库(Oracle、MySql);对sql优化有丰富的经验;
- 学习能力强,适应能力好;具备耐心/细心的品质;
- 喜欢去看及尝试最新的技术,追求编写优雅的代码,从技术趋势和思路上能影响技术团队
简历尽情发送到kunrong.zkr@alibaba-inc.com