微信号:infoqchina

介绍:有内容的技术社区媒体

Rafter的DevOps

2013-12-13 18:05 InfoQ

引导阶段

在过去的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团队。这样我们就有一个专门的团队全职解决基础架构问题。另外,应用平台的可用性和稳定性对我们的业务来说也是及其重要的,宕机或别的问题对我们的服务都会有很大的影响。我们需要随时保证有专门的、训练有素的工程师来协助和调查问题,尤其当问题的归属可能跨越多个团队或无法当时就明了时。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 从Apple Watch可以看到初代iPhone的影子 2015年薪资最丰厚的5个IT职业 内存为王:DBIM RAC Share Nothing架构的挑战和解决方案 IPCS与Linux共享内存 如何在命令行输出带颜色的文字