从微软AzureDevOps看实施基于DevOps全流程软件交付

Azure DevOps

Azure DevOps 汇集人员、流程和技术,实现软件交付自动化,为用户提供持续的价值。借助 Azure DevOps 解决方案,帮助您全流程构建你的软件产品,它使流程和产品更可靠。

  • Azure DevOps帮助你用敏捷工具计划项目;

  • 用Git管理你的代码;

  • 通过CI/CD最佳实践部署你的代码;

  • 在你开发活动过程中获取全量跟踪与可视化;

Azure DevOps的定义是什么?

DevOps 这种做法在以下五个核心方面统一开发和 IT 团队中的人员、流程和技术:

  • 计划和跟踪
  • 开发
  • 构建和测试
  • 交付
  • 监视和运营。

实施 DevOps 时,开发团队、IT 运营团队、质量工程团队和安全团队密切合作,打破以往孤立的做法。各专业团队之间的协调和协作得到改善,缩短了将更改提交到系统与将更改投入到生产之间的时间。它还可确保此过程符合安全性和可靠性标准。

结果:产品质量改善、交付速度加快、客户满意度提升。

Azure DevOps如何实施DevOps模型?

规划和跟踪

使用敏捷过程(scrum)和看板等实践来识别和跟踪工作。直观地跟踪工作时,利益干系人可清楚地了解开发团队的能力,并更好地规划任务并设置优先级,避免发生紧急情况。

开发

使用 Git 等新式版本控制系统编写代码,将其持续安全地集成到主分支。某项功能完成后,开发人员会提交一个拉取请求,得到批准后,更改将合并到主分支,而旧分支将被删除。

构建和测试

将代码签入 Git 或其他版本控制系统可启动自动构建过程。该代码经过测试和验证,确保在开发初期发现 bug,修复成本低。这一自动执行生成和测试的过程称为持续集成 (CI)。生产可部署项目是成功生成和集成的结果,可实现持续交付 (CD),即随时部署到生产的功能。

部署

经过测试和验证后,可将每项更改部署到生产环境中。通过使用持续交付做法,最终部署到生产是一个人工控制的业务决策。

通过持续部署,可自动执行从代码提交到生产的全过程。自动部署代码后,客户便可使用新功能。

监视和运营

投入生产后,监视应用的性能和使用模式的信息。通过获取及时丰富的诊断数据,团队可快速处理,实现系统的高可用性。解决用户问题并收集数据,为未来开发的业务决策提供信息。借助使用“基础结构即代码”和“策略即代码”的自动化策略,确保部署到生产的应用使用符合安全且最佳做法的所需状态配置。

Azure DevOps简化、加速并改善云开发

持续集成 (CI)

利用持续集成改善软件开发质量、加快开发速度。如果使用 Azure DevOps 或 Jenkins 在云端构建应用并部署到 Azure,每次提交代码时都将自动进行构建和测试,从而更快检测到 bug。

持续交付 (CD)

通过持续交付,确保代码和基础结构随时可以部署到生产环境。持续集成与基础结构即代码 (IaC) 的组合,不仅可以帮助你实现完全一致的部署,还让您随时都可以自信地在生产环境中进行手动部署。

使用 CI/CD 实现持续部署

如果 CI/CD 测试成功,则可通过持续部署自动执行从代码提交到生产的整个过程。如果将 CI/CD 做法与监视工具配合使用,你将能够尽可能快地将准备就绪的功能安全地提供给客户。

改善可靠性和可重复性

使用 IaC 自动预配和配置环境。以声明性代码的形式捕获环境定义,如 JSON 或 YAML。然后,使用 DevOps 工具(包括 Azure 资源管理器、Terraform 或 Ansible)以可靠的方式预配完全相同的环境。

获取可操作见解

使用 Azure Log Analytics 和 Azure Monitor 监视基础结构运行状况,并集成至现有的仪表板,如 Grafana 或 Kibana。Azure Application Insights 通过应用程序性能管理和即时分析提供可操作见解。

加强符合性和安全性

