在过去的几十年里,互联网极大地改变了人们的生活。我们上网,使用各种应用程序搜索信息,购买商品,与来自世界各地的人们无障碍地交流。操作的速度和便利性是前所未有的。我们私家车仪表盘上的屏幕可以为我们推荐电影,我们的智能手机可以创建和分发视频,我们甚至可以购买恒温器,在我们到达办公室之前就可以调节房间的温度。虽然这些进步在外界看来就像魔法一样,但只有开发人员知道保持这些程序运行的开发技术水平。但时代在变,每个与业务打交道的人都明白这一点变得越来越重要。原因很简单:聪明的公司明白,未来十年的竞争需要对信息技术进行新的思考。从移动应用到冰箱,都需要变得更加个性化、智能化,更加注重反馈和交互。公司需要合适的工具来促进机器学习、捕获传感器数据并处理难以想象的高水平用户流量。趋势不可逆转。如果某个应用无法为用户提供他们期望的体验,他们就会转向别处。重构应用的构建方式过去几年,应用和网页的规模不断扩大,用户规模达到数百万甚至数亿。在大流量、大数据的趋势下,旧的应用架构开始崩溃。最近,使用大量数据的趋势激发了市场上专门针对此终端的全新技术团队的兴趣。该方法包括开拓新的存储、处理器和数据库框架,以轻松跨服务器集群进行扩展、简化处理并提高部件通信的速度。Google、LinkedIn、Facebook、Yahoo和Twitter都在一遍又一遍地重复这个过程。其中一种模式应用于数据库,几乎每个人都从关系数据库开始,并以新计划结束。一些公司已经花费数百万美元(并且还在增加),牺牲个人时间,想方设法突破MySQL自身规模的限制。另一种模式清楚地出现在处理大数据的架构中。这种特殊技术在不同领域可能有所不同,但所有大型网络公司在处理实时、近实时和批处理数据时都使用特定的架构。他们都希望向用户传达快速和个性化的体验,同时也确保内部数据分析师和数据科学家能够满足工作要求。体验数据中心应用程序堆栈中所有IT创新的成果。谷歌、Facebook和亚马逊为数十亿用户(同时也有数百万用户)提供服务并存储了大量数据。但它们几乎不会崩溃。因为对基础设施的大量投资。这些公司开发了许多著名的技术,包括MapReduce、Hadoop、Cassandra和Kafka。此外,他们还开发了一套新的工具(一些源自初创公司,一些在实验室开发,还有一些是开源项目),旨在帮助应用程序更好地运行、扩大规模,并在必要时添加新功能。这些新工具包括Spark、Storm和Elasticsearch。与新技术相匹配的新架构也浮出水面,试图解决开发可在大规模环境中稳定运行的应用程序所带来的问题。一种架构是微服务的概念,它将应用程序视为可以为多个应用程序提供服务的服务集合,而不是将其视为具有自己专用组件的整体实体。此外,微服务减少了组件之间的相互依赖并提高了单个服务的可扩展性,所有这些都无需重建整个应用程序。另一个大架构是容器化趋势,它以像Docker这样的开发人员友好的方式或像LinuxControlGroups这样的低级方式构建。容器使将应用程序插入分布式服务器变得容易,根据它们的运行位置改变重点。此外,开发人员可以专注于应用程序需要运行的位置。这种新型的分布式服务集成和架构技术统称为“数据中心应用栈”。任何想要构建可以在多个平台上为数百万用户提供服务并利用当今数据的数量、种类和速度的应用程序的人都必须使用服务集成或类似的技术概念。事实上,这些技术正在迅速普及。他们中的许多人已经成为创业技术链的主要组成部分,提供从下一个大型消费者应用程序到下一个Salesforce.com的所有信息。这些技术正在超越单纯的网络方式,进入世界500强企业,甚至进入与IT创新者无关的中型企业。他们对数据中心服务(在公司层面)了如指掌,并渴望成为这一激动人心的创新的一部分。“大数据”、“实时”和“物联网”不仅仅是流行语。在21世纪,公司的成功在很多方面都取决于他们。用于数据中心应用程序的操作系统虽然数据中心应用程序技术越来越重要,但问题是(IT供应商、开源支持者或专业的Facebook工程师不会告诉你的)它很难构建。部署、管理和扩展Hadoop;部署、管理和扩展Cassandra;部署、管理和扩展Kubernetes。您必须清理并重复您想要的每个模式或服务。从某种意义上说,公司可能对实际编写程序、构建数据管道和验证架构弹性犹豫不决。像谷歌和微软这样拥有大量工程师的大公司分别使用Borg和Autopilot系统为自己解决(或很大程度上解决)了问题。该系统自动管理资源分配,使服务于数百万用户的服务器和应用程序具有高可用性。算法——而不是开发人员或微软架构师——决定了程序的方向和机器的数量。当然,它们是很棒的系统,但它们也是公司特定的。谷歌最近才发布了一份文件,正式承认了Borg的存在。微软几乎没有公开讨论过Autopilot,更不用说出售它了。
