你的位置:首页 > ASP.net教程

[ASP.net教程](视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)


本文是《快速创建网站》系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文。访问本系列目录,请点击:http://anb.io/blog/tag/wordpress-on-azure/

1. 网站管理平台WordPress和云计算平台Azure简介 (6分钟视频 )
2.1 在Azure上创建网站及网站运行机制 (13分钟视频)
2.2 域名绑定操作和Azure负载均衡机制 (12分钟视频)
2.3 WordPress 初始化和网站管理功能 (11分钟视频)
3.1 WordPress 数据导入 (12分钟视频)
3.2 WordPress 多站点支持和Azure在线代码编辑器 (14分钟视频)
3.3 WordPress 多语言支持 Multisite Language Switcher (15分钟视频)
3.4 WordPress 主题安装和配置,美化你的网站 (15分钟视频)
4.1 Visual Studio Online (VSO)在线开发平台 (11分钟视频)
4.2 使用 Visual Studio Online 和 Azure 构建 DevOps环境 (13分钟视频)

经过前三部分的内容(视频),我相信大家对如何使用云计算平台和WordPress来创建一个博客站点已经有了较为完整的认识。在第四部分中,我将为开发人员介绍任何使用Visual Studio Online和Azure来构建一套完整的在线开发平台,让你不需要任何的本地环境就可以完成项目管理,需求管理,任务管理,代码管理,自动测试和部署;这样的系统在ALM(应用生命周期管理)中叫做开发运维一体化(DevOps)系统。

请配合视频阅读本文

为什么我们需要开发运维一体化(DevOps)系统?

从事软件开发年头越多的人越有这样一个共识,就是软件开发无法依靠前期的计划和完整的需求来保证质量和满足用户。这是软件开发与传统制造业最大的区别。其实,就算是在软件行业内,仍然有很多人对此不认可,觉得开发人员受过专业训练,我们又为项目配备了经验丰富的需求分析人员和项目管理人员,没有理由不成功。都是在制造产品,为什么制造软件不能像制造汽车,电视机一样,依靠详细的生产计划,按照明确的时间表交付呢?

其实,这里面大家忽略了一个最基本的事实。汽车/电视等工业化产品都是一次设计,多次重复生产的产品;在汽车/电视的设计过程中,我们仍然是无法充分预知设计过程的所有细节和交付时间,因为这是一个“探索”过程,需要设计人员和工程师依靠自己的经验和知识创造出一个不存在的产品,而且尽量的预测,确保交付的产品可以满足用户的要求。一旦进入生产过程,这类产品的所有的零件,装配方式都不会再发生改变,这样我们才能快速重复的生产。而软件产品则永远是处于类似汽车/电视机的设计过程,而不存在重复生产过程(也许有,但是你只需要复制/粘贴就可以完成)。所以,按照对汽车这类产品的交付方式来预期软件产品的交付是完全错误,不符合实际的;这就好像每个人都要求大众给每个人单独设计一台独一无二的汽车,还要保证按时交付一个道理。

大家有这样误解的另外一个原因是我们的教育,大学里面的所谓软件工程所教授的都是设计-开发-测试-交付,这样类似流水线(软件工程中叫做瀑布模式)的方式。让我们从离开学校的那一刻起就有这样的误解。

既然我们没有办法预测软件的交付时间,也无法在交付之前预测是否可以满足用户的需求;好像我们就没有必要做软件了。因为按时交付,满足需求是软件存在的价值。我们必须产出这样的价值,否则大家都没饭吃了。怎么办?敏捷,迭代,试错;这些答案都对,只是出于不同人群对这个问题的经验和认知而产出的不同词汇而已。

下图中展示的是使用瀑布模式和敏捷开发模式时,对于复杂项目成功可能性的不同影响。

其实我们只要记住一个字:快!

• 快速的完成开发,测试,交付给用户使用;
• 快速的获取用户反馈,并在下一个版本中调整软件功能;
• 再,快速的完成开发,测试,交付给用户使用;

下图展示的是开发/运维之间的迭代关系,只有加快这个迭代速度,才能让我们的软件产品尽快的接近用户的需求。

这就是为什么我们需要开发运维一体化(DevOps),因为只有把开发系统和运维系统打通,我们才能快起来,我们才能让开发人员直接,准确的获取用户的反馈;这些反馈可能是运维系统提供的监控数据,也可能是客户直接反馈的问题,或者是其他社交网络/论坛上的消息,总之任何可以帮助开发人员判断用户需求的信息都是需要反馈的内容。