你可以使用 Chef Automate 或 Azure Policy 等 DevOps 工具管理预配的基础结构和应用程序,从而确保符合性。在此基础上使用 Azure 安全中心等服务,可以更好地屏蔽风险,并快速找到和消除漏洞。

Azure DevOps是怎么做的(实践)

Continuous Integration(持续集成)

持续集成驱动持续代码合并与测试,这样可以尽早的发现bug,另外也可以减少因为代码合并问题而浪费大量时间,也可以快速的反馈给开发团队。

Continuous Delivery(持续交付)

测试环境与产品环境的持续交付可以帮助组织快速修复bug并且快速响应业务需求。

Version Control(版本控制)

版本控制,通常使用git,使团队能够在任何地方进行有效的沟通,进行每日的开发活动。也可以集成其他工具达到开发的监督。

Agile planning and lean project management(敏捷计划与精益项目管理)

采用敏捷计划与精益的项目管理技巧。把工作分成若干个sprints,管理团队的能力,帮助团队快速适应变化的业务需求。看板中定义的“Done”在DevOps定义是“一个带有遥测功能的可工作的软件且符合商业目的”。

Monitoring and Logging(监控与日志)

Monitoring and Logging of running applications including production environments for application health as well as customer usage, helps organizations form a hypothesis and quickly validate or disprove strategies. Rich data is captured and stored in various logging formats.

监控与记录生产环境的日志,帮助组织快速验证策略,丰富的数据资产。

Public and Hybrid Clouds(共有云与混合云)

共有用与混合云变得跟容易。云计算消除了传统的瓶颈,帮助基础架构商品化。无论你是试用IaaS或者PaaS都可以获取到超预期的产品体验。云计算可以给你没有限制的数据中心。

Infrastructure as Code (IaC基础架构即代码)

基础架构即代码实践可以使自动化创建与验证部署资源,帮助您交付一个安全可靠的平台。

Microservices(微服务)

微服务架构是分割业务场景成为更小的可复用的服务,采用协议接口进行通信。微服务架构可以是扩展性更好且更效率更高。

Containers(容器技术)

Containers are the next evolution in virtualization. They are much more lightweight than virtual machines, allow much faster hydration, and can be easily configured from files.

容器是虚拟化技术的演进。它们比虚拟机更加轻量,更快,可以很容易从文件中配置(如dockerfile)

解决方案及其体系结构

使用 Jenkins 和 Azure Web 应用的 Java CI/CD

借助 Azure 应用服务,你可以快速轻松地使用 Java、Node、PHP 或 ASP.NET 来创建 Web 应用,并使用 Docker 支持自定义语言运行时。持续集成和持续部署 (CI/CD) 管道可将每一个更改自动推送到 Azure 应用服务,让你更快地为客户创造价值。

工作流程:

  1. 更改应用程序源代码
  2. 将代码提交到 GitHub
  3. Jenkins 持续集成触发器
  4. Jenkins 触发生成作业,将 Azure 容器实例用作动态生成代理
  5. Jenkins 在 Azure 存储中生成和存储项目
  6. Jenkins 将 Java 应用程序部署到由 Azure Database for MySQL 支持的 Azure Web 应用
  7. Azure App Insights 提供有关应用程序性能的指标
  8. 监视应用程序并进行改进

在 Azure 虚拟体系结构中使用 Jenkins 和 Terraform 的不可变基础结构 CI/CD 概述

Azure 是用于托管运行 Windows 或 Linux 的虚拟机的世界级云。无论使用 Java、Node.js 还是 PHP 来开发应用程序,都需要持续集成和持续部署 (CI/CD) 管道自动将更改推送到这些虚拟机。

工作流程:

  1. 更改应用程序源代码。
  2. 将代码提交到 GitHub。
  3. Jenkins 持续集成触发器。
  4. Jenkins 触发 Packer 映像生成,创建一个 VM,并使用 Azure 托管磁盘将其存储为 VM 映像。
  5. Jenkins 触发 Terraform,使用 Azure 托管磁盘 VM 映像预配新的虚拟机规模集。
  6. Azure Log Analytics 收集并分析日志。
  7. 监视应用程序并进行改进。

