・龙智ALM方案      ・Perforce      ・Atlassian      ・Zephyr      ・IC-Manage

在不引起问题的情况下发展discipline

Bringing discipline to development, without causing pain
 


What happens when young developers meet old business

当年轻人遇到传统商业时会发生什么

1 Dec 2015 at 15:31, Adrian Bridgwater

Who cares? DevOps can fix it, right?

谁会在意?DevOps可以修复它,不是么?

You might be wondering at this point, why does all this matter anyway?

你可能想知道,为什么这是重要的呢?

We live in a world of DevOps where, even if we end up with large binary assets outside the repository or divided among multiple repositories, we can still coalesce and unify these elements through DevOps magic for builds, testing and onward to releases. Opponents of Distributed Version Control Systems (DVCS) would argue that this is a Band Aid over a bigger problem and that keeping all the assets in one single store is a more prudent method overall.

我们生活在一个存在DevOps的世界,即使我们结束了大型二进制资产存储库或分给多个外部存储库,我们也可以在构建,测试及以后版本时,通过DevOps合并和统一这些元素。分布式版本控制系统的对手们会质疑这对一些大问题而言只是一个创口贴并且,把所有资产存储在一个数据库会是个更明智的做法。

Indeed, the so-called ‘single source of truth’ dictum is popularised and championed by Agile development with a CAPS A. The difficulty is, quite simply, keeping that single source of truth in one single location in a world where multi-location, multi-tool, multi-disciplinary teams work to a multiplicity of software application requirements with a multiplicity of software assets.

的确,这所谓的单一资料来源在CAPS A敏捷开发中受到欢迎及拥护。但一个很简单的问题是在一个单一的位置,在这个世界上,多地点,多手段,多学科的团队合作,与软件资产的多种软件应用需求的多样性。

The truth is (and don’t shout it out too loud), that source code is often a tiny drop in the binary bucket compared to documents, images, models, audio, video, even entire virtual-machine (VM) environments for the sake of testing and deployment.

事实是(不要太大声喊出来), 为了测试和部署,源代码通常是比文件,图片、模型、音频、视频、甚至整个虚拟机(VM)环境都小的二进制点。

This expansion of assets, it is argued, poses a serious challenge for enterprise Git adoption because the design of its internal file system mandates a practical maximum repository size of a gigabyte or two at most. Even repositories that fall far short of the practical limits can exhibit relatively poor performance, depending on the type and size of assets and operation at hand.

这种资产的扩张给企业采用Git带来了很大的挑战,因为它内部档案系统的设计授权了一个最大1或2GB的实际数据库大小。甚至远低于实际限制的数据库可以表现出相对差的性能,这都依靠于资产和操作的类型和大小。

A choice of real world solutions

现实世界解决方案的选择

According to Mark Warren, product marketing director at Perforce, the options here include routes such as ‘narrow cloning’ - a method that while highly desirable, has been pretty much impossible until now. The developer wants to only take the bits they need without getting bogged down or confused by having all the code all the time (e.g. an iOS client developer probably doesn’t care what the Windows Phone client is doing); so a process of narrow cloning allows the coder to pick and mix and mix and match from a cloned selection pack as and when needed.

根据Mark Warren,Perforce的产品市场总监所言,这里的选项包括例如‘narrow cloning’这样的路径——它是一种尽管高度可取但是现在无法实现的方法。开发人员只想采用他们需要的bits,而不是被所有时间的所有代码困扰(例如一个iOS客户端开发人员可能并不在乎Windows Phone客户端做什么);所以narrow cloning可以使编码员在需要的时候从一个克隆选项中选择,混合和匹配。

“The goal here is to keep all the bits of an app in one place,” argues Warren. “The coder might be writing beautiful JavaScript but unless the build system can find the right third party binary for the payment handling system or include the latest graphics from the designers, then builds are likely to fail and that means wasting time until the build manager or DevOps engineer sorts out the mess. Hence the need for all assets, not just source code, in the shared repository.”

“这样做的目的是为了把app的所有组成部分集中到一个地方。” Warren说。“编码员可能会写出很好的Java脚本,但除非构建系统可以找到合适的第三方支付处理系统或者包括设计师最新的图形,构建很有可能失败。这就意味着浪费时间,除非经理和DevOps工程师能解决这个混乱的状况。因此,需要分享数据库中的所有文章,而不只是源代码。”

