TechEd Europe 2014 消息

[原文发表地址]:TechEd Europe 2014 News [原文发表时间]:2014-10-28 5:54 AM 今天,在 TechEd Europe的主题演讲上,我们宣布了几个特别酷的新东西… VS Online 欧洲数据中心 现在我们在Azure“West Europe”数据中心有一个VS online实例 ,并且它用于商业用途。你可以在我另一篇博客.获得更多关于它的内容。 VS Online REST APIs 和Service Hooks RTM 今年春天,在TechEd US大会上,我们宣布了一个新的基于REST. OAuth 和 Service Hooks的 Vs online扩展方法,最终也会运用于TFS。今天,我们宣布这些APIs的v1.0最终版本已经完成,无论如何,这并不代表,我们完全完成了这些APIs,只是一系列核心部分完成了,但是我们会继续完成。我们的版本将会向后兼容,所以我们的每次更新不会影响你的使用。你可以在VS online发布声明获得更多内容. Rest API探索 我们一直在采用我们的方式(我是说大致在Microsoft内)增强Rest APIs的易使用性。我们的第一代产品就是我上面链接的VS online REST APIS docs。今天我们发布了第二代,但是这次只是关于office 365 REST APIs(我们将会把经验也 带到VS online)。 你可以在office 博客阅读更多关于这一切是如何更广泛的融入Microsoft Office API 故事。 有两个特别酷的新东西, 一个是,我们有Rest 文档页面,允许实际执行样例Rest APIs,并且得到结果。还可以使用工具Fiddler来观察线上发生了什么并且理解每一处细节,这是关于OfficeREStAPI引用的根目录页。…


回顾VS Online八月十四日的故障