在 Azure Kubernetes 服务 (AKS) 中使用 Jenkins 和 Kubernetes 实现容器 CI/CD

使用容器,可轻松地持续生成和部署应用程序。使用 Azure Kubernetes 服务 (AKS) 协调这些容器的部署,获得可复制、可管理的容器群集。通过设置持续生成来生成容器映像和业务流程,可更快更可靠地进行部署。

工作流程:

  1. 更改应用程序源代码。
  2. 将代码提交到 GitHub。
  3. Jenkins 持续集成触发器。
  4. Jenkins 触发生成作业,将 Azure Kubernetes 服务 (AKS) 用作动态生成代理。
  5. Jenkins 生成 Docker 容器并将其推送到 Azure 容器注册表。
  6. Jenkins 将新的容器化应用部署到 Kubernetes on Azure。
  7. 容器服务 (AKS),由 Azure Cosmos DB 支持。
  8. Grafana 通过 Azure Monitor 显示经过可视化处理的基础架构和应用程序指标。
  9. 监视应用程序并进行改进。

Azure DevOps全流程软件交付

Azure DevOps概览

开始使用Azure DevOps

构建部署任何平台、云、app store

集成分析与社交工具

项目概览

项目仪表盘

高度可定制仪表盘,通过拖拽方式实现。

Wiki

项目wiki

项目wiki

Azure Boards(看板)

跨团队规划、跟踪以及讨论工作。

使用看板、积压工作 (backlog)、团队仪表板和自定义报表跟踪工作。

特征

  • 努力使想法变成现实

跟踪每个开发阶段的所有想法,并确保团队了解与工作项直接关联的所有代码更改。

  • Scrum 准备就绪

使用内置 Scrum 板和规划工具帮助团队运行冲刺 (sprint)、站会和计划会议。

  • 为见解而打造

使用强大的分析工具和仪表板小组件来获取对项目运行状况和状态的新见解。

创建项目

创建项目

配置项目主页

配置项目

配置项目主页

任务管理

任务管理

看板

看板

Backlog

backlog

Sprints管理

sprints管理

Queries

自定义查询面板

查询面板

Azure Repos(代码仓库)

为项目获取无限制、云托管的专用 Git 存储库。

免费专用 Git 存储库、拉取请求和代码搜索

特点:

  • 支持任何 Git 客户端

从任何 IDE、编辑器或 Git 客户端安全地连接并将代码推送到 Git repos。

  • Webhook 和 API 集成

从市场添加验证和扩展,或者使用 Webhook 和 REST API 生成自己的验证和扩展。

  • 语义代码搜索

使用能够理解类和变量的代码感知搜索快速找到所需内容。

语义代码搜索

Azure Pipeline(流水线)

CI/CD that works with any language, platform, and cloud. Connect to GitHub or any Git repository and deploy continuously.

持续生成、测试并部署到任何平台和云

使用 Pipelines 自动执行生成和部署,减少花费在操作上的时间,将更多的时间用于创造。

使用 Pipelines 更快生成和部署

特点

  • 任何语言,任何平台

生成、测试和部署 Node.js、Python、Java、PHP、Ruby、C/C++、.NET、Android 和 iOS 应用。在 Linux、macOS 和 Windows 上并行运行。

  • 容器和 Kubernetes

轻松生成映像并将其推送到容器注册表,如 Docker 中心和 Azure 容器注册表。将容器部署到各主机或 Kubernetes。

  • 可扩展项

探索并实现广泛的社区生成的生成、测试和部署任务,以及从 Sack 到 SonarCloud 的数百个扩展。

  • 部署到任何云

实现软件持续交付 (CD) 到任何云,包括 Azure、AWS 和 GCP。可视化部署到任意数量的相互依赖阶段。

  • 最适合开源项目

确保每个开源项目的快速持续集成/持续交付 (CI/CD) 管道。为所有开源项目获取 10 个免费并行作业和无限制生成分钟数。

  • 高级工作流和功能