It’s mono-repo man

Warren logically points to the rise of the monorepo, as in single repository. He says that a lot of teams are discovering the joys of the monorepo i.e. all the application’s source files exist in one place so that all ‘stakeholders’ can see everything and fully understand the impact of a change (or, indeed, propagate the changes across all projects at the same time).

Warren逻辑性地指出在一个数据库中mono-repo在崛起。他说很多团队都发现使用mono-repo的乐趣,例如,所有应用程序的源文件都存在于一个地方,这样所有的“利益相关者”都能看到一切,并充分理解改变的影响(或者,同时传播所有项目之间的改变)。

“This is a very powerful proposition,” argues Warren. “However, using a tool like Git, (which was never intended to hold these gigabytes or terabytes of code and assets) is a real handicap. Unnatural acts are needed to partition up the repo and then to make it behave usefully later, workflows have to adapt to these artificial limits rather than having the tools do what the coders need. Hence the need for an effectively infinitely scalable master repo in Helix, which is especially useful when combined with narrow cloning.”

Warren说:“这是一个非常强有力的命题。但是,使用像Git这样的工具(从来不想持有这些gb或tb的代码和资产)真的是一个不利因素。需要区分反常的行为并且使它正常行动。工作流必须适应这些人工限制而不是编码员所需要的工具。因此,在Helix中需要有一个有效的可无限扩展的主数据库,当结合narrow cloning时它是非常有效的。

Where do we go from here?

下一步我们要做什么?

Unfortunately there are more challenges ahead. If we get past some basic resolution on our approach to cloning and branch management, then have we provisioned for disaster recovery and high availability in the longer term? If we’re going back to the individual developer level (remember where this argument first started?) then the answer is probably going to be no, isn’t it? But we’re here to discuss the technical bridging challenge between developer freedom and enterprise requirements, so disaster recovery and availability does have to be tabled.

不幸的是我们还要面对许多挑战。如果我们现在已经有一些基础克隆和分支管理的改革方法,那么我们是否有一个长期的数据恢复和高可用性?如果我们回到个人开发等级(记得这个问题是从哪里开始的么?)那么这个答案肯定是不行,不是么?但是我们现在讨论开发者自由和企业需求之间的技术嫁接型挑战,所以数据恢复和可用性必须被提及。

Should the development shop employ standby Virtual Machines (VMs) as a means of mirroring changes between file systems so that storage can be swopped out as needed to provide that disaster recovery backbone? The individual developer doesn’t care so much, so the enterprise had better make sure that it does. What about dashboard controls for higher level project management? What about authentication and security concerns?We haven’t even gone there yet.

开发商店是否应该采用备用的虚拟机器作为文件系统中映射变化的一种方式?这样的话存储可以改变,因为需要提供数据恢复的支柱。个人开发者并不会很介意,所以公司最好确认这一点。更高级项目管理的仪表盘控制问题呢?身份验证和安全问题呢? 我们还没有研究这么多。

The realities we can surmise from this discussion are that developers left in the wild will obviously work differently to the way they will work inside more regimented enterprise development shop systems.

从这些讨论中我们可以推测的事实是野外的开发者自然会有截然不同的工作方式,他们将更严格的在企业发展商店的系统内工作。

We can also agree that a new breed of architectural-level software development tools and delivery methodologies is developing in response to the need to span both functionality and control.

我们也可以认为新一代架构级软件开发工具和交付方法正在针对跨功能和控制的需要开发。

We can also agree the question of whether a light speed car’s lights would turn on contradicts Einstein's special theory of relativity. This means that no object with mass is capable of traveling at or faster than the speed of light due to the object’s resistance to acceleration and the impossibly infinite force that would be needed to be exerted. You see, developers are (almost) always right, so the enterprise had better get used to working with that mindset.

我们也同意光速汽车的灯光是否会打开这个问题contradicts Einstein's special theory of relativity. 这意味着没有物体的质量能够达到或超过光速,因为物体的阻力加速度和有限的力量将会被施加到物体上。你看,开发者几乎一直是正确的,所以公司最好习惯这种心态。