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

《在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平台上的更多特性。

原文地址:http://infoq.com/cn/news/2016/05/continuous-delivery-windows


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14.信号量的代码实现

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.信号量基础知识,refer2 posts below. 12.进程同步与信号量_PacosonSWJTU的博客-CSDN博客1.本文内容总结自 B站 《操作系统-哈工大李治…

Oracle入门(十二G1)修改序列(Sequence)起始值的方法

转载自 Oracle修改序列(Sequence)起始值的方法Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多。 但是,有时需要修改序列初始值&…

weex安装环境_WEEX跨平台开发环境搭建

一、Weex简介大约两年前,为了写一本Weex的入门书籍,我花了几个月的时间学习了下Weex跨平台相关的知识。Weex 是阿里前端技术团队开源的一套跨平台开发方案,能以Web的开发体验构建高性能、可扩展的 Native 应用。简单来说,在集成了…

C#中使用gRPC

由于有NuGet,使得C#在配置项目时非常简单。 1. 在NuGet中添加ProtocolBuffer和gRPC引用 protocol buffer 3.0版本,在NuGet插件界面选择Include Prerelease,查找google protocol buffer。如果不选择include rerelease,查找到的prot…

15.操作系统死锁处理

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 【19.1】死锁场景 1)死锁: 多个进程由于互相等待对方持有的资源而造成的谁也无法执行的情况; 1.1)死…

使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台

前面讲解了VSCode开发调试 .NET Core。都只是在windows下运行。 .NET Core真正的核心是跨平台,我们现在来了解学习 .NET Core 跨平台。 在windows 下开发.NET Core 应用程序,然后部署到Linux 平台运行。 .NET Core RC2版基本上已经完成。 https://githu…

centos 并发请求数_linux实现高并发请求工具

使用工具abCentOS6默认安装CentOS7需要手动安装contos7下:1、联网:yum install httpd-tools2、未联网(没试过):(1)进入cd /run/media/root/CentOS78664/Packages(路径跟centos6不同)(2)顺序安装apr-1.4.8-3.el7.86_64.rpmapr-util-1.5.2-6.el…

16.内存使用与分段

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 【1】 内存使用 【1.1】程序加载到内存 1)内存使用:将程序放到内存中,PC寄存器指向开始地址; 2&…

Oracle入门(十三)之SQL的DML

数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序…

.NET Core 跨平台发布(dotnet publish)

.NET Core 跨平台发布(dotnet publish) ,无需安装.NET Core SDK,就可以运行。 前面讲解了.NET Core 的VSCode 开发。现在来讲讲发布(dotnet publish)。 .NET Core and ASP.NET Core 1.0 RC2 runtime and libraries 在五月中旬发布。 .NET Core and ASP.N…

Oracle入门(十三A)之Select

一、数据查询语句 (1)select语句完整的句法select 目标表的列名或列表达式序列from 基本表名和(或)视图序列[ where 行条件表达式 ][ group by 列名序列[ having 组条件表达式 ] ][ order by 列名[ asc|desc ],… ] &a…

华为交换机ssh思科交换机_华为交换机 ssh 配置(极简版)

华为的 ssh 叫 STelnet(1)配置STelnet服务器功能及参数rsa local-key-pair create [1]stelnet server enable [2]undo ssh server keepalive disable [3][1] 创建密钥对,这个是必须的。可以选用 rsa dsa ecc 等加密算法,这里选择了最常用的rsa。输入命令…

17.内存分区与分页

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.程序使用内存的3个步骤: 步骤1:把程序分为多个段,包括代码段,数据段;这是编译要做的事…

漫谈C#编程语言在游戏领域的应用

0x00 前言 随着微软越来越开放,C#也变得越来越吸引人们的眼球。而在游戏行业中,C#也开始慢慢地获得了关注。这不, 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发,跨平台部署了。 所以,我们就来总结一…

dex工具与transform_Android Studio打包程序时出现transformClassesWithDexForRelease错误

百度半天.没找到直接原因..国外网站上有写这个错误的..国内的真心没找到..英语水平有太低..实在没看懂怎么搞..后来发现clean项目的时候是提示如下错误:Information:Gradle tasks [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndr…

18.多级页表与快表

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.操作系统内存管理:分页机制多级页表快表来实现; 【0】分页的问题 1)分页的问题(大页表&#xff09…

Oracle入门(十三A1)之替换变量,变量名,变量名

转载自 Oracle中的替换变量,&变量名,&&变量名替换变量(仅用于SQL *Plus或者用于原理和SQL *Plus相同的开发工具):临时存储值利用它可以达到创建通用脚本的目的利用它可以达到和用户交互,故在SQ…

常用API接口签名验证参考

项目中常用的API接口签名验证方法: 1. 给app分配对应的key、secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下:  a. 按照请求参数名称将所有请求参数按照字母先后顺序排序得到:keyvaluekeyvalu…

19.段页结合的实际内存管理

【README】 1.本文内容总结自 B站 《操作系统-哈工大李治军老师》,内容非常棒,墙裂推荐; 2.段与页 段: 用户程序采用分段结构;页: 操作系统采用分页机制管理物理内存;段页结合:程…

python中变量怎么定义_python中的变量的使用定义以及使用规则

本篇包括14章内容,系统介绍了Python语言的基础知识。内容包括Python基础语法、数据类型和类型转换、运算符、流程控制(分支结构循环结构)、数据结构(列表生成式)、函数的定义及使用、异常处理、迭代器生成器、偏函数、python中的模块和包、python标准内置库os以及使…