什么是 DevOps?
https://aws.amazon.com/cn/devops/what-is-devops/
DevOps 模式定义
DevOps 集文化理念、实践和工具于一身,可以提高组织高速交付应用程序和服务的能力。
DevOps 的工作原理
在 DevOps 模式下,开发团队和运营团队都不再是“孤立”的团队。有时,这两个团队会合为一个团队,他们的工程师会在应用程序的整个生命周期(从开发测试到部署再到运营)内相互协作,开发出一系列不限于单一职能的技能。
在一些 DevOps 模式下,质保和安全团队也会与开发和运营团队更紧密地结合在一起,贯穿应用程序的整个生命周期。当安全是所有 DevOps 团队成员的工作重心时,这有时被称为“DevSecOps”。
他们使用能够帮助其快速可靠地操作和发展应用程序的技术体系和工具。这些工具还可以帮助工程师独立完成通常需要其他团队协作才能完成的任务(例如部署代码或预置基础设施),从而进一步提高团队的工作速度。
DevOps 的优势
- 速度
- 例如,微服务和持续交付能够让团队充分掌控服务,然后更快速地发布更新。
- 快速交付
- 持续集成和持续交付是自动执行软件发布流程(从构建到部署)的两项实践经验。
- 可靠性
- 使用持续集成和持续交付等实践经验来测试每次变更是否安全以及能够正常运行。进行监控和记录实践经验能够帮助您实时了解当前的性能。
- 规模
- 例如,基础设施即代码能够帮助您以一种可重复且更有效的方式来管理部署、测试和生产环境。
- 增强合作
- 开发人员和运营团队密切合作,共同承担诸多责任,并将各自的工作流程相互融合。
- 安全性
如何采用 DevOps 模式
DevOps 的文化理念
简单来说,DevOps 的宗旨就是消除两个传统上孤立的团队(开发团队和运营团队)之间的壁垒。
有些组织甚至没有独立的开发团队和运营团队,工程师可能身兼两职。利用 DevOps,这两个团队可以携手合作,共同提高开发人员的生产力,同时增强运营的可靠性。他们力求频繁沟通、提高效率,并改善客户服务的质量。他们能够完全掌控自己的服务,并且经常越过自己的既定角色或职能的传统工作范畴,思考最终用户的需求以及解决这些需求。
质保和安全团队也可以与这两个团队紧密协作。凡是采用 DevOps 模式的组织,无论组织结构如何,参与团队都会将整个开发和基础设施生命周期视为己任。
DevOps 实践说明
一个基本实践经验就是要频繁地进行小规模更新。这是组织能为客户快速提供创新的有效方式。
此外,组织还可以使用微服务架构来提升应用程序的灵活性,从而加快创新步伐。
但是,微服务与较高的发布频率相结合会导致部署量大幅度增加,可能会带来运营挑战。因此,持续集成和持续交付等 DevOps 实践经验有助于解决这些问题,让组织能够以安全可靠的方式快速交付。
与基础设施即代码和配置管理一样,基础设施自动化实践经验也有助于维持计算资源的弹性和对频繁变更的适应性。
此外,进行监控和记录这一实践经验可帮助工程师追踪应用程序和基础设施的性能,以便他们快速应对出现的问题。
DevOps 实践经验
1. 持续集成 CI
采用持续集成时,开发人员会定期将他们的代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。持续集成的主要目标是更快发现并解决错误,提高软件质量,并缩短验证和发布新软件更新所需的时间。
2. 持续交付 CD
采用持续交付时,系统会对代码变更自动进行构建和测试,并为发布到生产环境做好准备。
持续交付可以在构建阶段后将所有代码变更都部署到测试环境和/或生产环境中,从而实现对持续集成的扩展。当持续交付得以正确实施时,开发人员将始终能够获得一个已通过标准化测试流程的部署就绪型构建工件。
3. 微服务
微服务架构是一种将单个应用程序构建为一系列小服务的设计方法。其中每个服务均按各自的流程运行,并利用一种轻型机制(通常为基于 HTTP 的应用程序编程接口 (API))通过一个明确定义的接口与其他服务进行通信。
4. 基础设施即代码
基础设施通过代码和软件部署技术(例如版本控制和持续集成)得以预置和管理。
借助云的 API 驱动型模式,开发人员和系统管理员能够以编程方式与基础设施进行大规模互动,而无需手动设置和配置资源。
配置管理
开发人员和系统管理员使用代码将操作系统和主机配置、操作性任务等自动化。代码的使用实现了配置变更的可重复性和标准化。它将开发人员和系统管理员从手动配置操作系统、系统应用程序或服务器软件的任务中解放出来。策略即代码
由于基础设施及其配置全都通过云进行代码编写,所以组织可以动态地大规模监控与实现合规性。因此,组织可以自动跟踪、验证和重新配置由代码描述的基础设施。
5. 监控和日志记录
通过对应用程序和基础设施生成的数据进行采集、分类和分析,组织可以了解变更或更新如何影响用户,同时深入了解出现问题或意外变故的根本原因。此外,创建警报或对这些数据执行实时分析也能帮助组织更主动地监控其服务。
6. 沟通与合作
DevOps 和 AWS
https://aws.amazon.com/cn/devops/
AWS 可以提供一套灵活的服务,让各家公司利用 AWS 和 DevOps 实践经验来更加快速、可靠地构建和交付产品。
这些服务可以简化基础设施的预置和管理、应用程序代码的部署、软件发布流程的自动化以及应用程序和基础设施性能的监控。
AWS 提供的 DevOps 工具
1. 持续集成和持续交付
AWS 开发人员工具可以帮助您安全地对应用程序的源代码进行存储和版本控制,还可帮助您自动构建、测试应用程序并将其部署至 AWS 或本地环境。
您可以通过 AWS CodePipeline 来构建一个组合或分别使用 AWS CodeBuild、AWS CodeDeploy 和各种其他工具的持续集成或持续交付工作流。
- 软件发布工作流 AWS CodePipeline
- https://aws.amazon.com/cn/codepipeline/
-
AWS CodePipeline 是一种持续集成与持续交付服务,可以实现快速而可靠的应用程序和基础设施更新。每次更改代码时,CodePipeline 都会根据您定义的发布流程模型来构建、测试和部署您的代码。这使您能够快速而可靠地提供各种功能和更新。
-
构建与测试代码 AWS CodeBuild
- https://aws.amazon.com/cn/codebuild/
- AWS CodeBuild 是一项完全托管的生成服务,可编译源代码、运行测试以及生成可供部署的软件包。
-
部署自动化 AWS CodeDeploy
- https://aws.amazon.com/cn/codedeploy/
- AWS CodeDeploy 可将代码自动部署至任何实例,包括 Amazon EC2 实例和本地服务器。借助 AWS CodeDeploy,您可以更轻松地快速推出新功能、避免在应用程序部署过程中出现停机,并简化应用程序的更新工作。
-
统一 CI/CD 项目 AWS CodeStar
- https://aws.amazon.com/cn/codestar/
- AWS CodeStar 可以让您在 AWS 上快速开发、构建和部署应用程序。AWS CodeStar 提供一个统一用户界面,您可以借此在一个位置轻松管理您的软件开发活动。
2. 微服务
使用容器或无服务器计算来构建和部署微服务架构。
-
生产 Docker 平台 Amazon Elastic Container Service
- https://aws.amazon.com/cn/ecs/
-
Amazon Elastic Container Service (ECS) 是一项高度可扩展的高性能容器管理服务,支持 Docker 容器,并让您能够在托管的 Amazon EC2 实例群集上轻松运行应用程序。
-
无服务器计算 AWS Lambda
- https://aws.amazon.com/cn/lambda/
- AWS Lambda 让您无需预置或管理服务器即可运行代码。借助 Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,而且全完全无需管理。只需上传您的代码,Lambda 就会处理运行和扩展代码所需的一切工作并保证高可用性。
3. 基础设施即代码
使用代码和模板来预置、配置和管理您的 AWS 基础设施资源。监控并实现基础设施合规性。
-
模板化的基础设施预置 AWS CloudFormation
- https://aws.amazon.com/cn/cloudformation/
-
AWS CloudFormation 向开发人员和系统管理员提供了一种用于创建和管理一批相关 AWS 资源的简便方法,并通过有序且可预测的方式对其进行预置和更新。您可以使用 AWS CloudFormation 的示例模板,也可以创建自己的模板。
-
Chef 配置管理 AWS OpsWorks
- https://aws.amazon.com/cn/opsworks/
- AWS OpsWorks 是一项配置管理服务,其使用的 Chef 自动化平台可以将服务器配置作为代码来处理。OpsWorks 利用 Chef 来自动处理您在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上或本地计算环境中的服务器的配置、部署和托管工作。
-
配置管理 Amazon EC2 Systems Manager
- https://aws.amazon.com/cn/systems-manager/
- Amazon EC2 Systems Manager 是一项管理服务,可以帮助您自动收集软件清单、应用操作系统补丁、创建系统映像以及配置 Windows 和 Linux 操作系统。
-
策略即代码 AWS Config
- https://aws.amazon.com/cn/config/
- AWS Config 是一项完全托管型服务,可为您提供 AWS 资源库存、配置历史记录和配置更改通知,以增强安全性和方便管理。
4. 监控和日志记录
-
云和网络监控 Amazon CloudWatch
- https://aws.amazon.com/cn/cloudwatch/
- Amazon CloudWatch 是一项针对 AWS 云资源和在 AWS 上运行的应用程序的监控服务。您可以使用 Amazon CloudWatch 来收集和跟踪各项指标、收集和监控日志文件、设置警报以及自动应对 AWS 资源的更改。
-
分布式跟踪 AWS X-Ray
- https://aws.amazon.com/cn/xray/
-
AWS X-Ray 可以帮助开发人员分析与调试分布式生产应用程序,例如使用微服务架构构建的应用程序。借助 X-Ray,您可以了解应用程序及其底层服务的执行方式,从而识别导致性能问题和错误的根本原因并将其排除。
-
活动和 API 使用情况跟踪 AWS CloudTrail
- https://aws.amazon.com/cn/cloudtrail/
-
AWS CloudTrail 是一种记录账户的 AWS API 调用,并向您发送日志文件的 Web 服务。记录的信息包括 API 调用者的身份、API 调用的时间、API 调用者的源 IP 地址、请求参数以及 AWS 服务返回的响应元素。
5. 平台即服务
无需预置和管理基础设施与应用程序体系即可部署 Web 应用程序。
- 运行和管理 Web 应用 AWS Elastic Beanstalk
- https://aws.amazon.com/cn/elasticbeanstalk/
- AWS Elastic Beanstalk 是一项易于使用的服务,用于在熟悉的服务器(例如 Apache 、Nginx、Passenger 和 IIS )上部署和扩展使用 Java、.NET、PHP、Node.js、Python、Ruby、GO 和 Docker 开发的 Web 应用程序和服务。
您只需上传代码,Elastic Beanstalk 即可自动处理包括容量预置、负载均衡、自动扩展和应用程序运行状况监控在内的部署工作。同时,您能够完全控制为应用程序提供支持的 AWS 资源,并可以随时访问底层资源。
6. 版本控制
- 私有 Git 托管 AWS CodeCommit
- https://aws.amazon.com/cn/codecommit/
- AWS CodeCommit 是一种完全托管的源代码控制服务,这项服务使公司能够轻松地托管安全且高度可扩展的私有 Git 存储库。您可以使用 CodeCommit 将来自源代码的任何数据安全存储为二进制文件,而且它可以无缝兼容您现有的 Git 工具。