年度最佳硬件、软件、开发工具和云服务
知名IT杂志《InfoWorld》的一群编辑和评论人员选出了2015年年度最佳硬件、软件、开发工具和云服务。
如果你说2015年是容器元年,那也不算错。不过,2015年也是其他技术大放异彩的大好年头:分布式计算、内存分析、机器学习、平台即服务、实时应用程序、单页应用程序、低代码移动开发、软件定义网络,这样你才算了解全貌。
一切都在变化。我们评选出年度技术大奖获得者:总共31种产品,它们由《InfoWorld》杂志的一群评论人员评选出来,涵盖平台、数据库、开发工具、应用程序和云服务,它们在共同重塑IT格局,并重新定义现代商业。
Docker
当然,Docker成为年度技术是十拿九稳的事儿,不仅仅由于它为广大开发人员带来了灵活性,还由于其项目在过去一年取得了长足发展。Docker的整个网络模型已得到了升级。处理存储的机制已经过大幅重写,以至于现在它成了众多第三方产品组成的小型产业的基础。它终于不需要用户以root身份来运行容器。它还获得了各种各样的其他工具。
另外引人注目的是,Docker不仅仅影响了其他软件项目的方向和发展,还影响了整个软件行业的方向和发展。VMware正确地意识到,容器提供了一种更好的解决方法,可以解决虚拟机当初旨在解决的许多问题,于是它重新设计了产品线中的诸多产品,欢迎容器,将其视为“一等公民”。微软也明白过来,致力于将容器功能添加到Windows Server,不是简单地模仿功能,而是支持Docker本身。
谷歌、亚马逊、红帽、IBM、思科,如今每一家数据中心和云计算厂商都在赶Docker这股热潮。很长一段时间后才会出现具有如此变革性影响的一款软件;至于Docker及其合作伙伴在今年会如何引领Docker发展,值得拭目以待。
Kubernetes
管理部署的Docker容器可能让人头痛,应用程序或微服务被设计成用自己的依赖服务来部署时更是困难重重。这时候,Kubernetes就有了用武之地。Kubernetes是一种编排工具,类似于在Apache Mesos上运行的Marathon,但仅仅面向Docker容器。它可以调度容器以便在一群机器上运行,可以单独部署容器,也可以按紧密耦合的群组(名为pod)部署容器,它在分配任务时牢记资源要求。
不像Mesos/Marathon这对组合,如果使用Kubernetes,你可以以etcd的方式,免费获得服务发现机制,这是默认情况下拥有的一项出色功能。Kubernetes还在底层平台方面提供了相当强的灵活性。它大力支持谷歌的容器引擎(Container Engine),可以在一小批公共云上轻松运行,还可以部署到VMware vSphere、Mesos或Mesosphere数据中心操作系统(DCOS)上。
如果你在谷歌计算引擎、亚马逊网络服务或另一种公共云上运行Kubernetes,甚至可以让Kubernetes替你管理该基础设施的一些部分。拥有需要横向扩展的服务?那么你很可能想在该服务前面有一套负载均衡系统。可以告诉Kubernetes:你希望服务进行负载均衡,它就会替你做些针对特定云的相关工作,你没必要自行配置负载均衡机制。诸如此类的特性让Kubernetes成为任何容器基础设施的首选工具。
CoreOS
CoreOS基于一种高度精简的Gentoo Linux版本,是专门为运行容器(尤其是在集群环境下)而设计的。一种名为fleet的配套管理工具处理跨集群调度CoreOS实例这项任务,而一种名为etcd的分布式键值存储工具负责存储配置数据、支持服务发现。
有望带来容器移植性和高效率的优点深入人心,CoreOS从头开始构建时就牢记这一承诺。在CoreOS上运行的唯一实体作为Docker容器来运行,包括你可能一直习以为常的调试工具。连软件包管理器都没有安装。CoreOS还被设计成作为分布式系统的一部分来加以部署;在分布式环境下,出现硬件故障很正常;通过部署服务的多个实例,获得高可用性。如果一个节点出现故障,fleet和etcd就会共同确保:副本迅速部署到集群中的其他节点。
作为这种分布式系统方法的意外结果,CoreOS可自动安装更新版和补丁。如果出现了一个新的安全漏洞、补丁发布,CoreOS会跨你的集群执行滚动更新,打上补丁。只有借助etcd和fleet的协调编排,才可能实现那种滚动更新。
Joyent Triton
你之前从来没有听说过Joyent Triton,但是如果你现在想要一种易于管理、面向容器的架构,而且这种架构已准备好用于生产环境、久经考验,那么Joyent是应该要知道的名字。Joyent是一家公司,拥有一系列出色技术,主打技术就是Triton,这款软件用来在裸机上运行与Docker兼容的容器。
如果多年前你在Sun E10K上用过Solaris Zones,后来业界丢弃Solaris改用Linux后,你不得不使用虚拟机,可能会有一点被抢劫的感觉。Docker让容器卷土重来,但是除了包装外,Docker容器不如Zones那么好。Joyent继续沿着Solaris容器这条路子,但是给了你类似Linux般的感觉、与Linux和Docker兼容,以及在IaaS、云应用程序和“容器化”这个新时代下必不可少的所有管理工具。
结果是?在Joyent云上运行容器的成本要低于在基于虚拟化技术的云服务提供商上运行容器的成本。如果你想在本地运行Docker,就有了一款久经考验的基础设施解决方案,还拥有运行Docker所需的管理工具。最棒的是,关键组件都是开源。容器将成为一个拥挤的市场,但Joyent凭借可能更出色的技术,早早抢占了有利位置。这点很重要!
思科ACI
思科已凭借以应用为中心的基础设施(ACI),将数据中心网络带到了一个新的高度,ACI显然是一种软件定义网络(SDN)方案。ACI与OpenFlow或OpenDaylight SDN项目并不互相协调,而是采用一种全然不同的方法,即网络配置方面的细节由网络设备来处理,而不是由控制器来处理。结果是,大大提高了可扩展性,思科吹嘘在一个fabric上就能支持大约200只分支交换机、5个核心和20万个端点。
ACI基于封装租户范围之内所有流量的租户模式(tenant model)而建,所以不存在重叠IP子网方面的问题,租户与其他租户实现了逻辑分离,不过它们在同一个fabric上。应用程序模型连接服务器、网络和安全等资源,让租户可以通过模板来部署应用程序。这种抽象让用户得以轻松管理托管服务或业务部门。
协调编排这一切的是控制器集群,它们其实就是服务器,提供了用于集成ACI工作流程和用于控制fabric本身的API。这套API有相应的GitHub项目,项目开放了部分ACI功能的源代码,并提供了开放集成选项。ACI建立在Python基础上,可能是思科迄今发布的最开放的平台。思科ACI具有开放、可扩展和软件定义等特点,是SDN给网络界带来巨变的另一个迹象。
Apache Mesos
跨庞大的机器集群分配许多任务时,一个重要问题变成了如何高效地做到这一点。Mesos是一个顶级Apache开源项目,它对分布式集群上的计算资源进行抽象处理,将一块块资源提供给你的应用程序,基于设定的共享优先级。换句话说,Mesos就像是数据中心的操作系统,跨多个机器分配任务,你没必要自行管理和监控那些机器上的资源。
你很可能通过用Mesos的API编写的许多可用框架中的一种来使用Mesos。比如说,Marathon跨你的集群分配资源要求不一的长时间运行的任务。Chronos让你可以以一种容错方式来运行计划任务(cron job)。面向Mesos的其他流行框架包括Cassandra、Hadoop、Storm和Spark。
如果你需要另外的动力在今年关注Mesos,不妨看看支持Mesos的一些公司。推ter挖来了早期Mesos项目的其中一个共同开发者,并且用Moesos运行其数据中心。苹果使用Mesos,重建了支撑Siri服务的后端组件。思科云服务部门正致力于构建在Mesos上运行Consul、Exhibitor和Elasticsearch的框架。如果你在生产环境下有众多服务器,有大量任务需要调度,将Mesos整合到系统中会让你获益匪浅。
Apache Spark
虽然这一幕就发生在我们眼前,但还是难以相信Spark如此迅速地颠覆了大数据领域。在短短的几个月,内存分析不再是“有钱人的游戏”,成为了一种日常方案,可以整合到任何商业智能项目中。Spark已把Hadoop挤到一边,让用户从此不需要MapReduce,基本上改变了大数据的主要定义。
Hadoop开发者、Cloudera首席技术官Doug Cutting宣布Cloudera将Spark作为其公司的整个核心时,顶石已俨然铺下。奇怪的是,Spark方面动静最大的恰恰是用于实时数据流,这实际上是其最大的软肋之一。可是又有谁知道,一种面向分布式计算的简单API居然最终变成了数据处理领域新时代的一块基石;这种API在内存中运行,天生适合任何函数式编程语言。Spark迅速崛起和采用的势头在2016年只会继续加快。
IBM Watson Analytics
IBM被称为是一家祖辈级科技公司,有充分理由。迟早,它会设法将一台使用自定义内部组件的昂贵的大型机器卖给你。至于IBM软件,只要一提到WebSphere的大名,任何开发人员或系统管理员就会不寒而栗。但是Watson平台代表着全新的蓝色巨人形象。IBM将Watson这个logo印在许多产品上,但给人印象最深刻的实际产品还是Watson Analytics。
Watson Analytics是个奇迹。它结合了可视化、数据标记、机器学习和云存储等技术。你只要上传一些数据,它就会给出颇有见地的宝贵信息。然而,虽然Watson可以免费试用,一旦你真正开始处理大量数据,Watson很快就会变得非常昂贵。此外,如果你不想为1TB的存储空间支付每月15000美元的费用,它与其他云和数据库整合就会限制你。
话虽如此,Watson Analytics可能会定义市场――成为衡量其他大多数预测分析工具的一个标杆工具。如果IBM让Watson不仅仅囿于其系统,它可能会霸占这个细分市场。但是那样的话,如果你不想在IBM的云中运行大大的黑盒子,该公司如何将它卖给你呢?
Splunk
日志分析不是信息安全界最吸引人的部分,却是一个基础部分。无论是用于威胁检测、事件响应还是取证分析,企业组织必须将相应的详细信息记入日志,找到那些日志中的相关信息,并设法了解所有这些信息。企业组织应该求助于哪种技术呢?
一个合理的选择就是日志分析领域无可争议的王者:Splunk,它有详细的搜索工具、全面接口和全球覆盖范围。Splunk没有因出类拔萃而沾沾自喜。2015年,该公司推出了Splunk企业安全4.0工具(Splunk Enterprise Security 4.0)和Splunk用户行为分析工具(Splunk User Behavior Analytics),这一对工具让企业可以检测安全泄密,并跟踪攻击者在网络中的一举一动。
Splunk企业安全工具可以帮助安全专业人员防御多级攻击,只要借助跟踪特殊(ad-hoc)搜索和活动的工具,在规定时间表内调查任何事件、活动或注释的工具,以及让客户和第三方可以开发额外应用程序,以此扩展系统的框架。Splunk用户行为分析工具是个新产品,它结合了Splunk机器数据功能和从Caspida收购而来的用户行为分析技术。
如今的复杂攻击需要更先进的安全方法。借助这些新产品,以及新的Splunk IT服务情报(Splunk IT Service Intelligence)以便直观地显示运行状况,Splunk将分析技术和机器学习运用于威胁检测和响应,可谓顺了应时代要求。
Tableau
商业智能领域出现了业务用户驱动的数据发现和交互式分析这一趋势,已基本上取代了传统的IT驱动的报表和分析,而Tableau堪称这方面的典范。Tableau可以连接到一系列广泛的文件和服务器数据源,包括Excel工作簿、字符和制表符分隔的文件、统计文件以及40多种类型的服务器。你可以将多个数据源连接到工作表,并实现表连接或文件连接。
Tableau中的分析是个拖放过程,附有属性表。Tableau可以将分析结果组织成工作表、仪表板和故事。仪表板可能包含以一定方式排列的多个工作表,你可以为一个工作表创建不影响仪表板中其他工作表的动作(action)。
故事可以将多个仪表板或工作表合并成一个叙述(narrative)。谁都可以下载免费的Windows版或Mac版Tableau Public应用程序,用来创建分析结果,保存到Tableau Public服务器,任何人都可以查看这些分析结果。Tableau Server是一种专用的、Windows托管的Tableau Public版本。
Tableau可不便宜,也不是用于报表的最佳商业智能产品。但是它支持一大批数据源,提供了丰富的图表类型,对图表和仪表板外观提供了出色的控制性,而且不用编写代码,就可以使用深层统计数字。考虑到这款产品的复杂性,它并不难学。Tableau提供了示例数据、视频、快速入门指南、实时课程和研讨会,帮助新手尽快上手。
微软Office
上这份榜对Office 2016来说其实不是大大的褒奖。微软Office在过去一年取得了重大进展,比Windows版本“平淡无奇”的升级版或者甚至Mac版本的重大改进相比重要多了。它是一度被认为难以想象的成就:可以在各大计算平台上运行的设计出色、功能强大的Word、Excel和PowerPoint版本。除了Web版Office外,Windows版、Mac版、iOS版和安卓版的Office应用程序不仅成熟又稳定,还都有一大批同样的核心功能。
此外,面向多个平台的新颖、有价值的云支持功能正以惊人的速度扩增:与Box、思杰、Salesforce和iCloud等存储服务整合;移动设备管理;Sway“后PowerPoint”演示协作工具;用于集中式视频共享的Office 365 Video;用于跨Office 365工作组和文档发现信息的Office Graph和Office Delve;以及结合Excel报表的Power BI。
微软在Office 365后端方面仍有大量的工作要做。协作功能离世界一流还相距甚远。比如说,实时共同创作只能在Word中实现,而且不是很好。收购而来的组件(比如Yammer)仍似乎让人觉得更像是事后添加上去,而不是有机整合。承诺对OneDrive for Business进行的改进依然只是承诺而已。
Office 365的组件有许多瑕疵,但目标雄心勃勃:以可靠、复杂、支持云的产品,拥抱各大计算平台,微软在这方面已取得了显著的进步。
Slack
Slack问世还不到短短两年,却已经每天拥有200多万活跃用户,其应用范围已从初创公司扩大到了企业界。
Slack之所以如此吸引人,关键在于它集成了众多技术,让Slack得以成为贵公司的主要中心。从回答支持问题,到实现云部署完全自动化,每项任务都可以在Slack窗口里面完成,同时Slack机器人会贴心地指出,你还剩下10分钟可以赶上回家的下一班车。
Slack最近推出了Slack应用程序商店(Slack App Store)和期待已久的企业版,有望在2016年迎来进一步的发展,企业版将为组织分组提供亟需的支持,并提供统一的安全和管理方案。
Adobe Connect
WebEx和GoToMeeting与Adobe Connect相比不值一提,后者是一款高端互联网会议、网络研讨会和学习解决方案,持久的、可定制的房间用窗口(pod)排列。窗口是拥有特定功能的小窗口,类似其他环境下所说的窗口组件(widget)。
主持人可以将窗口排列成不同布局,可以随意保存和装入布局。多布局功能让主持人可以为不同的受众和活动使用持久布局。主持人和演示者可以看到第二个显示区,而参会者看不到。你可以为虚拟教室上传课程资料和课程。
除了有多个聊天、笔记、窗口、布局等元素的持久私人房间外,Connect还支持持久的团队房间。这至少解决了两个问题:它让会议能够继续下去,哪怕经理外出或请病假,还允许团队成员随时参阅和撰写存储在团队房间的共享会议记录和图表。主持人还可以创建分组讨论房间,并分派参会者。Connect为网络研讨会活动提供了Web注册。
你可以在云端创建会议记录、编辑记录,并且随时回放记录。还可以导出采用常见格式的会议记录,控制所导出记录的质量。
Connect需要Flash和不用沙盒的插件才能获得最佳的视频性能。但其丰富、可扩展的功能让它成为互联网会议系统当中的首选。
Cloudera Impala
将Hive连接到你常用的SQL可视化工具,只有眼睁睁看着它超时暂停。还是求助于Impala吧,这个MPP(大规模并行处理)SQL查询引擎建立在Hadoop上,看看回答你大数据问题的结果迅速出现。基本上来说,如果你想在Hadoop上搞商业智能,Impala是高性能解决方案中最容易获取、最容易实现的。
Impala一直是“Cloudera的GitHub的异数”或“Impala平台的一部分”,但是如今它正将Apache与Hadoop生态系统的其余部分结合起来。虽然Cloudera现在表示Spark是“一个平台”,但是它在添加Kudu,继续拓展这个MPP/商业智能 Hadoop领域。Cloudera仍认为,Impala必不可少;我们对此深表同意。
如果你受够了向专有的MPP提供商支付过高费用、受够了为与之配套的专有硬件支付高价,或者如果你刚构建了数据湖(data lake),但是再也无法等待Tableau绘图,那么Impala可能正是你苦苦寻觅的那种解决方案。
Apache Kafka
如果你仔细观察一下如今的大多数大数据流应用软件,会发现Kafka在悄无声息地扮演至关重要的角色,可以从容不迫地完成任务。Kafka由领英(LinkedIn)开发,用来处理其繁重的消息任务,如今安装在网飞(Netflix)、优步(Uber)、高盛和思科之类的大公司,每天处理数十亿个事件,不费吹灰之力。
Kafka实现了高速率的持续消息吞吐量,同时通过分布式提交日志保持耐久性。高吞吐量来自Kafka智能划分入站数据流,这样可以实现并行读取和写入。这些划分的数据流随后被拷贝到数量可配置的副本,这些副本反过来被写入到磁盘,防止数据丢失,而且能够“重放”数据流的历史。
开发人员不用一个小时,就可以将Kafka数据流的发布或订阅机制搭建并运行起来。对Kafka来说,这年应该是另一个大好年头。2015年年底发布的版本0.9增添了Kerberos验证、配额和Kafka Connect等特性,从而能够创建ETL流水线,基本上不需要编制自定义代码。这些新功能应该会帮助Kafka在整个企业界进一步普及开来。
Apache Ambari
第一次看到Ambari时,它给我留下了深刻印象,就因为我深知Hadoop有多复杂。除了监控和初始配置外,Ambari通常无法修改部署。除了基本的高可用性部署外,它也处理不了任何事情。但假以时日,Ambari已从一项“管用的技术”变成“出色的技术”。
眼下,Ambari主要用于Apache Hadoop或Hortonworks发行版。你还得使用Cloudera Manager来管理Cloudera(也就是Impala)青睐、不是Hortonworks青睐的大数据工具。然而,Ambari不断支持之前名为“Hadoop”的大数据平台的更多组件,并深入开发更丰富的工具。
如今,Ambari是一款可插入的监控和管理系统,面向一种复杂、多样化和不断增长的平台,不像大多数类似工具,它确实切实可行。
Python 3.5
Python是一种历史悠久、广受欢迎、功能强大又易于使用的语言,它在2015年迎来了又一次飞跃:Python 3.5问世。协程(coroutine)以及迅速高效地编写异步代码的功能出现在了Python中,成为该语言的语法的一个原生部分,而不是事后添加上去、让许多Python爱好者渴望更多功能。
去年Python还新增了这些特性:类型提示,便于代码分析和检查;矩阵乘法运算符,为使用NumPy及其他数学和统计系统的用户提供了方便。此外,为Python提升性能的项目:PyPy、Pyston和Nuitka都获得了重大进展。
形势终于朝着有利于Python 3的方向发展,它成了Pyhton这门语言的首选版本。不仅绝大多数最流行的Python软件包现在与Python 3兼容,连Fedora之类的Linux发行版也开始捆绑Python 3作为默认的Python解释器。这种语言的未来一片大好,肯定会大放异彩。
PHP 7
PHP的历史变得越来越悠久。这种服务器端脚本语言和现代Web托管名副其实的基础一直被自己的弊端束缚住了双脚。为了避免陷入僵局,求助于第三方的技术已变得很有必要,比如非死book的HipHop虚拟机(HHVM)。
PHP 7为这门有着20年历史的语言注入了新的活力,不仅显著提升了速度,还降低了运行时对资源的需求。新的执行引擎集成了基于Zend引擎的下一代PHP(PHPNG),因而在性能基准测试中速度提升了2倍。简而言之,PHP 7将PHP 5.6远远甩在身后。
除了速度提升外,PHP 7还在默认情况下对硬件的要求降低了一半,很少存在向后兼容问题。开发人员还获得了一些功能,包括返回类型声明和支持更广泛的标量类型,这有助于缩短编写更整洁、更安全的代码所需要的时间。
PHP还没有引入像HHVM中的即时(JIT)编译器那样的编译器,不过已准备开发。此外,由于为异步编程和多线程Web服务器做好了基础工作,PHP的未来比以往任何时候都来得更美好。
JetBrains PhpStorm
说到简化PHP开发,JetBrains PhpStorm是最主要的工具之一。去年11月发布的PhpStorm 10带来了新工具,加快了分析和检查代码的速度,让你可以迅速跟踪堆栈,并深入钻研错综复杂的函数和脚本文件,这些原本会让服务器端的调试工作陷入停顿。它确实可以为大规模多文件项目大大简化工作。
PhpStorm 10还引入了面向PHP 7的全部脚手架(scaffolding),包括代码完成和重构。你会发现,评估向后兼容的新工具对于今后迁移旧的PHP代码库必不可少。其他出色的特性(比如活跃变量检查)有助于简化调试工作。
一个刚添加的Docker插件为集成开发环境(IDE)带来了项目中支持Docker和容器管理的功能。新的Web技术也得到了一些追捧:Flow、Angular 2、Node.js检查和ECMAScript 2015年都得到了支持。要是有谁怀疑PhpStorm是用于现代PHP开发的首选IDE,PhpStorm 10可以打消疑虑。
Rust
当Mozilla实验室筹划开发Rust编程语言时,该计划听起来如同痴人说梦:可以直接根据裸机来编程,但借助一种带来更高级语言的那种便利性和安全性的语言来实现。这是一个艰巨的任务,尤其在另外那么多的编程语言在遇到那些问题后改弦易辙。
有了Rust 1.5,梦想开始成为现实。Rust已经是一个主要项目:Mozilla的“Servo”渲染引擎的核心,该引擎旨在最终取代火狐浏览器里面的渲染组件。但是在Mozilla的高墙外面,软件开发人员已经开始被这门语言所吸引。尽管Rust很复杂,那些一头扎入的人还是受到了Rust社区的欢迎,这门语言采用一种方便的、常识性的编程方法。好奇者不仅可以试试这门语言,还可以试试这份精选的Rust资源(https://github.com/kud1ing/awesome-rust)。
React
React是一个开源JavaScript UI库,几年前由非死book而来。React自诩是客户端MVC中的那个V,声称拥有一种快速渲染机制,建立在实现的虚拟文档对象模型(DOM)技术上。这种抽象机制适合于更简洁、更容易推理的代码。React不是一种固执己见的前端框架,所以它很容易与你可能在使用的其他库和框架结合使用。
虽然React可以用原始JavaScript来编写,还是鼓励你用JSX来编写应用程序,这种JavaScript扩展可以将类似HTML的语法处理成JavaScript代码。你可以使用HTML元素以及自定义元素,所有这一切都在in-line定义,这些元素的逻辑就在这里定义。React团队开发了一个强大的UI库,在去年受到极其热烈的追捧,随后又在2015年推出了React Native。React Native用原生的iOS和安卓控件实施了React,让移动开发人员能够补充原生组件,以便改善应用程序的外观和性能。
RethinkDB
与MongoDB或Couchbase一样,RethinkDB也是一款集群、面向文档的数据库,提供了灵活数据库模式、易于开发和可高度扩展等优点。不像其他那些文档数据库,RethinkDB支持“实时”应用程序,能够将更新后的查询结果不断地推送到订阅变更内容的应用程序。
在这里,“实时”应用程序是指这种应用程序:必须支持大流量的客户端请求,这些请求改变数据库的状态,并且向所有客户端告知所有那些变更。RethinkDB做了大量的工作,确保数据变更事件迅速在整个集群分发出去。它还在高度控制数据库一致性和耐久性的同时,提供了这种高速事件处理机制。查询可能包括表连接、子查询、地理空间查询和汇总。
RethinkDB并不为你提供ACID合规性或强力执行数据库模式的机制。但它的实时推送技术非常适合必须让客户端可以查看最新数据库状态的底层应用程序。此外,易于掌握的查询语言(嵌入在许多流行编程语言中)及即开即用的管理和监控GUI,让人们可以顺利地过渡,学习如何让RethinkDB在此类应用程序中派上用场。
Raspberry Pi Zero
多年来,Raspberry Pi一直在降低可编程计算机的准入门槛,今年该项目又迈出了一大步。Pi家族又添新丁:Raspberry Pi Zero,价格只要5美元,低得不可思议。Raspberry Pi基金会的目的是,鼓励孩子们学习如何编写代码,帮助学校更容易将计算机科学课纳入到课程中。新的低价Pi Zero不仅让更广泛的受众有机会领略编程世界,还为物联网创新提供了可靠的硬件。
Pi Zero配备单核1GHz ARM11处理器和512MB内存,功能还不如前一代产品Pi 2,这可以理解。外观尺寸也要小得多。实际上,4只Pi Zero甚至盖不住一张20美元的钞票。与之前版本的Pi一样,你得到的只是板卡,所以如果想要它的话,还得备齐电源线、键盘、鼠标、SD卡和外壳。将它插入到任何HDMI源即可获得视频,安装Raspbian OS,就可以开始捣鼓一番了!
红帽OpenShift
红帽的OpenShift已经是我们青睐的开源平台即服务(PaaS)。毕竟,它支持一大批语言、Web框架、数据库和应用程序堆栈。它提供了快速的自助式部署和自动扩展。它让应用程序更新起来如同git push命令一样容易。
第3版OpenShift已完全经过重写,使用Docker容器,而不是“cartridge”和“gear”。虽然一些期望的功能(包括gear闲置和自动扩展)已经被推迟到未来版本中推出,但PaaS还是很强大,特别是易于使用和可高度扩展。现在它已将Docker容器作为核心。
可以从oc命令行或者从Web控制台来控制OpenShift。想创建并部署OpenShift应用程序,通常可以从来自Git软件库的Docker镜像和一些代码入手,使用源到镜像(Source-to-Image)服务,将它们合并成一个随时可以运行的镜像。然后,设置环境,并暴露服务,为服务创建一条路径。只要增加所需的副本数量,就可以扩展应用程序;复制控制器明白应用程序需要更多的pod后,就会运行pod。
你只要在自己的软件库中安装一个Web钩子(hood),那样每当软件库有变化,可以自动更新服务,另外可以使用oc单行命令来编辑路径,可以轻松回滚到以前的版本。应用程序模板通过在YAML或JSON文件中指定所需的配置来加快部署。
由于安全问题,改用Docker容器并没有像人们预料的那样带来了可以在OpenShift Enterprise 3中使用的许多镜像。不过一旦OpenShift的未来版本为想要以root方式运行的镜像实施沙盒,这个问题有望得到解决。对开发人员和运维人员来说,OpenShift兑现了PaaS的承诺。
亚马逊Aurora
有着20年历史的MySQL数据库是世界上使用最广泛的开源RDBMS(关系数据库管理系统)。MySQL在多用户多线程场景下可以为你提供良好的读取性能,直到应用程序变得足够大、挑战数据库的极限。然后变得非常棘手:你可以添加副本,对数据库模式进行分片,或者升级到价格不菲的商业数据库。
还有个办法是,求助于亚马逊Aurora。Aurora是一种经济实惠、高性能、可高度扩展的插件,可代替MySQL 5.6,对大得MySQL无法满足其要求的Web应用程序来说是一种诱人的方案,对于不需要甲骨文数据库或微软SQL Server特殊功能的应用程序来说,它也有望替代那些数据库。
亚马逊声称,Aurora提供的吞吐量高达在同一硬件上运行的标准MySQL的五倍,可靠性达到99.99%,这一点我们不怀疑。亚马逊声称,每秒可处理来自四个SysBench客户端的535000次读取请求,另外每秒可处理101000次写入请求。在《InfoWorld》杂志的自家基准测试中,我们观察到每秒处理493000次读取请求,略低于亚马逊声称的数值,每秒处理205000次写入请求,近两倍于亚马逊声称这项测试取得的数值。
这种性能水平远远超出了我迄今为止见过的其他开源SQL数据库,而且以极低成本就能获得这种性能,成本远低于性能相仿的甲骨文数据库。另外,读取复制滞后时间很低,崩溃后恢复起来速度也很快。
AWS Lambda
想象一下:能够定义一个驻留在云端,可处理指定工作负载的函数,你没必要为配置服务器、分配内存、扩展实例数量或配置负载均衡机制而操心。有了AWS Lambda,你就可以这么做。
AWS Lambda是一种计算服务,可以运行用Node.js、Java和Python编写的函数代码,无需配置或管理服务器,具有实际上无限的可扩展性。你只需要为某段时间内使用的资源(GB)付费。你可以设置Lambda函数,以便异步响应事件,比如对数据的更改;可以直接同步调用,也可以通过API网关来同步调用;还可以用它们来同步响应HTTP(S)请求。
亚马逊宣称Lambda功能强大,确实名至实归:能够使用自定义逻辑来扩展其他AWS选项,能够帮助你构建自定义后端服务,完全自动化的管理,内置容错功能,自动扩展,集成的安全模型,邀请你添加自己的代码,按使用付费的商业模式,以及灵活的资源模型。
Lambda的一大批功能特性绝非很全面,但是它对许多常见操作而言是一种很出色的方案,也是一种受人欢迎的配置虚拟机或容器之外的一种选择。
微软Azure应用程序服务
Azure移动服务已经给我们留下了深刻的印象,随后微软竭力吆喝Azure应用程序服务(Azure App Services),这种托管服务将Azure移动服务、Azure网站和Azure BizTalk服务整合成单一服务,另外还添加了能够与本地系统或云系统实现集成的新功能。对面向云的开发人员来说,结果就是向前迈出了更大的一步。
Azure应用程序服务包括构建四种类型的应用程序所需的工具和服务:Web应用程序、移动应用程序、API应用程序和逻辑应用程序。Web应用程序服务支持.Net、Node.js、PHP、Python和Java。除了设置成使用多个staging槽实现持续集成外,还可以对它们实现自动扩展和流量管理。
移动应用程序服务有一个用C#/ASP.Net编写的后端,支持Windows Phone、iOS(Objective-C或C#/Xamarin)和安卓(Java或C#/Xamarin)。移动应用程序可以通过各种各样的连接器与本地系统和SaaS系统实现集成。
API应用程序服务使用Swagger和REST作为可插入接口,使用JSON作为服务之间的数据格式。逻辑应用程序服务可以将Connector及其他API应用程序直观地组合到业务流程中。
有了Azure应用程序服务,就更容易在Azure上创建可扩展的Web应用程序和移动应用程序后端,更容易在Azure上组合服务,更容易将Azure应用程序集成与记录系统集成起来。与此同时,它降低了运行应用程序后端的成本。谁说基于云的后端服务集成肯定很麻烦?
微软Visual Studio 2015
Visual Studio一直拥有大批功能,这些功能随着版本的提高而不断完善。Visual Studio 2015以令人惊讶的方式延续了这一趋势。
跨平台的移动应用程序开发?它支持Xamarin和Cordova,可移植的C ++以及与Unity集成也可圈可点。
跨平台的服务器?它有.Net Core、ASP.Net和Enitity框架,还有Python和Node.js。
跨平台的编辑和调试?肯定没问题。功能异常强大、异常轻巧的Visual Studio Code可在Mac OS X、Linux和Windows上运行。
跨平台的应用程序生命周期管理?支持Git和GitHub,微软还在Team Foundation Server中提供了Git支持,以便与Team Foundation Server用于其自己版本控制系统的同样种类的智能签入(check-in)规则实现持续集成。
跨平台的构建?除了使用Visual Studio Build和MSBuild外,Team Foundation Build还可以使用Ant、Gradle、Maven、Android Build、Gulp、Xcode及其他工具。
云部署?对Azure而言,这不在话下。
当然,Visual Studio仍然支持面向Windows的开发,包括面向Windows桌面应用程序和新的Universal Windows Platform应用程序的所有传统技术。
Salesforce1和Lightning
技能水平不一的Salesforce开发人员都能找到好的办法,构建基于其Salesforce站点的移动应用程序。最起码,你可以从Force.com设置页面,为Salesforce1移动应用程序配置紧凑布局以及全局动作和针对特定字段的动作。
就高级功能而言,Salesforce Mobile SDK让你可以从原生和混合应用程序访问Slaesforce数据,移动设计模板(Mobile Design Template)让开发人员能够构建外观不错的移动应用程序页面。除了这些选项外,Salesforce新的Lightning应用程序构建器、组件和设计系统让你可以直观地创建面向台式机、平板电脑和移动设备的现代企业应用程序,轻而易举。
Salesforce鼓励开发人员营造“Lightning体验”,不过它还没有摈弃任何旧技术,所以现有的Salesforce应用程序可以继续运行。
如果你已经在贵公司运行Salesforce,明摆着的做法就是使用Lightning或其他某个移动Salesforce选项,将你的数据暴露给用户,不必增加额外成本。另一方面,如果你没有Salesforce,按用户数量定价的模式没有多大经济意义。
Alpha Anywhere
Alpha Anywhere是一种面向数据库的快速应用程序开发工具,擅长构建可以离线运行的Web和混合移动应用程序。它让开发人员得以迅速构建优秀的应用程序,有好得出奇的性能和类似原生应用程序的外观感觉。
Alpha Anywhere对SQL数据库的支持特别强大,因为如果你希望的话,它让你可以使用每种数据库的原生SQL语言,或者使用Alpha的Portable SQL工具,该工具会为当前的数据库连接分配适当的原生SQL。Alpha对离线移动操作的支持也相当全面。它将开发解决冲突的逻辑这项工作简化为只要点击几下鼠标。
最近,Alpha在混合移动应用程序中添加了移动文件系统访问,以访问大量(GB)数据,采用了压缩技术。这既有利于离线浏览缓存的媒体,又有利于制作大量的照片、音频文件和视频,即使在你无法连接网络时。
针对移动端优化的表单(Mobile Optimized Forms)目前处于测试阶段,计划在2016年第一季度发布。Alpha在围绕FormView打造这项功能,为墨水注释和音频采集(带暂停)之类的操作采用了特殊控件。表单现在就可以使用,可是构建器还没有达到Alpha一贯的水准。这项功能开发完毕后,构建移动表单应用程序的大部分工作将由Genie来完成,Genie是Alpha对付微软Wizards的利器。
Swagger
Swagger是一种免费、开源、与语言无关的接口,面向充分利用REST协议的API,其工具为你提供了交互式文档、客户端SDK生成以及发现功能。它是最近几次试图对描述充分利用REST的API进行规范的尝试之一。
其工具让Swagger尤其值得关注。Swagger用户界面使用与Swagger兼容的API,自动生成漂亮的说明文档和实时API沙盒。Swagger代码生成器项目允许从与Swagger兼容的服务器,自动生成客户端代码库。
Swagger编辑器让你可以在浏览器里面编辑采用YAML格式的Swagger API规范,并且实时预览说明文档。然后可以用标准的Swagger工具,生成并使用有效的Swagger JSON描述。
Swagger JS库是让JavaScript客户端能够与支持Swagger的服务器进行通信的一种快速方法。还有支持Clojure、Go、Java、.Net、Node.js、Perl、PHP、Python、Ruby和Scala的额外客户端。
收费的Amazon API Gateway是一项用于API大规模管理的托管服务。它可以使用一种开源的Swagger导入工具,导入Swagger规范。
虽然API管理领域开始变得拥挤起来,Swagger却是我们的首选,因为其实用的工具、出色的用户界面生成、广泛的语言支持以及得到广泛采用。引入自家REST API的典型初创公司不必为如何将API记入文档、为开发人员提供测试平台而烦心:它只要生成Swagger用户界面。
云头条编译|未经授权谢绝转载
技术群欢迎加入,群主微信:aclood