[原文发表地址] Retrospective on the Aug 14th VS Online outage [原文发表时间] 8-22-2014 11:10 AM 上周四我们有一个很严重的故障持续了5个多小时。故障表现为性能极其的糟糕,以至于这个服务对于大多数人来说基本是不可用的(尽管采取了各种各样的缓解措施也只能断断续续的访问)。故障开始于UTC时间14:00,结束于UTC时间19:30前。从故障的持续时间和严重程度上来说,这是VS Online有史以来最严重的一次事故。 为此我们感到非常糟糕,我们也将继续致力于做好每一件我们能做的事以防止故障。我很抱歉此次故障所造成的问题。整个团队从周四到周日不知疲倦地工作来解决眼前的健康问题并且修复潜在的可能导致复发的缺陷。 正如你可能想到的,在过去的一周,我们非常努力的工作试图了解发生了什么以及我们做什么更改才能防止这样的事情再次发生。要想找到触发故障的确切证据往往是十分难的,但是你可以通过仔细的研究来学习更多的东西。 关于这一类的故障,我经常问一些问题,包括: 发生了什么? 实际情况是,一个核心SPS(共享平台服务)数据库不堪数据库更新的重负,并且开始严重排队所以阻止了调用者。由于SPS是身份认证和授权过程的一部分,所以我们不能只是完全忽视它 – 虽然我建议当它变得非常缓慢的时候可以那样做,即使我们绕过一些授权检查以保证服务的及时响应,这也并不意味着就是世界末日。 触发器是什么?什么使它在今天发生了而不是昨天也不是其他任何一天? 虽然我们已经很努力的在解决这个问题了,但是仍然没有任何明确的答案(不过我们仍在继续)。我们知道,事发前,一些配置的更改导致“TFS”服务和“SPS”(共享平台服务)之间的通信量显著增加。这些通信量包括对已禁用的附加许可证的检测。我们也知道,大约在同一时间,我们看到了延迟的和未能交付的服务总线消息。我们相信其中一个或者两个就是关键触发因素,但是我们丢失了一些SPS数据库访问的日志,因此没办法100%确定。希望在接下来的几天里,我们会知道更多。 “根源”是什么? 在某种意义上讲它不同于触发器,触发器通常是一个导致一些连锁效应的条件。而根本原因更多的是理解为什么会级联以及为什么会把系统搞垮。我相信事实会证明,根本原因就是我们已经累积了一系列错误,才导致SPS数据库有很多额外的工作要做,同时系统也不稳定 – 从性能的角度来看。仅仅在系统上做几个操作 – 以额外的身份认证和许可证发放形式导致这些错误的连锁反应。其中大多数是在最近几次的Sprints引进的。下面是到目前为止我们发现并修复的核心错误列表: 大量从TFS到SPS的请求引起对“TFS服务”身份特性的不当更新。这将引起SQL写争论,同时无效的身份通过服务总线消息从SPS发送到TFS。此消息引起应用层缓存无效,随后的TFS请求就会发送一个请求到SPS,造成进一步的属性更新和一个恶性循环。 401中的错误处理代码将会对身份进行更新,这将导致身份的缓存无效-没有恶性的循环但是有许多额外的缓存刷新。 Azure门户扩展服务里的一个错误每5秒就会触发一个401错误。 一个旧的行为从每个SPS AT引起同样的无效“事件”(用户1在AT1无效,用户2在AT2无效,那么用户1将收到两次失效)。我们有四个AT,所以这将有一个很严重的乘法效应。 我们还找到/修复了几个“加重的”错误,它们使得形势更加恶化,但不会坏到对它们自身引起严重的问题: 许多易变的属性也被存储在身份的扩展属性中,这会造成重复的缓存失效,大量的“更改推送通知”将被发送给不在乎属性更改的监听器。 有几个地方即使没有更改也会更新属性,如此便会造成没必要的失效和SQL旅程。 所有的这些,在某种形式下都随着对系统身份的更改而改变,这将会导致广播更改推送通知(有些情况下会过分传播),同时引起额外的进程/更新/缓存失效。这是不稳定的,因为这些身份更新中任何导致不期望的负载增长的东西,都会由于乘法效应和循环而无法控制。 从此次事件中我们学到了什么? 我一直想超越并理解底层模式。有时候也被称为“5个为什么”。事实上这也是列表中最重要的问题。为什么会发生这件事,我们能做些什么?而不是我们遇到了什么错误。为什么会出现这些错误?我们应该怎么做,以确保进入生产环境前,在设计/开发过程中就抓到这些问题? 先给大家讲个故事吧。这得从2008年说起,那时候我们首次将TFS横跨Microsoft的非常大的团队进行试运行,我们曾遇到一个灾难性事件。我们极度低估了成千上万的用户和大规模构建实验室将被放到TFS上这一负载。有将近九个月的时间我们如同活在地狱中一样,在严重的性能问题下,系统每天都在痛苦地减速,许多人给我发送厌恶的邮件。 从中我最大的收获就是,你绝对不能相信抽象概念里说的何时会遇到性能问题。在那种情况下,我们将SQL Server作为了一个关系数据库。最后我才知道真的不是这样的。它只是一个在磁盘I/O之上的软件抽象层。如果你不知道在磁盘I/O层发生了什么,你就什么也不会知道。你的无知也许是幸福的-但是当你遇到10x或者100x规模/性能需求的时候,你将完全精疲力尽。我们开始深深研究SQL磁盘布局,主要寻求,数据密度,查询计划等等。我们由上到下流动优化,确保我们能够了解所有CPU和 I/O的走向等。当我们做到这些时,TFS将扩到无比大的团队和代码库。 之后我们会做回归测试,这样会衡量更改,不仅仅及时而且是围绕着SQL旅程等等。 回到上周四…是我们草率了。这次马虎可能太严重了。对所有的团队来说,我们陷入了是自食苦果还是按客户需求增加功能的两难境地。在推动快节奏的过程中,估价每个Sprint等,我们允许了一些工程回归然后衰退-或者更确切地说,就是不把它带到我们正在写的新的代码中。我相信这是根本原因 – 开发者不能完全理解他们所做的一个更改的开销/影响,因为我们在跨软件/抽象层没有充分的可见性,而且当代码更改触发操作在整个资源耗费操作中显著增加时,我们也没有自动化的回归测试来标记。当然,你也可以在人工的测试环境中做这个,例如单元测试,也可以在生产环境中做,因为在你的测试中你抓不到任何东西。 所以,我们已经修了一些错误,在TFS和SPS交互方面还有不少的债务要进行处理,更重要的是我们需要加入一些基础建设,以便更好的在端到端开销上衡量和标记更改 – 在测试和生产中都可以。 讽刺(不是喜剧而是悲剧)的是最近团队才在这一点上有一些重新关注。几周之前,我们刚为小范围的团队人员准备了“编程马拉松”来试验新的想法。其中一个团队构建了一个解决方案的原型,用来捕获一个端到端请求的重要性能跟踪信息。在接下来的两周,我会试着写一篇博客来展示其中的一些想法。在此次事件前的那一周Buck(我们的开发总监)和我关于这个特殊的场景是否需要更多的投入曾进行过一次谈话。不幸的是我们还没有解决这个差距呢就发生了这个严重的事件。 我们将要做什么? 好的,我们学到了很多,但是关于此事我们到底要做什么呢。显然第一步是平息突发事件,让系统快速的回到可持续的健康状态。我想现在我们可以做到了。但是我们还没有解决根本原因。所以,下面是我们所做的计划,包括:…


Connect();峰会中的新闻

[原文发表地址] News from Connect(); [原文发表时间] 2014/11/12 7:30AM 这周,在New York,我们举办了“Connect();”开发者峰会。我们也做了大量的宣传工作。你可以在 Soma的博客,Visual Studio 相关博客和Visual studio ALM 博客以及release notes中得到相关connect()的信息 我们主要宣布了:  Visual Studio和Team Foundation Server 2013 Update 4可以用了。Release notes… Visual studio 2015 和和.NET2015的第一个预览版可以用了。Release notes… .Net 框架即将实现开源和跨平台 可供免费使用的的visual studio Community 2013,—— 一种新版本的 Visual Studio,组合所有速成版和添加可扩展性支 Visual Studio online 的一些新的改进。 我也预先展示了一些在不久之后会被添加到VS Online 和TFS的一些新功能。 今天,我们没有发布TFS 2015 的预览版。不是因为我们没有在TFS 2015上工作 ,而是因为我们发现,把这些功能嵌入到VS Online 中是目前为止为您提供TFS新功能的最快的方法,也是你们给我们提供反馈以便我们修改我们的开发计划的最快的方法。几个月后,我们会发布一个TFS2015的预览。 像往常一样,我将更多关注ALM相关信息,其他人则关注于更广泛的Visual studio…