这是 10 月 22 日和 23 日在北卡罗来纳州罗利举行的 All Things Open 大会第一天两次主题演讲的部分文字记录。
来自 Jeffrey Hammond,Forrester Research 副总裁兼首席分析师 Forrester Research 的主题演讲
如果你是一名开发人员,我认为在我们行业的历史上,现在是成为开发人员的最佳时机。如果你编写代码,这就是一个黄金时代。 如果你手下有人编写代码,那么还有另一部分信息。你需要了解开源是如何成为这个过程的一部分,否则你将面临被我们行业正在发生的代际变革所吞噬的风险。
当我在 1999 年创建我的第一家公司时,仅仅为了启动就花费了 250 万美元的基础设施,另外花费了 250 万美元的团队成本来编写代码、发布、管理、营销和销售我们的软件。因此,典型的风险投资“A 轮”融资为 500 万至 1000 万美元也就不足为奇了。
如果你看看我们今天所处的位置,想法的成本比我刚开始进入这个领域时降低了约 90%。今天,全渠道客户部署在弹性基础设施上,聚合离散服务,使用托管 API,集成开源软件,采用 DevOps 技术,并专注于可衡量的反馈。
开源是如此普遍。当他们想要启动另一个节点时,有人想去和采购官员谈谈吗?这正在系统地推动采用。我们正在看到 DevOps 的发展,而开源是现代应用程序开发的驱动力。
我们在 Forrester 进行了一项开发人员调查;涵盖多个国家的 700 名开发人员。我们问道:“在过去的 12 个月中,你使用了哪些类型的开源软件?”
- 41% 开源数据库
- 38% 操作系统
- 34% Web 服务器
当我们查看构建云、移动或大数据的开发人员时,响应率接近一致
- 93% 云
- 92% 移动
- 78% 大数据
五分之一的开发人员没有使用过开源软件。即使是使用 Microsoft 和 Oracle 的人也在以某种方式使用开源软件。
过去,我们看到服务器是最大的。现在是开源数据库。我们开始看到数据库领域的转变。我们已经看到应用服务器的下降。随着我们看到更现代的开发,他们不使用应用服务器,而是改变了他们运行后端的方式。
当我们查看现代应用程序时,我们看到了与前几代应用程序的不同之处。我们到处都看到了 API。今天的开发人员首先寻找服务和 API。现在有更多的服务可以使用并调用异步通信。在过去的 12 年里,我们一直被锁定在一个 MVC(模型、视图、控制器)世界中。紧密耦合的 MVC 架构。现在这不太好用了。你现在看到更多事件驱动的框架。许多旧的框架不太适合今天,而新的框架是开源软件。
轻量级进程通信框架,例如 Socket.io、Nginx 和 Node.js 正在取代以前的开源软件和技术。这不仅仅是开源与专有软件的对比,我们还看到开源与开源的对比,以及正在发生的替代。(例如,Subversion 与 Git)。内存数据库正变得越来越流行,并得到广泛采用。弹性基础设施已成为常态。不再有“最大”许可证。
我们看到分片 SQL 或 NoSQL 数据库在新兴的优势,成为该领域的开源选项。
在现代应用程序背后,我们看到了“现代互动架构”。构建在系统之上的系统,面向员工或客户。Web 应用程序的构建方式非常不同;第四层架构。在两者之间,有一个聚合层,它从 IoT(物联网)和其他来源实时收集和摄取数据,并通过上下文预测下一步的最佳步骤。之后,是一个交付层,其中包含 Amazon Web Services 之类的东西。
互动平台,例如 Netflix,可以被分解,你可以看到所有的部分——客户端层、交付层、聚合层和服务层——所有这些都散布着开源。 Evernote、Instagram 和 Untappd 也是如此……你可以看到开源在现代应用程序架构中的普遍使用。
创新越来越多地由开源软件社区驱动。协作集体致力于推动行业向前发展。我们这些希望招聘开发人员的人必须了解如何重组以与这些集体的工作合作并在其基础上构建,以吸引人才。
我一直在问一个问题:“你在工作之外编写代码吗?” 并且,70-75% 的开发人员回答“是”。有些人只写几个小时。有些人每周在工作之余编码 11-20 小时以上。这种在业余时间编写代码的愿望是由多种动机驱动的——学习、创业——但这些动机是内在的,它让开发人员感觉良好和快乐。 四分之一的开发人员告诉我们,他们将自己的业余时间贡献给开源软件。这些开发人员是一些最有才华和最有创造力的开发人员。如果你将开发视为一个创造性领域,那么你就知道它是广泛分布的。如果你正在寻找有才华的开发人员、高效的开发人员,那么那些做 FOSS(自由和开源软件)的人与你想要在你的组织中的人之间存在相关性。
我们这个领域非常缺乏顶尖人才,每个人都在寻找了解现代框架和 NoSQL,并且可以在云之上构建的人。如果你拥有这些技能,并且知道如何使用框架来构建应用程序,那么你的未来将一片光明。在美国,我们预计到 2020 年开发人员的增长将超过 28%。2014 年,他们的平均工资为 9.2 万美元,而 2013 年为 7 万美元。这表明存在供需失衡。
我们正处于一场代际技术变革之中。现代技术与客户端/服务器应用程序不同。我们必须了解如何使用这种技术,以及允许我们廉价创新的弹性架构。开源的廉价性非常适合现代平台。五分之四的人使用开源,而且效果很好。
开源软件项目驱动着协作集体,无论他们挂在 GitHub、Drupal 还是 Eclipse 或 Apache 等基金会中。这些是未来十年发展的重心,重心的增长速度也越来越快。
人才是卖方市场,我们正处于黄金时代。
来自 Dwight Merriman,MongoDB 的执行董事和联合创始人的主题演讲
大家好。我是 Dwight。正如提到的,我在 MongoDB 工作,从一开始就在那里。我在 1.0 版本时代编写了很多代码。今天早上我想谈谈一些与 Jeff 所说的相一致的事情。
面向对象编程之前。关系数据库之前。这可以追溯到很久以前。我将专注于数据层。我确实喜欢“现代应用程序”这个术语,因为我们构建的东西不一样了。它不是“我们需要一个新版本的库存系统”,而是一个全新的应用程序类别,B2B 和 B2C,以前不存在。我们构建它们的方式已经完全改变。看看今天早上的日程安排,你可以看到所有的演讲,它们都穿插着项目和产品的名称,以及许多开源的东西。我一直在思考的一件事是 Jeff 谈到的许可证的弹性。在我看来,这对于软件的“粒度”来说非常重要。今天很容易混合来自完全不同产品的第三方代码。你可以想象使用十几个或更多的第三方组件。它可能变成一个很长的列表。
如果是闭源的,就很难有那么多不同的东西去购买、评估和开发。粒度方面非常真实,也是我们今天编写软件的重要组成部分。我们不想要一个庞大的单体系统,我们想要分解我们能分解的东西。我们想要不同的专业部件,如果不是开源的,那就没那么容易了。
在现代应用程序的背景下,我想谈谈数据。“大数据”和“NoSQL”——这些是奇怪且不精确的词语。正在发生一些大事。我们正处于 IT(信息技术)数据层 25 年来最大的变革之中。正在发生一些大事。大数据是数据层中正在发生的一系列新技术;以及异常大量的变化。描述这种情况的一种枯燥但准确的方法是,你可以划分出不同的类别。 NoSQL,可扩展且非常适合构建现代应用程序。Hadoop,更多的是在分析方面。
这一切都在发生,这是一场巨大的变革。我们编写的应用程序类型也在发生变化。关于这一点,我们正在处理的新应用程序和用例,数据的形状是不同的。数据的形状。数据是非结构化的、多态的。它不仅仅是表格形式。现实世界中的会计数据是表格形式的。一对一映射。现实世界用例数据,是各种形状的。一方面是非结构化的,另一方面是复杂的,或者是可塑的和不断发展的。新工具非常擅长处理这个问题。 JSON,以及数据库的面向文档的概念,或者以这种格式进行消息传递。在我看来,这意义重大。说“非结构化”数据是不准确的。通常它具有结构,但它是动态的。这就像动态/静态类型编程语言的时代。我们正在处理的数据是动态的,我喜欢这样认为。
我也喜欢考虑大小。大规模。如何处理这个问题。我今天的计算机很便宜,而且不太高。它们可以水平扩展。 1999 年,我们在硬件上花费了 1 亿美元……我们当时正在投放大量广告,但当时的计算机速度慢了 1000 倍,而且成本更高。你当时可以买到一台“大型”计算机,但它们只是更高。今天,你无法通过购买“更大”的计算机来获得更快的处理器。你必须水平扩展。并行性。这与云计算完美契合,与扩展的需求完美契合,这实际上是唯一的方法。
我认为最主要的事情是延迟。应用程序的概念以及在你的邮箱中使用夜间或每日报告……在这一点上已经过时了。人们习惯了在手机上使用的服务中进行实时交互。作为开发人员,当我们构建系统时,我们必须从实时心态开始。我会告诉我的团队,在我们构建的 100 个应用程序中,默认设置为实时。作为 CIO,这可能听起来很明显,但这意义重大!回想一下 20 世纪 80 年代的计算机科学教育。在 1980 年,你应该默认使用“批处理”,批处理算法的复杂性较低,这是可行的方法。比实时快得多。今天,事情快得多,并且可以处理它。
如果我的交付机制是邮件或 FedEx,那么批处理就无关紧要了。现代应用程序的特性之一,也是我们必须做的事情。每当我做一个新应用程序时,我都默认设置为实时,而不仅仅是在没有理由不这样做的时候。许多新工具,NoSQL,也促进了这一点。
形状、大小、速度、方法
方法是“我们如何编写代码”,这已经改变了很多。不再是架构、编码、设计、测试、部署。只有不断的迭代。在开发人员方面,这很有帮助。对于业务方面,能够说:“这是你想要的吗?”并且如果不是,它可以快速更改以满足需求,这很棒。指定事物总是很困难。这为创造力打开了大门。即使我可以编写一个完美的规范,我也可以在一个月内获得想法!你会得到更好的结果。这是当今应用程序的重要组成部分。
看看 Facebook。每天网站都在变化。每天。多年来。迭代。这是一个很棒的现实世界例子。
应用程序
我会举一些具体的例子。当我被问到 MongoDB 的用途时,它是“通用数据库”还是“操作数据库”。我们正在尝试以今天的背景和方法重新审视什么是操作数据库。物联网正在兴起,这是人们使用 NoSQL 的一个地方,但人们正在做很多事情。约翰迪尔这些天在数据方面做了一些很棒的事情。
约翰迪尔的信息之一是:“喂养地球”
想象一下现在是收获季节,我们正在运行联合收割机,当我们绕圈时,你可以测量产量。你可以测量在过去 1-5 秒内有多少磅的东西进入了料仓。你可以通过 GPS 知道你在哪里。我们可以绘制一张产量图,拓扑结构,非常精确。当然,这有很多数据。我们能做什么?我们可以查看它,以及它的可视化表示,例如热图。你可以看到诸如“河流在这里”之类的问题。你可以想象非常精细的——像这个讲台大小的东西——产量很低,并且可以使用点对点施肥!这就是他们正在研究的东西,这些都是现实世界中切实存在的东西。 Candy crush 很“酷”,但它是无形的。这不仅仅是在精神领域。
博世的信息之一是:“连接地球”
他们有一个业务部门,专门为 自动化和工业管理开发大量软件。他们有钻头或铆钉枪——一种像你车库里的电动工具——只是这些工具价值 1.5 万美元,用于在飞机上铆接铆钉。安全在飞机中至关重要。必须进行质量控制。它们是否安装正确?我们可以逐个铆钉地查看吗?你可以看到在一英尺内是否有三个平庸的铆钉,这不好,但超过 100 英尺,这可能是可以接受的。枪记录所有数据,它成为制造商质量控制的一部分。在这些情况下,你必须存储大量数据。这就是使这变得有趣的原因,数据的形状。包含信息片段的时间戳。多态性。所有传感器,并非所有传感器都相同,以及你处理这些差异的能力。
Edeva 的信息之一是:“保护地球”
想想自动驾驶汽车,它会产生大量数据。你可以使用这些数据进行分析以改善交通流量,并找出在哪里进行更改,或添加一条道路,以及问题是什么。你可以将其用于安全分析。他们开发了一种技术,当你在瑞典的一座桥梁上行驶时,他们会看到你的速度。如果你以限速行驶,它什么也不做。如果你超速行驶,系统会专门为你制造减速带!它会在道路上造成凹陷!如果桥上发生事故,你可能会破坏一天内 50 万人的交通。这对他们来说是一个非常成功的项目。我对不能超速感到复杂……但这对他们来说是好事。
(观众笑声)
看看这些例子,你可以比这更广泛,但我想提出的问题是:“你正在做什么?” 也许不是现在,而是在明年。是否存在交叉点或创造性的事物?我们已经看到初创公司取得了伟大的成就,例如 Uber。但我也在这里给你举了一些来自更“传统”组织的例子。在“旧”领域和领域中还有更多的事情要做,我们现在拥有采用新心态的工具。要有雄心壮志,尝试解决这些问题。
评论已关闭。