DevOps

什么是DevOps

随着软件发布迭代的频率愈来愈高,传统的「瀑布型」(开发—测试—发布)模式已经不能知足快速交付的需求。2009 年左右 DevOps 应运而生,简单地来讲,就是更好的优化开发(DEV)、测试(QA)、运维(OPS)的流程,开发运维一体化,经过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。ios

DevOps 的技术栈与工具链

  • 版本控制&协做开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaarshell

  • 自动化构建和测试:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnitapi

  • 持续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go安全

  • 容器平台: Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)运维

  • 配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible分布式

  • 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere微服务

  • 服务开通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat工具

  • 日志管理:Logstash、CollectD、StatsD学习

  • 监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana测试


 

我的很赞同的两个观点

简单

KISS(Keep it Simple and Stupid,简单就是美)原则是最重要的。因此本段文字也很简单。咱们要尽可能提供简单、可重用的解决方案。“简单”节约了书写文档、培训和提供支持的时间。“简单”增长了沟通的速度、避免混淆、减小了开发和运维出错时的风险。“简单”让人更快的发布产品。

开发与运维的关系

早参与,多参与。对于开发人员,要让运维人员常驻到开发部门,全程参与开发流程。邀请运维人员参与你的Scrum或者开发会议,与他们分享项目计划、分享新技术的点子和心得。搜集功能性需求(指开发人员用到的需求)的同时也要搜集运维方面的需求。把对于“发布、备份、监控、安全、配置管理和系统功能”的测试做为一项独立的项目流程。软件产品在开发时解决的问题越多,那么在使用时暴露给用户的问题就越少。给运维人员作培训,让他们弄清楚项目的体系结构和核心代码。若是运维人员在反馈bug时提供的信息越多,那么你花在排查问题 的时间就越少,这个bug也就会更快的被解决掉。

对于运维人员,在遇到问题时须要把开发人员加进来,你们一块儿解决问题。邀请开发人员参与大家的会议,分享项目进度(roadmaps),而且共同修订工做计划。运维人员必定要了解开发部门下一步的工做方向,从而确保产品运行的底层平台可以良好的支持最新技术。开发人员也会带来相关的技术、知识和工做,帮助大家改善产品的运行环境,使其更加易于维护、简洁有效。

有一些开发领域的概念,例如:“要根据API而非封闭的interface来构建工具”,分布式版本控制,驱动测试开发,以及诸如敏捷开发、看板管理(Kanban)和Scrum等方法论。若是把这些概念应用在运维领域,一样会产生革命性的变革。

不要害怕新点子和新技术。咱们能够随时随地的向他人学习,哪怕是一句“咱们不再要那样作了!”也会让咱们从中获益。尽管处于不一样的部门,可是咱们要共同窗习、共同成长,这样才能协同工做的更好!

相关文章
相关标签/搜索