《在Windows与.NET平台上的持续交付实践》(Continuous Delivery with Windows and .Net)(免费下载)是由Matthew Skelton与Chris O'Dell所编著的一本简短的书籍。对于在Windows与.NET环境中工作的开发者而言,本书可以说是由Jez Humble与Dave Farley所编著的《持续交付》(Continuous Delivery)这本书的一本非常实用的补充读物。

\\

本书在第一章及最后几章介绍了持续交付的理论基础以及它对组织的结构所带来的影响,但本书的主体部分还是专注于介绍各种工具,通过这些工具实现成功的持续交付实践。

\\

事实上,可以说本书最突出的优点就是为读者提供了一个一站式的资源集,使读者能够了解各种适合在Windows平台上使用的工具。正如本书的作者所指出的那样,“本书可以作为由Jez与Dave所编著的那本著作的补遗,目的是鼓励更多在Windows及.NET平台上进行工作的团队实施持续交付实践。”本书的第二至第六章涵盖了持续交付中必不可缺的各种工程实践,包括:版本控制、持续集成、部署管道、监控及基础设施的自动化。

\\

在本书的各个部分,你将看到真实世界用户案例的实际感想,这让本书的各种推荐实践变得更有说服力。这些案例包括LateRooms.com通过部署管道的实施实现了高达700倍的部署周期改进,以及JustGiving用于批发业务的基础设施自动化使其能够满足峰值时期的需求。

\\

第二章介绍了各种版本控制工具与实践。读者对于Windows世界中最常见的工具,例如Git或TFS将有一个初步的了解。作者指出了一些方式,可避免长期存在的分支,以及持续集成实践中的某些令人深恶痛绝的做法,例如特性的开关。这一章的最后对于包管理提出了一些建议,与Linux平台相比,这方面的实践对于Windows平台来说还比较新颖。第三章则为持续集成与构建自动化工具列举了一份非常详尽的清单,同时也提出了一些特定于.NET平台的建议,帮助读者设置.NET项目的结构(例如:“为每个组件或服务创建一个.sln文件”)。第四章的重点在于部署管道,其中描述了一些常见的部署技术,例如蓝/绿部署和金丝雀部署、解耦文件的交付以及特性的激活,并介绍了如何实现数据库变更的自动化以及数据迁移。接下来,本书专门用一章的内容介绍了监控方面的内容,作者首先鼓励读者不要将监控工作单纯地理解为对性能计数器结果的收集(尽管在Windows平台上这是获取各项指标最常见的做法),并采用其他监控与应用性能管理方式,实现日志的聚合,让开发者能够对指标进行收集。最后,作者对Windows平台上的基础设施自动化模式以及最佳实践进行了描述,与Linux平台上的基础设施自动化相比,读者仍然需要进行心态以及实现方式方面的转变。

\\

InfoQ与本书的作者进行了一次访谈,希望从访谈中更多地了解在Windows与.NET平台上实施持续交付实践的现状。

\\

InfoQ:你们为什么觉得有必要编写这样一本书呢?

\\

\

Chris O'Dell:有一种已经被普遍接受的观点,即持续交付只适用于Linux平台,而在.NET平台上无法支持这种开发实践,我希望能够打破这种偏见。没错,在.NET平台上实现CD实践曾经是一个困难的任务,但时代已经不同了,微软已经作出了巨大的改进以拥抱CD。

\\

Matthew Skelton:我编写本书有两方面的原因:首先,当Jez Humble与Dave Farley在2010年推出了《持续交付》这本著作时,其中描述的许多模式在Windows与.NET平台下都是极难实现的。自那之后,Windows与.NET平台上的自动化与API特性,以及相关的工具都已得到了极大地改进。其次,在过于几年中,我所合作过的许多客户都在使用Windows与.NET平台,因此,我也留意到了对于使用这些技术的许多组织而言显得比较常见的一些做法。通过编写这本书,让我能够有效地将从中学到的思想以及见解组织在一起。

\

\\

InfoQ:你们希望读者从本书中能够得到哪些收获?

\\

\

Chris O'Dell:希望本书能够推动读者开始尝试在Windows与.NET技术栈上实施持续交付实践。

\\

Matthew Skelton:在2016这个时间点上,在Windows与.NET平台上实现持续交付不仅仅是能够做到的,并且实际上是非常便捷的,至少从技术角度来说是如此!

\

\\

