本文是《快速创建网站》系列的第9篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文。

访问本系列目录,请点击:http://devopshub.cn/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 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)(11分钟视频)
4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术 (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。每周推送内容,有技术也有生活,和你一起做一个有情怀的程序猿。

(视频)《快速创建网站》 4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)的更多相关文章

  1. (视频)《快速创建网站》 4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术

    本文是<快速创建网站>系列的第10篇(完结篇),如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文.访问本系列目录,请点击:http://devopshub.c ...

  2. (视频) 《快速创建网站》3.4 网站改版3分钟搞定 - WordPress主题安装和备份

    本文是<快速创建网站>系列的第8篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  3. (视频)《快速创建网站》 3.3 国际化高大上 - WordPress多语言支持

    本文是<快速创建网站>系列的第7篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  4. (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定

    本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  5. (视频) 《快速创建网站》 3.1 WordPress 数据导入

    本文是<快速创建网站>系列的第5篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  6. (视频) 《快速创建网站》 2.3 WordPress初始化和功能简介

    本文是<快速创建网站>系列的第4篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  7. (视频) 《快速创建网站》2.1 在Azure上创建网站及网站运行机制

    现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http:// ...

  8. (视频) 《快速创建网站》1. 网站管理平台WordPress & 微软Azure 云计算简介

    网站并不神秘,过节了,在家闲的没事的,自己建个网站玩玩吧.每段视频不超过15分钟,地铁/公交/睡前/醒来看一段,几天之后变身建站专家,找老板加薪去! 在普通人眼里,创建网站是专业开发人员和IT工程师才 ...

  9. (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定

    本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 1. 网站管理平台WordPress和云计算平台Azure简介 (6分 ...

随机推荐

  1. C#编程总结(三)线程同步

    C#编程总结(三)线程同步 在应用程序中使用多个线程的一个好处是每个线程都可以异步执行.对于 Windows 应用程序,耗时的任务可以在后台执行,而使应用程序窗口和控件保持响应.对于服务器应用程序,多 ...

  2. Web Api中的get传值和post传值

    GET 方式 get方式传参 我们一般用于获取数据做条件筛选,也就是 “查” 1.无参 var look = function () { $.ajax({ type: "GET", ...

  3. Eclipse保存文件时自动格式化代码

    实现效果:Ctrl+S会自动格式化并保存代码. 应用上图所示效果之后,在每次对Eclipse保存的时候都会实现自动格式化代码. 1. Fomated All lines,格式化该文件的所有代码:还是 ...

  4. Scalaz(24)- 泛函数据结构: Tree-数据游览及维护

    上节我们讨论了Zipper-串形不可变集合(immutable sequential collection)游标,在串形集合中左右游走及元素维护操作.这篇我们谈谈Tree.在电子商务应用中对于xml, ...

  5. ahjesus自定义隐式转换和显示转换

    implicit    关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 参考戳此 explicit    ...

  6. PhantomJS快速入门

    本文简要介绍了PhantomJS的相关基础知识点,主要包括PhantomJS的介绍.下载与安装.HelloWorld程序.核心模块介绍等.由于鄙人才疏学浅,难免有疏漏之处,欢迎指正交流. 1.Phan ...

  7. 更新整理本人所有博文中提供的代码与工具(Java,2013.08)

    为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. Java 1.<高效 Java Web 应用开发框架 JessMA v3. ...

  8. C#操作Excel的函数

    对于Excel的数据处理功能,大家都已经了解. 我们经常需要将数据导入到Excel,或直接打开Excel文档,读写文件操作,这需要用到ExcelHelper类,有了这个类,这些操作大大的减少我们工作量 ...

  9. mousewheel

    判断鼠标往上还是往下滚动 html代码: <div class="div"> </div> css代码: .div{ position:absolute; ...

  10. Onsen UI – 新鲜出炉的 PhoneGap 界面框架

    Onsen UI 是一个基于元素自定义的 HTML5 UI 框架,用于构建你的移动前端.这个一个基于 Web 组件的概念的框架,让构建应用程序变得更加轻松.Onsen UI 专门针对 PhoneGap ...