如果没有开发团队和运维人员之间真正的合作愿望,这些工具的部署是没有用的。
Devops 文化及其好处
DevOps是“开发人员”和“运维”这两个词的组合。它是一种协作文化,旨在使开发团队和运营部门之间的流程自动化,以促进软件的开发、测试和交付。
在之前的文章中,我们看到传统上这些团队的利益是相反的:开发人员应该创造价值并使产品/服务更具创新性,而运营人员的目标是保持基础设施的稳定性。
Devops 文化的优势是多方面的。DevOps 协作允许更快 、更高质量的发布。Devops 团队在保持基础架构质量和稳定性的同时更频繁地交付。良好的Devops 策略基于运维人员和开发人员之间的广泛协作、更好的沟通以及更好的团队绩效。
Devops 中使用的不同工具
Devops 团队每天使用各种工具来完成各种任务和任务。我们在此处准备了这些工具的(非详尽的)列表。
源代码管理工具
Devops 协作的第一步是让开发团队和运维人员在单一源代码管理工具上保持一致。它是一个版本控制工具:任何代码修改都会导致新版本的创建。从历史上看,运维人员不使用这种工具,因为自动化程度很低,一切都是手动的,因此没有代码。但是,一旦有了代码,最好的做法是分享它并让您的同行对其进行审查。这就是代码管理工具发挥作用的地方。
代码管理有两种类型:
Git和Subversion等工具,用于创建文件历史记录:此时,您的文件已发生此类更改。Subversion 是一个比 Git 更老、效率更低的工具。
Github、Gitlab和Bitbucket等工具用于共享其代码,以及随之而来的历史。它们基于 Git,并且可以拥有代码的历史并对其进行多次处理。如果说 Github 在历史上是垄断的,那么 Gitlab 越来越受欢迎,尤其要感谢Gitlab CI的高效。
持续集成/持续部署测试
持续集成和持续部署( CI/CD )工具可实现源代码更改测试的自动化。实际上,CI/CD 工具通过减少创建新功能所需的时间来实现应用程序的现代化。
有许多 CI/CD 工具。最常用的平台之一是Jenkins,这是一个开源工具(虽然可能很难开始使用)。
还有付费解决方案,例如GitlabCI(我们在 Padok 使用)、Bamboo、TeamCity、Concourse、CircleCI或Travis CI。
云提供商,尤其是谷歌和 AWS,也提供了他们自己的持续集成和部署工具。
容器
容器使隔离应用程序及其运行所需的所有元素成为可能。容器的使用使得从开发人员的代码到生产尽可能“iso”成为可能,并且在生产时没有意外。
Docker 将应用程序在这些虚拟容器中的部署自动化和标准化,并在这一领域的工具中脱颖而出。Docker 的替代品是RKT,它是 CoreOS 基金会推动的标准。
使用容器时,对编排的需求会很快出现。
编排容器可以更轻松地部署和管理它们。市场上使用最广泛的编排器是Kubernetes,但还有其他的,例如MesOs和Docker-Swarm。
云提供商
云提供商为企业和个人提供远程存储解决方案。如今,三大巨头共享云服务市场:谷歌云平台、Azure 和 AWS。通过提供最广泛的服务,AWS 无疑是该市场的全球领导者。
当我们谈论云提供商时,我们会想到负载均衡服务。负载均衡服务的任务是将负载分布在不同的设备上,从而提高响应时间。HAproxy是负载均衡中的参考。
自动化和配置管理
自动化有助于消除 DevOps 团队的重复性任务。
Devops 中存在几种类型的自动化:
- 在服务器上设置自动配置
- 自动化服务器操作
根据现有基础设施和公司需求,存在多种工具:
- Terraform:基础设施供应;
- Ansible:从服务器的配置管理;
- Puppet:从服务器的配置管理;
- Salt:从服务器的配置管理。
监控和警报
监视和警报工具使您能够对基础架构有一个概览,以解决出现的问题并提高性能。
开源Prometheus应用程序和Grafana服务允许您监控 Kubernetes 集群。通过耦合三个工具,ELK(Elasticsearch、Logstash 和 Kibana)是一个强大的日志分析解决方案。您可以单独发挥每个工具的性能并使其适应您的需求:Logstash 用于规范化/发送日志,Elasticsearch 用于存储,Kibana 用于可视化。ELK 允许进行日志分析(取证)和聚合(仪表板)。
项目管理工具
要进行软件的开发,依靠 Devops 团队中通用的项目管理工具似乎是必不可少的。
Jira是一种敏捷项目管理工具,可帮助规划、跟踪和管理软件开发项目。使用 Jira,开发团队的每个成员都可以跟踪项目的进度并设置 sprint 优先级。
另一方面,Trello因其在管理项目的各种任务方面的直观性和简单性而脱颖而出。
秘密管理
随着对更高效安全的需求,新的秘密管理工具出现了,例如Vault。Vault 允许静态和动态组织秘密。
Secrets,Kubernetes 秘密管理服务是 Vault 的替代品。