InfoQ:长期以来,Windows与.NET环境在持续交付与DevOps工具和支持方面始终落后于Linux世界。这方面的差距如今是否已经完全消失,还是说目前仍有某些领域显得不够成熟?

\\

\

Chris O'Dell:对于ASP.NET与.NET Framework的最近几次修订引入了一些架构上的变化,它让web应用的部署变得简单许多,因为所有必需的包都可以包含在所部署的文件中。随着.NET\\
Core的出现,部署将变得更为方便,因为.NET与Windows之间不再存在着必然的绑定了。

\\

Matthew Skelton:最大的不足之处是对于容器的支持。自从我们编写本书(自2015年8月起)以来,微软又取得了几项重大的进展,包括可运行在Linux上的SQL Server!,在Windows平台上对于Docker的支持,以及Windows Nano等技术的出现。能够在Windows这个舞台上看到这么多创新的举措真是太好了,很遗憾我们无法将这些东西加入本书,否则我们永远也完不成这本书了。

\

\\

InfoQ:从另一个角度来看,你们认为有哪些Windows与.NET的功能是Linux平台所不具备的吗?

\\

\

Chris O'Dell:恐怕我无法很自信地回答你这个问题,因为我在Linux平台上所投入的时间没有在Windows平台上那么多。

\\

Matthew Skelton:我相信.NET是一个优秀的运行时,因此看到像OSX与Linux这些非Windows的操作系统也能够通过.NET Core支持这个运行时真是太棒了。而在Visual Studio Code上实现的多平台支持也是个好消息,因为每个人都将能够开始利用Visual Studio的丰富特性。

\

\\

InfoQ:Windows与Linux平台上的运维文化曾经具有极大的不同,这也反映出不同操作系统之间的不同哲学。在你看来,Windows上的文化对于持续交付的启动是否会带来一系列不同的挑战?

\\

\

Chris O'Dell:虽然我对于Linux没有足够的经验以进行完整地比较,但我认为结论很可能如此。

\\

虽然许多公司内的CD实现都能够应用Windows与.NET开发栈,但以我所见,在Linux服务器上的实施还提供了监控、指标以及日志记录等方面的工具。

\\

Matthew Skelton:在某些组织中依然存在着传统的只用Windows(或只用微软)技术的文化,但我们已经开始看到一些更偏向实用主义的做法出现,人们开始钻研其他方面的技术,尤其是在辅助性工具这一领域(包括日志记录、指标分析以及监控等等)。

\

\\

InfoQ:某些组织同时具备Linux与Windows这两个平台上的生态系统,对他们来说,实施持续交付的最佳方式是什么?是应当将他们的实现尽量统一起来,还是应当分别看待这两个不同的生态系统呢?

\\

\

Chris O'Dell:这取决于他们选择某一种特定实现的原因,以及为此提供持续性支持的能力,然后再选择对他们来说最佳的实现。

\\

Matthew Skelton:你不能简单地说某种方式是“更好”的,这种说法并不恰当。重点在于,团队需要找到合适的工具,并有足够的时间去钻研及学习(通过使用指标及日志记录),才能了解哪种方式是他们是最合适的。

\

\\

InfoQ:在你看来,持续交付在Windows上的短期、中期以及长期发展中的哪些方面是最令你感到兴奋的呢?

\\

\

Chris O'Dell:.Net Core将成为.NET平台上的游戏改变者,.NET Framework与Windows平台的分离使.NET平台能够招揽大量新开发者的青睐,并实现各种不同的部署策略。此外,由于我主要使用云服务,因此我也十分期待Windows Nano的出现。它将减少镜像的资源占用,希望这能够提高镜像的设置速度。

\\

Matthew Skelton:对容器的支持以及Windows Nano等轻量级host的出现将为使用Windows平台的团队带来大量丰富的选择。很明显,我们也将看到Azure平台上的持续创新。我也期待像AppVeyor以及Octopus等工具能够进一步地进行演变,以支持Windows、.NET与Azure平台上的更多特性。

\

\\

查看英文原文:Q\u0026amp;A on Continuous Delivery with Windows and .Net

