10分钟了解DevOps及常用工具集

2020-10-29 14:50:58 浏览数 (1)

目前在国外,互联网巨头如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb,传统软件公司如Adobe、IBM、Microsoft、SAP等,亦或是网络业务非核心企业如苹果、沃尔玛、索尼影视娱乐、星巴克等都在采用DevOps或提供相关支持产品。那么DevOps究竟是怎样一回事?

DevOps的概念

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。以 IT 自动化以及持续集成(CI,Continuous Integration)、持续部署(CD,Continuous Deployment)为基础,来优化程序开发、测试、系统运维等所有环节。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系。不过需要澄清的一点是,从开发到运维,中间还有测试环节。DevOps其实包含了三个部分:开发、测试和运维。

回顾软件行业的研发模式,可以发现大致有三个阶段:瀑布式开发、敏捷开发、DevOps。DevOps很早之前就被提出来,但是,最近才开始受到越来越多的企业重视和实践。因为DevOps的发展是独木不成林的,现在有越来越多的技术支撑。微服务架构理念、容器技术使得DevOps的实施变得更加容易,计算能力提升和云环境的发展使得快速开发的产品可以立刻获得更广泛的使用。

DevOps的常见工具

版本控制 & 协作开发

  • Git | Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
  • GitLab | GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
  • Gerrit | Gerrit是一个免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用Git作为底层版本控制系统
  • Subversion | Subversion是一个版本控制系统,相对于的RCS、CVS,采用分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。

自动化构建 & 测试

  • Maven | Maven除了以程序构建能力为特色之外,还提供Ant所缺少的高级项目管理工具。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长
  • JMeter | Meter 是 Apache 组织的开放源代码项目,它是功能和性能测试的工具,100% 的用 java 实现。
  • Gradle | Gradle 就是可以使用 Groovy 来书写构建脚本的构建系统,支持依赖管理和多项目,类似 Maven,但比之简单轻便
  • Apache Ant | Apache Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
持续集成 & 持续交付
  • Hudson | Hudson是一个管理和监控持续测试和集成的工具。Hudson的关键特性包括对各种系统的支持,包括源代码管理、应用服务器、代码分析工具、测试框架、构建工具、测试失败的实时通知、变更集支持,以及易于安装和配置的过程。
  • Jenkins | Jenkins的前身是 Hudson,它是一个可扩展的持续集成引擎。
  • Go | Go 是 Google 开发的一种编译型,并发型,并具有垃圾回收功能的编程语言
容器
  • Docker | Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • Supergiant | Supergiant建立在Kubernetes之上,是一个用于容器管理的开源平台。它被用于Kubernetes在几分钟内部署在多个云上。SupergiantAPI用于简化生产部署。借助Supergiant的打包算法,可以降低硬件成本,并且只需使用计算效率所需的硬件。
  • Rocket | Rocket (也叫 rkt)是 CoreOS 推出的一款容器引擎,和 Docker 类似,帮助开发者打包应用和依赖包到可移植容器中,简化搭环境等部署工作
  • Ubuntu | LXD 是 ubuntu 基于 LXC 技术的重构,容器天然支持非特权和分布式
配置管理
  • Ansible | Ansible 提供一种最简单的方式用于发布、管理和编排计算机系统的工具。Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH 进行远程连接。无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。
  • Saltstack | Saltstack 可以看做是func的增强版 Puppet的弱化版。使用Python编写,可以快速基于EPEL部署。Salt是一个开源的工具用来管理你的基础架构,可轻松管理成千上万台服务器。
  • RunDeck | RunDeck 是用 Java/Grails 写的开源工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行操作,大大降低了对服务器自动化的门槛。
微服务平台
  • Consul | Consul适合用于使用微服务构建的现代弹性应用程序当中的服务发现和配置。这款开源工具充分利用了为服务提供内部DNS名称的最新技术。它充当一种代理,可帮助登记和注册名称,让你能够访问服务名称,而不是特定的机器
  • Kubernetes | Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。
  • OpenShift | OpenShift 是由红帽推出的一款面向开源开发人员开放的平台即服务(PaaS)。OpenShift通过为开发人员提供在语言、框架和云上的更多的选择,使开发人员可以构建、测试、运行和管理他们的应用。
  • Cloud Foundry | Cloud Foundry 是VMware于2011年4月12日推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
日志记录
  • ELK:Elasticsearch、Logstash和Kibana | ELK堆栈是现代IT环境中最常见的日志分析解决方案。它收集来自某个环境中的所有服务、应用程序、网络、工具、服务器及更多系统的日志后,放入到一个集中式位置,以便处理和分析。
  • CollectD | collectd 是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。比如以RRD 文件形式。
监控告警 & 分析
  • Nagios | Nagios 是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
  • zabbix | zabbix 是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
  • Kibana | Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口,可使用它对日志进行高效的搜索、可视化、分析等各种操作。

0 人点赞