Rafter的DevOps

引导阶段

在过去的6年里,我有着独一无二的机会观察我们公司是如何由几个只想着出 租教科书的应届毕业生发展成一个大而成熟的公司。当我回头看时,我会将我们 的成长分成两个不同阶段:A轮融资之前和A轮融资之后,与你听到或读到的大部 分创业公司不同,我们经历了相当长一段时间的A轮融资(大概有3年)。

在这一发展阶段,我们并没有花费大量的资源或人力在DevOps上,相反我们主 要关注产品的构建。在刚开始几年的大部分时间里,我把自己定位为一软件工程 师,每月只需几天时间花费在系统管理上。

我们经常开玩笑说,我是那个抽到下签,被“困于”服务器管理的 那个人。但是,实际上,我自己特别享受。尽管如此,我也从来没想过我对软件 开发的热情居然会用在服务器管理上。

尽量简单(在你能控制的范围)

我们初期之所以能不在DevOps上花费力气是有几个原因的。首先,很大程度上 是因为我们是小公司,变化也比较少。我们选择了一个简单的架构,应用程序数 量也比较少。所以尽管我们的产品不断发展,但是需要对底层的基础架构进行修 改的地方却比较少。

过度投资

第二,早期我们在服务器硬件上投资过度了。我们可能只需要两台服务器就可 以运行我们整个网站,而我们却买了10台。但这允许我们之后花很少的时间去担 心那些性能或基础架构发展等问题,而我们也是在几年之后才耗尽初期购买的服 务器的性能。当然,配置这些服务器是有前期成本的,但是一旦设置好了,就不 需要大的改动。

选择好的工具

最后,我们采用Ruby on Rails作为应用程序框架,及其关联的工具,比如: Git、Capistrano和Teamcity,允许我们在早期就采用那些良好的发布和部署实践 。与此同时,我们也构建于那些行之有效且稳定的开源解决方案之上,比如: nginx、MySQL和memcached。

也正因为对这些工具和框架的采用,从而让我们避免了采用不必要的复杂且专 有的解决方案。很多时候我觉得这些方案会随着公司的成长,降低其开发速度。

成长

随着我们公司进入第二个成长阶段,我们的工程师和产品团队也稳步增长。只 有两个开发人员的日子已经一去不复返了,一眨眼间,我们就有10个,甚至20个 人为现有的以及新产品工作。可想而知,我们需要引进的变化数量也会稳步增加 。我们的硬件上需要承载的应用绝对数量也直线上升,先是以前的两倍,然后三 倍。同时开发人员也想使用新的应用框架、编程语言、数据库、排队系统及缓存 服务器等。

随着这些复杂性的增加,错误和停机的成本也增加了。很快我们发现旧的手动 配置基础架构已不再适用,而我们基础架构层对成熟性和灵活性的缺乏也将给我 们带来以下问题:减缓新产品和功能的发布,危害我们的稳定性。认识到这一点 ,我停止了在产品上的工作,并将重点全部放在研究开发自动化、监控和发布流 程上。

引进Chef

幸运的是,我们认识到我们需要实行DevOps实践。而当时,我们遇到了 OpsCode Chef,以及它所倡导的“基础架构即代码”原则。最初,我 们花费了几个月时间为现有基础框架的每一部分编写自动化脚本。一旦完成,我 们就可以利用这些自动化脚本重构所有服务器,这将大大减轻我们肩上的负担。 现在我们所有服务器都已设置一致,而我们最终也有一个地方能让团队所有人都 可以看到每块基础架构到底是如何建立和设置的。同样重要的是,它允许我们快 速地将额外资源添加进来。

DevOps团队的成立

DevOps开始在公司内担负起独特的责任,为我们的产品线提供关键支持,并保 证我们的基础架构可以持续拓展。除了这些重点之外,我们也在不断开发工具和 产品,用于管理这些需要持续支持和改进的基础架构。尤其在前期,通常来说如 果往基础架构中引进新的应用,就要求对底层自动化脚本进行修改。由于越来越 多人开始依赖我们的工作,内部用户(开发人员和运维人员)也随之提出了更多 与DevOps相关的需求。

由于我们的开发团队已经分为不同的产品团队,且每个团队都关注不同的业务 ,我们决定设定一个单独的DevOps团队。这样我们就有一个专门的团队全职解决 基础架构问题。另外,应用平台的可用性和稳定性对我们的业务来说也是及其重 要的,宕机或别的问题对我们的服务都会有很大的影响。我们需要随时保证有专 门的、训练有素的工程师来协助和调查问题,尤其当问题的归属可能跨越多个团 队或无法当时就明了时。

自动化果实

按需配置

在采用Chef和自动化我们产品的基础架构之后,我们立马着手做的事情就是改 善我们的测试和staging系统,给它们配上同等程度的自动化。我们经常听到的抱 怨之一就是开发人员无法简单快速地给业务人员展示他们当前所做的工作。为此 ,我们开发了一个100%自助服务的门户,这样公司里的任何人都可以启动一个预 配置服务器在EC2上运行完整的程序。

时间: 2024-11-02 12:38:52

Rafter的DevOps的相关文章

【资料合集】运维/DevOps在线技术峰会:文章、PDF+回顾视频!

