从0到1,打造DevOps易用工具链(精挑细选27种)

数人云:DevOps是一种文化,但创立或改变文化技术和工具必不可少,今天小数就和大家分享下覆盖整个生命周期的易用工具链。

DevOps操作上越来越成熟不是一蹴而就的,而是使用了一些新的工具,在团队内不仅改变了文化,同时也打破了沟通上的壁垒,进而开发出更好的应用,虽然仅靠工具还不够,但通过应用自动化,在提高了交付效率和质量的同时也促进了成员之间的协作。

对于如何构建DevOps工具链,没有标准的答案,而是要取决于团队规模和具体需求,这里从Netflix、Etsy,Dropbox等公司汲取了相关经验,分享一些在应用交付生命周期的每个阶段,一些受欢迎的工具。

Markdown

构建工具

〓 项目管理

瀑布式开发要规划出所有的工作和每个版本的依赖关系,这与DevOps理念背道而驰,而敏捷开发,可以通过构建、测试应用收集用户反馈来降低风险提高可见性,这也是许多团队在Sprint(敏捷开发的四种会议)提出构建到发布用2—4周的时间。

当团队在每个Sprint时分享想法和计划时,要考虑之前Sprint的回顾反馈,不断优化方案。此后将这些构思上传到一些工具当中,可以跟踪项目的整体和每日进度。推荐的工具有:

  • Active Collab:基于Web、开源的协作开发与项目管理工具,可以利用它轻松地搭建一个包括团队和项目客户能够 在同一个项目上实现相互协作的环境

  • VersionOne:支持SaaS模式和本地安装模式,web客户端,支持Scrum, Extreme Programming, DSDM and Agile UP等多种敏捷开发方法。 Jira:被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。

  • Trello:由著名的软件工程师 Joel Spolsky 开发工作围绕“木板(board)”进行,同一小组的用户可以在这里创建待办事项列表(to do list)、创建任务,并分配给同事。

〓 代码&SCM系统

所有的构建都可以用代码来表示,在上线之前,需要测试和复查,并将其合并到一个版本控制库中的主分支当中,并在可以进行任何本地测试,推荐工具有:

  • GitHub:GitHub是一个基于web的Git或版本控制库。

  • Gitlab:提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki。

  • Bitbucket:源代码托管网站,采用Mercurial和Git作为分布式版本控制系统。

〓 CI平台

持续集成(CI)是现代软件开发的最佳实践,通过建立有效的持续集成环境可以减少集成问题、提高代码质量、改善团队成员之间的沟通和协作、快速迭代等,推荐的工具和平台有:

  • Jenkins:基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

  • CodeShip:部署快,易损耗、成本低。易用性比肩Travis,而更胜一筹的是集成了相当数量的选项,可以根据自身的工作流程和开发工具定制化CI/CD工作流。

  • Bamboo:具有开箱即用的特性,可在硬件上运营。Bamboo是一个聚焦企业级的解决方案,并且包含具有极强竞争力的特性、定价和技术支持等。可以部署在大规模生产环境中。

  • CodeFresh:虽然CodeFresh不是典型的CI/CD平台,但它提供了一种有趣的应用场景,在容器上使用CI/CD从而促进Docker,Kubernetes和云原生的发展前景。

〓 测试

为了实现DevOps所需的业务目标,为确保将代码推向生产是安全的,需要进行大量测试:单元测试、集成测试、验收测试等,测试完成后,还有大量开源和付费工具可以做一些其他事情,推荐的工具有:

  • JUnit:一个用于编写可重复测试的简单框架。

  • Mocha:简单、灵活有趣的JavaScript测试框架。

  • CircleCi:Web应用程序开发测试平台。

发布工具

〓 自动化部署

发布自动化工具应具备例如自动回滚等功能,在开始部署之前将模块复制到主机,如果企业规模较大,可以轻松地安装代理并将防火墙配置到服务器实例中。

许多团队还使用基于聊天的部署工作流,让机器人部署简单的命令。推荐的工具有:

  • Bamboo:采用自动化管理的构建代理模式,运行在各种专用服务器或云服务器上的代理实现了构建能力的即时动态扩展。通过与Jira集成可以实现完整的发布流程

  • Puppet:一个开源的软件自动化配置和部署工具,基于C/S架构的。服务器端保存着所有对客户端服务器的配置代码,在Puppet里面叫Manifest,客户端下载Manifest之后,可以根据Manifest对服务器进行配置,例如软件包管理,用户管理和文件管理等等。

  • Superviso:一个客户/服务器系统,允许用户监控和控制类似Unix的操作系统上的许多进程。

  • Forever:简单的CLI工具,用于确保给定的脚本连续运行。

监控工具

〓 部署监控

部署监控让高级别的发布进入和需求状态可视化,是理解服务健康与否的关键,确保CI服务器上发生的关键事件并及时告警。推荐的工具有:

  • Datadog:专门针对 DevOps 团队,从APP或者其他各种工具获取数据并提供数据可视化功能。将从基础设备和应用采集的数据统一处理并存储。

  • ElasticStack:一系列开源产品的合集,包括 Elasticsearch、Kibana、Logstash以及 Beats 等等,提供了很多数据分析领域的功能,如 Pipeline Aggregation。

〓 服务器监控

服务器监控提供了一个基础结构级别的视图,许多团队还使用日志聚合来深入研究特定问题,可以聚合及度量如:内存、CPU、负载均衡等,使工程师能在问题发生时迅速做出响应。推荐的工具有:

  • PagerDuty:能够在服务器出问题时发送提醒的软件。在发生问题时,提醒的方式包括屏幕显示、电话呼叫、短信通知、电邮通知等,而且在无人应答时还会自动将提醒级别提高。

  • Nagios:是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员

  • Solarwinds:主要提供企业的网络管理和监控,可以帮助网管进行配置,监控和管理日趋复杂的系统和构建网络基础构架的流程。

〓 应用性能监控

应用性能监控为应用和业务服务的性能及可用性提供了代码级的可见性,让快速理解性能指标和满足服务SLA更加轻松。推荐的工具有:

  • DynaTrace:在整个生命周期过程中会对Web和非Web业务关键应用程序的监控、管理和优化方式进行转换。可快速解析性能问题并将问题范围隔离定位到确切的代码行。

  • AppDynamics:能提供端到端的、可视化驱动管理的的平台。核心理念是SEE可视化、ACT快速解决还有KNOW实时分析。

终极工具

〓 云

云计算目前的主要厂商是亚马逊的AWS、微软的Azure、Google的(GCP)。在PaaS层,可以访问和创建如数据库和分析之类的应用服务且不用考虑如操作系统、防火墙配置或存储之类的基础设施。

〓 Docker

Docker是一个开放的平台,将开发、传输和运行在容器这种隔离的环境中。容器封装了专用的文件系统、存储、CPU、RAM和其他需求的应用,保证这些应用在不虚拟化硬件的情况下持续运行且保持一致。Docker是可移植的、轻量级的,很容易进行安装。

〓 Swan

数人云Swan是基于Mesos实现的开源应用调度框架,帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

Swan Github地址 欢迎Star&Fork

Markdown