关于《在Windows与.NET平台上的持续交付实践》的问答录相关推荐

  1. MySQL在Windows和Linux平台上多版本多实例安装配置方法(5.5、5.6、5.7、8.0)

    MySQL在Windows和Linux平台上多版本多实例安装配置方法(5.5.5.6.5.7.8.0) Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 参考: http:// ...

  2. server2003进入oracle,[转载]在windows server 2003平台上安装Oracle 11G图解

    在windows server 2003平台上安装Oracle 11G图解步骤. 1. 双击安装图标,进入Oracle 11G的安装界面,选择"高级安装",点击"下一步& ...

  3. 手机端html5 面试,今日头条 张祖俭 - H5动画在移动平台上的性能优化实践

    1.H5动画在移动平台上 的性能优化实践 今日头条 张祖俭 2.大纲 Part 1. H5动画 在移动平台上的性能问题 Part 2. 解决思路-从浏览器渲染入手 Part 3. 在H5Animato ...

  4. 云效平台:企业级互联网架构下的持续集成与持续交付实践

    摘要:本文的整理自2017云栖大会-南京峰会上阿里云高级技术专家鲁小川的分享讲义,讲义主要分享了阿里云云效平台对于企业级互联网架构下的持续集成与持续交付的实践经验,首先介绍了阿里云云效平台的起源,之后 ...

  5. [持续交付实践] 最后一公里,你需要一套具备质量思维的发布平台!

    [持续交付实践] 最后一公里,你需要一套具备质量思维的发布平台! 前言 发布是持续交付的最后一公里. 传统上,软件的最终发布是个充满压力的过程,需要大量的手工配置.操作和团队配合.为了发布的可靠性,开 ...

  6. (转) Android平台上关于IM的实践总结

    前言 IM通信在互联网发展到现在已经是码农的世界里人尽皆知的技术,特别在当下移动互联网迅猛发展的时代这种技术的开发也更加火热,其中老牌的代表作就有QQ和MSN,和最近新崛起的微信,默默,易信,来往等眼 ...

  7. Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能

    在巴塞罗那举行的AtlasCamp上,Atlassian公司发布了Bitbucket Pipelines的beta版本,在其Bitbucket Cloud上提供用于持续交付功能.同时,Atlassia ...

  8. Windows 8系统平台上应用软件安装心得

    1.ArcGIS 10.2安装 需要单独安装.NET 3.5,GIS软件自带的.NET系统不识别,点击360云盘地址进行下载(提取码为:1ed3).(另外,Win8系统上安装.NET可以参考:http ...

  9. 云上持续交付实践系列1 --- java 篇

    本文会演示如何在CRP上编译并部署一个Java Web应用. 我的应用 技术栈 我的应用是一个简单的在线购书的网站.因为是示例,所以代码就只有简单的一个登陆界面和登陆以后的书目列表界面.代码库在htt ...

最新文章

  1. ∇SLAM:自动可微分SLAM
  2. 《强化学习周刊》第26期:UCL UC Berkeley发表深度强化学习中的泛化研究综述、JHU推出基于强化学习的人工决策模型...
  3. 《暗时间》前两篇的笔记和总结
  4. php ajax成功失败,php – 让$.ajax失败
  5. php利用openssl实现RSA非对称加密签名
  6. 程序员修仙之路-数据结构之 CXO让我做一个计算器
  7. CodeForces - 1189B Number Circle
  8. POJ - 3257 Cow Roller Coaster (背包)
  9. Kali Linux 网络扫描秘籍 第四章 指纹识别(三)
  10. css3 之弹性布局
  11. 动态规划——Russian Doll Envelopes
  12. CocosCreator 框架设计
  13. 重装系统后,文件数据被格式化如何恢复?
  14. 用MATLAB画线段(简单说)
  15. e4a和php教程,2019开源影视APP优化运营版+对接苹果cms10+全套类库E4A资源+开发文档+搭建教程源码...
  16. vue.js 动态合并单元格问题
  17. 怎样给电脑文件夹批量快速重新命名?
  18. 根据交谈和3D面部表情判断抑郁症
  19. Candide3人脸动画模型
  20. 07-20210305在WIN10下通过USB口给华为海思Hi3516DV300刷机(鸿蒙系统)

热门文章

  1. .class文件格式(java字节码文件的格式)
  2. 找不到 javax.servlet.http.HttpServletResponse 和 javax.servlet.http.HttpServletRequest 问题解决...
  3. 部署nodejs项目到服务器的一些总结
  4. MySQL函数大全 及用法示例
  5. 理解严格模式下JavaScript的this指向的变化
  6. 2019.4.17 映纷创意首页铺设练习
  7. 课时21:函数:lambda表达式
  8. FONT Awesome 图标
  9. case when then else 详解
  10. WCF、WebAPI、WCFREST、WebService之间的区别