从这个角度来说:其实我们应该叫它 开发运营一体化,但是能过做到这一点可能太困难了,我们暂且还是谈开发运维一体化吧。

Visual Studio Online在线开发平台

VSO的前身是tfspreview.com,也就是在线的Team Foundation Server (TFS)版本,由微软运营,提供云端的开发管理能力。VSO上主要包括以下功能:

  • 工作项管理:工作项代表在开发过程中需要跟踪的各种需求,任务,测试,反馈,Bug,部署等工作事项。可以理解为一个工单系统。每个工作项有一个独立的类型,代表以上某一类的工作事项,通过查询(列表)来访问和管理。
  • 流程管理:每个工作项都配备一定的工作流,由工作项的状态及转换来进行控制,配合一定的权限管理,可以帮助我们组织这些工作流程。按照不同团队的工作模式,提供敏捷,Scrum和CMMI三种不同的模版可供使用。
  • 源代码管理:提供代码的存储,变更跟踪,比较,分支合并和IDE集成能力。支持集中式(CVCS,TFSVC)和分布式(DVCS,Git)两种不同模式的管理方式。也对代码评审提供了支持。
  • 测试管理:支持测试计划,测试用例,测试执行,自动化测试和压力测试支持。
  • 构建管理:提供自动化的代码编译,自动化测试,打包和部署能力。
  • 部署管理:提供目标环境的编排,串接和审核能力;同时支持针对云端和本地的环境部署能力。
  • 第三方系统集成:通过REST API和Service Hook提供与第三方系统的交互能力。
  • 监控和分析:提供应用运行情况,错误收集和用户行为分析能力(这个功能已经转移到了Azure中)。

以上可以看到,这些功能基本上涵盖了我们在开发过程中需要的所有功能。另外,VSO还对主流的IDE提供了很好的集成,如 Visual Studio和Eclipse。

跨平台支持

对于Visual Studio的集成当然是毋庸置疑的,所以以下我仅列出对Eclipse的Java项目支持

你可以看到,使用Team Explorer Everywhere (TEE) (点击下载)插件,你可以使用Eclipse连接到VSO的项目,使用Git代码库,访问工作项,也可以配置云端的自动化编译和打包。

具体操作演示大家可以参考这段视频:
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/219

对于使用Mac进行iOS开发的同学来说,你也可以使用XCode里面所提供的Git集成,来配合VSO进行源代码管理,具体操作请看这里:
https://www.visualstudio.com/en-us/get-started/share-your-xcode-projects-vs.aspx

后续我也会单独对这些功能录制一些视频供大家学习。

敏捷开发支持

敏捷开发已经是软件开发行业不可逆转的趋势,在VSO也对敏捷开发提供了很好的支持。比如下面的Kanban和Sprint白斑的支持。

这是我用来规划本博客内容和后台开发的Kanban。

这是之前的工作项跟踪出来的累计流图

这是本博客当前迭代的Sprint白板(你可以看到当前这篇博客正处于进行中状态)

当然,以上只是VSO中对于敏捷开发支持的冰山一角,后续我会在专门介绍ALM的文章中详细介绍。

在本篇博客的视频中,我演示了如何将Azure中的WordPress站点的后台代码推送到VSO的Git代码库中,并和相关的任务进行关联。这样我们就可以在开发过程中使用Azure中的在线IDE作为开发环境,使用VSO作为开发平台。

下图中你可以看到在过去的2周我所进行的改动都已经记录在了VSO的代码库历史纪录中:

下图中你可以看到我在配置多站点支持时所作的改动,与任务进行了关联,同时可以直接进行代码评审意见的添加:

免费的云端开发平台

希望本文可以帮助你对Visual Studio Online有初步的认识,当然最好的方式仍然是立即注册一个账号。对于独立开发者和小于5个人的开发团队,你可以完全免费的使用VSO所提供的所有功能,对项目数量,代码量,工作项数量没有任何限制;如果你希望让一些项目相关成员也可以看到你团队的进展,可以将他们添加为Stakeholder账号,这种账号没有数量限制,可以任意添加多个,只要他们不访问代码库即可。

点击下图即可开始注册 http://www.visualstudio.com

在下一节(4.2)中,我讲介绍如何将VSO上面的内容和你本地的开发环境进行集成,虽然我们可以完全在云端完成所有的开发工作,但如果你喜欢使用Visual Studio, Sublime,Notepad++或者任何其他的编辑器/IDE,那么一个本地的环境仍然是很有用的。

欢迎关注本博客微信订阅号 anb-io。每周推送内容,有技术也有生活,和你一起做一个有情怀的程序猿。