从传统IT部署到云,人肉运维已经是过去式,云上运维该怎么开展?尤其是云2.0时代,运维已经向全局化.流程化和精细化模式转变.与此同时,人工智能的发展,"威胁论"也随之袭来--运维是不是快要无用武之地了?如何去做更智能的活,当下很多运维人在不断思考和探寻答案. 1.同城容灾架构剖析--夸父 演讲视频:http://yq.aliyun.com/webinar/play/202 PDF下载:https://yq.aliyun.com/attachment/download/?id=1523

你晓得吗?大多数企业根本没有做到 DevOps!

作为当代 IT 企业提升效率的葵花宝典,DevOps 对 IT 企业效率的提升有目共睹 ,一时之间各大企业纷纷用提升效率的 DevOps 开发.协作.管理工具武装自己. 对比 2014 年上半年,CSDN 研发频道曾做过的一份面向国内开发者DevOps的实践调查问卷.当时的数据报告显示:有 37% 的开发者听说过 DevOps 并且很感兴趣正准备使用:有 60% 的用户表示只知道 DevOps 概念,但尚未开始实践. 但是,今非昔比,从下图中我们可以看到,实践过 DevOps 的企业已经超过了

DevOps @ Spotify

本文是"DevOps每月实战故事"系列的一部分.每个月我们都会听 听来自不同团队的DevOps故事,了解哪些对我们有用,哪那些没有用,并且描绘 出DevOps实施过程中所面对的挑战. 将DevOps的经验用于管理 互联网上有许多关于DevOps的博客帖子.文章和微博.有些讨论他们好与坏, 有些则是讨论引入DevOps后带来了那些影响,还有一些则是在讨论如何实施. 尽管这篇文章提到了一些DevOps的通用性的方面,但其主要侧重点是将DevOps 做事的原则应用到另一个领域:工程领导力.

DevOps的各个阶段

本文基于我在瑞典DevOpsDays上发表的"DevOps是个阶段,而不是特定状态"演说整理.如有兴趣 ,可以在线观看我的演说,不过在阅读本文时,无需事先观看. 在过去的几年里,我们不断的 在文章.演讲.谈话中了解到DevOps这个词.DevOps声称能够在提升整体系统稳定性的同时,建立更快 的反馈回路,并降低产品迭代成本.DevOps的目标令人印象深刻,但作为新生概念,它无法证明能够达 到这种预期目标,所以相关的活动很容易会被忽视或是撤销.随着DevOps的发展,有不少公司因DevO

天生一对:云与DevOps

数字创新经济 云计算和DevOps间的关系到底是什么呢:难道DevOps真的只是"针对云的IT"?只能在云中执行DevOps?只能通过DevOps运行云?针对这三个问题,其答案都是否定的.云和DevOps是相互独立的,但在通过IT交付商业价值上却是相辅相成的. 要想真正理解云与DevOps之间的关系,应该退一步在两者是如何发生的大背景下去考虑,这样会有所帮助.云和DevOps的演变是对三个基本社会变革的回应.首先,我们正在经历从产品经济到服务经济的演变.人们更多地强调体验,而非具体事物

关于DevOps你必须知道的11件事

关于作者 Gene Kim在多个角色上屡获殊荣:CTO.研究者和作家.他曾是Tripwire的创始人 并担任了13年的CTO.他写过两本书,其中包括<The Visible Ops Handbook>,目前他正在编写<The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win>和<DevOps Cookbook>.Gene是 IT运维的超级粉丝,痴迷于改进运维流程--在不影响当

DevOps不等于ChefPuppet

DevOps是一个热词,但是毫无疑问,也是未来的趋势(注1).高效率的IT组织常常贴着DevOps的标 签,是人们讨论的焦点和学习的对象.2009年时,人人都在讨论如何像Flickr一样一天内完成十几次的 部署(注2).今天,人人都谈论如何像Netflix/Pinterest一样基于云基础设施构建大规模.高可用. 可伸缩的服务(注3). 如何才能实现DevOps呢?很多人会不假思索地告诉你,使用Chef/Puppet,你就能实现DevOps.于是 ,DevOps变成了一个简单的问题,选择Chef

DevOps助力云原生应用开发实战分享

背景 Cloud Foundry 是业界比较"资深"的PAAS云平台,它不仅支持多种框架.运行时环境,还支持在多种云环境进行部署,包括:AWS, Azure, GCP, OpenStack等.本文分享,基于阿里云进行开发.运维的实战经验. 部署Cloud Foundry首先要用到的工具是BOSH.BOSH是用来部署和管理Cloud Foundry集群的工具. 它定义了一系列管理和操作云资源的接口Cloud Provider Interface,各个云厂商需要适配自己的Provider,

【转载】CodePipeline联动容器的DevOps实践

在云栖TechDay41期,阿里云资深开发工程师流生带来CodePipeline联动容器的DevOps实践. 本文是该沙龙活动的整理内容. 开发界关注如何让Docker的持续交付更简单.安全.高效.在推出容器服务之后,阿里云研发了开源持续交付工具CodePipeline,它提供多种语言的持续交付向导模板,通过模板快速填写进行持续集成,从而实现多平台.多环境的持续交付. 开发者在云上的"最后一公里问题" 云计算的最后一公里是说云计算技术已经成熟了,很快或者是平滑的落实到企业当中,这幅图其