利用简单的生成链和多阶段生成。支持 YAML、测试集成、发布入口、报告等。

构建

screenshot

创建pipeline

pipeline

编辑pipeline

编辑pipeline

创建或者导入pipeline

导入pipeline

运行pipeline

运行pipeline

发布(部署)

发布

部署脚本,选择模板

库(library)

Use a variable group to store values that you want to make available across multiple build and release pipelines. Variable groups are defined and managed in the Library tab of the Pipelines hub.

使用变量组用户保存你在构建与部署的pipelines中要使用到的变变量,变量组的定于与管理在pipelines中的Library菜单中。

Task groups

Task groups用于封装一些列的任务,用于构建与发布。这样便于其他项目复用该任务组。

新建任务组

新建任务组

Deployments groups

Deployments group是一个逻辑的部署目的机器,例如:开发,测试,用户测试等

Azure Artifacts(工件库)

Maven, npm, and NuGet package feeds from public and private sources

与你的团队一起创建、托管和共享包

创建和共享来自公共和专用源的 Maven、npm 和 NuGet 包源 只需单击一次,即可将完全集成的包管理添加到持续集成/持续交付 (CI/CD) 管道中。与任意规模团队创建和共享来自公共和专用源的 Maven、npm 和 NuGet 包。

特点

  • 高效共享代码

在小型团队和大型企业中轻松共享代码。

  • 管理所有包类型

为 Maven、npm 和 NuGet 获取通用项目管理。

  • 将包添加到任意管道中

共享包并使用内置的 CI/CD、版本控制和测试。

添加包

Azure Test Plans(测试计划)

手动测试&探索测试

计划和探索测试解决方案

使用针对你的应用的计划和探索测试服务来提高代码质量。

测试计划

特点

  • 捕获丰富的数据

在执行测试时捕获丰富的方案数据,以便你对所发现的缺陷执行操作。

  • 跨 Web 或桌面的测试

通过跨桌面或 Web 应用程序执行测试来测试应用程序。

  • 获取端到端可跟踪性

针对情景和功能,利用端到端可跟踪性和质量。

Azure DevOps的门槛

Azure DevOps很好,很好用,很好看。但是,其门槛相对也比较高,并不是可以直接拿过来快速上手使用的,而需要经过系统的学习和了解。而且网络上资料比较少。

思维门槛

Azure DevOps来源于美国的微软,虽然系统功能强大,界面美观,但是其设计理念和设计思维,可能与国内大多数用户不见得完全对口味。比如,众多的配置项目,严格的逻辑关系,主动参与的理念等,对于希望上手即用,拿着键盘就开始干,事事需要上级催促的用户来说,Azure DevOps类系统,将会是一个挑战,受限是思维方面的。

技能门槛

跨过思维门槛之后,Azure DevOps的技能门槛,更多的像是一个弹性门槛,可以随着使用熟练程度和学习深入度的提升,得到快速改善。

Azure DevOps迭代速度非常块,且在国内,即便是软件团队中,也并非主流平台,所以中文的支持度不理想。而软件从业界对英文的要求,则相对比较普遍,所以Azure DevOps对于中文的支持程度,基本仅限于系统基本设置模块,实际高频使用的协同开发、进度管理等几乎处于零支持状态。

技能门槛 除语言这一关之外,Azure DevOps所提供的众多扩展插件,似乎又是另外一种隐形的门槛。虽然Azure DevOps系统本身已经非常强大,但是其扩展插件还可以让其变得更加灵活多变。这些插件可以对其进行扩展和连接,也让其变得更加复杂。要想发挥扩展插件的作用,就需要很好的了解Azure DevOps本身和插件的功能以及使用方法。

附录

Azure DevOps共有用版本体验入口

https://azure.microsoft.com/zh-cn/services/devops/

Azure DevOps简单介绍学习视频

https://channel9.msdn.com/Events/Microsoft-Azure/Azure-DevOps-Launch-2018/A100

转载于:https://my.oschina.net/socoolfj/blog/3044174

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值