无服务器计算与为服务架构相结合
政府采购信息网 作者: 发布于:2017-08-21 08:49:39 来源:51CTO
投稿邮箱为:tougao@caigou2003.com,投稿时请附作品标题、作者姓名、单位、联系电话等信息,感谢您的关注与支持!一经采用,本网会根据您的文章点击情况支付相应的稿酬。
以云计算目前的创新速度,业内流行语和噱头可能会从字面上给用户造成误导或混淆。可能你已经听说过使用无服务器计算平台构建应用程序,或设计运行在微服务架构上的软件等类似例子。即使这些想法听起来像噱头,但现实是,他们正在改变企业构建、部署和运行应用程序的方式。
无服务器计算是开发人员构建应用程序而不必考虑服务器的一种方式。它只是个抽象层,使开发人员能够专注于编写代码,同时忽略服务器和传统基础设施概念。
2014年,亚马逊发布AWS Lambda,这项服务使开发人员能够创建在现有托管实例上运行基于云的函数。 AWS稍后发布了其API网关服务,可用于配置公共节点以通过HTTP调用Lambda函数。综合来看,AWS Lambda和API网关能够帮助组织建立Web、移动和互联网后端,这些后端完全可扩展,而且不需要服务器。
AWS技术被认为是无服务器计算架构类的领导者,但该公司不是唯一提供商。 Microsoft、Google、IBM等也发布了类似产品,被视为函数服务(FaaS)。开发人员可以与任何提供者创建和运行函数,以实现无服务器应用程序体系结构。
更高的可扩展性效率
无论FaaS平台如何,无服务器计算架构受到很多关注。以下是FaaS平台的一些主要功能,使其成为一种极具颠覆性的技术。
降低复杂性。 在公有云平台如AWS和Azure的支持下,构建高可用性的应用程序架构变得更为容易。在负载平衡器后启动自动缩放的虚拟机非常简单。你甚至可以跨多个地区扩展应用程序架构,以实现地理冗余。
通过无服务器计算,基础架构将消失。开发人员可以完全专注于编写支持应用程序功能的代码。云平台负责管理调用这些功能的服务器,因此其可用性非常之高。
内置可扩展性。 在云中构建Web应用程序的最棘手的部分之一是调整虚拟服务器规模的自动缩放。必须找到正确的平衡点,以确保可以根据流量峰值进行扩展,并在高峰消失时收缩。听起来很简单,但每个应用程序都有自己的行为,并且必须调整设置以优化成本并提供最佳性能。使用无服务器计算,就是将这项任务转移到供应商,客户可以更自由地关注应用程序。例如,AWS Lambda服务运行在完全管理下的Elastic Compute Cloud实例上。该服务将根据正在执行的代码对应用程序进行扩展,开发人员或运维工程师不再需要管理虚拟机或自动缩放组。
消除空闲资源。 无服务器计算的另一大优点是,只需要在实例运行代码时才付费。对于传统服务器,即使使用自动缩放应用程序,也会占用一些资源。但是无服务器,只有有人实际使用应用程序时,才需要付费。不必支付小时费用来运行可能执行或未进行任何工作的虚拟机。AWS通过其Lambda服务提供次秒计量,因此只需按每100毫秒执行代码的次数来计费。其他FaaS提供商提供类似的定价。
深入无服务器架构
要了解无服务器应用程序的构建方式,让我们看看使用AWS无服务器架构的常见Web应用程序。
前端层。
为Web应用程序前端提供支持的静态资源托管在Amazon Simple Storage Service(S3)(即AWS对象存储服务)中。你可以使用S3将某个bucket,理解为某个文件夹,转换成静态网站。可以在此位置存储HTML、Javascript、CSS文件和图像静态内容。
Amazon CloudFront(内容传送网络(CDN))分发这些资源。CDN是可选的,但可以减少最终用户访问静态内容的延迟。总的来说,这个想法是,通过客户端Javascript框架与静态无服务器网站驱动应用前端。该框架可以调用Lambda为应用程序执行后端工作。
API层。
在这种情况下,AWS Lambda和API网关为网络应用程序的后端支持。开发人员可以编写离散的无状态Lambda函数来处理支持应用程序的各种资源的创建、读取、更新和删除操作。前端代码通过API网关调用Lambda函数来为应用程序做大量工作。
数据库层。
持久性数据可以存储在其他托管服务中,例如Amazon DynamoDB,即NoSQL数据库服务,或Amazon Relational Database Service。 AWS Lambda功能可以直接与这些服务进行通信,以保留数据。
请记住,这只是无服务器架构的一个例子。移动和互联网的后端,以及实时流处理,是无服务器计算的其他用例。
亚马逊和Netflix多年来一直使用微服务架构风格。微服务的想法是将一个大型应用程序分解成面向任务的服务集合。
商业应用程序通常构建为单个唯一单元。这些通常包括为最终用户提供HTML的应用程序前端,用于处理繁重的业务的后端服务器端代码以及用于存储和保留数据的数据库层。单片应用架构多年来运作良好。但随着应用程序的发展,为支持大量的用户,更新变得更加困难。因为单片应用程序的组件是紧密耦合的,即使对代码库的轻微更改也可能需要一个全新版本的应用程序。
作为替代,许多较小的微服务器可以集中地为整个应用程序提供支撑。因为微服务通常没有连带责任,他们专注于实现单一工作或执行支持整个应用程序的某个任务。
微服务的好处
那么为什么企业需要分解单一应用程序来组建微服务架构呢?有一些坚实的理由。
微服务组成部分:轻量级应用程序;耦合低,甚至没有;更改代码库可能需要完整的APP新版本。
故障隔离。 当应用程序的每个组件作为单独的服务运行时,可能会失败,而不会破坏整个系统。负责微服务的不同小团队可以快速迭代,并对代码库进行更改,而不会在整个应用程序中造成错误。这样可以减少应用程序的总体停机时间,并提高小型团队构建和支持特定微服务器的生产率。
松耦合。每个微服务都是完全独立的,可以运行自己的技术栈。只要应用程序内的其他服务可以使用非专用HTTP API与微服务器进行通信,则微服务器的基础实现可随时更改。这使得团队能够实现最有意义的技术,并且它防止了使用单个技术堆栈来满足整个单应用程序的要求。
减少进入障碍。较小的微服务不太复杂,因此更容易理解。这使得新加入的开发人员更容易与现有团队进行合作。
与目前利用公共云的FaaS不同,微服务架构可以在内部机房或云端运行。
虽然使用容器构建微服务是常见的,但新兴的实践是构建微服务器架构与无服务器功能。你可以在Amazon S3中部署静态网站,并使用前端代码在整个体系结构中调用一个或多个微服务API。
在尝试之前的考虑
毫无疑问,这里讨论的模式和做法有很大的优势。然而,在深入无服务器的微服务之前,有一些重要的事情要考虑。
供应商锁定。 每个无服务器的计算平台都具有自己的功能和特性。一般来说,通用语言,包括Javascript、Python和C#将可从AWS,Microsoft和其他主要提供商获得。
即使如此,决定拿起并移动到另一个平台也许需要大量的工作。
开发工具。 在这个阶段最大的困难之一是开发者工具。致力于大规模无服务器应用程序开发的IT团队需要通过一些工具管理依赖关系。预计未来几年该领域将会大幅进步。
服务限制 每个提供商将有自己的函数可以执行多长时间,以及可用于应用程序代码和依赖关系的容量限制。
这是在检查无服务器应用程序时应该注意的事项。
业务成熟度。部署和支持微服务架构并不是为了微弱的心脏。当然,亚马逊、微软和Netflix都已经非常成功地采用了这些模式。但并不是每个团队都有类似的技术技能。如果您正在考虑使用无服务器的微服务方法,请准备聘请有才华的员工,并提供培训,以便现有员工能够获得成效。
本网拥有此文版权,若需转载或复制,请注明来源于政府采购信息网,标注作者,并保持文章的完整性。否则,将追究法律责任。
下一篇:云存储哪个好?这几个因素很重要
网友评论
- 直属学校网络教室及办公电脑
- 北京交通发展研究院2017年度北京市交通运输环境监测网络建设试点工程运维项目公开招标公告
- 大连高新技术产业园区凌水所辖派出所网络安全技术维护服务项目招标公告
- 甘肃工业职业技术学院校园网络广播维护设备采购项目公开招标公告
- 广东省空气质量监测网络各联网子站备品备件及相关设备采购项目公开招标公告
- 国家林业局信息中心2017年国家林业局网络及视频会议等运维服务项目公开招标公告
- 北京四中礼堂灯光改造及网络直播系统公开招标公告
- NNZC2017-30186A 南宁市安全生产监督管理局机关网络网站运行维护服务采购公开招标公告
- 新密市中小学幼儿园教师信息技术应用能力提升工程持续性培训网络研修平台招标项目二次招标公告
- 卓尼县旅游局“发现卓尼之美”旅游网络及线下宣传活动公开招标公告