缘何是Serverless架构?

本文涉及的产品
简介: 本文讲的是缘何是Serverless架构?【编者的话】本文讨论了Serverless解决的产品研发过程中遇到的问题,从而解释了产品研发中为何选择Serverless架构,并且对如何选择Serverless架构提出了建议,文章的最后还列举了一些Serverless架构中可以使用的工具。
本文讲的是缘何是Serverless架构?【编者的话】本文讨论了Serverless解决的产品研发过程中遇到的问题,从而解释了产品研发中为何选择Serverless架构,并且对如何选择Serverless架构提出了建议,文章的最后还列举了一些Serverless架构中可以使用的工具。

【3 天烧脑式容器存储网络训练营 | 深圳站】本次培训以容器存储和网络为主题,包括:Docker Plugin、Docker storage driver、Docker Volume Pulgin、Kubernetes Storage机制、容器网络实现原理和模型、Docker网络实现、网络插件、Calico、Contiv Netplugin、开源企业级镜像仓库Harbor原理及实现等。

几个月前在Tavisca解决方案中,我们开始研发了Beats并且作为产品研发到了一定的阶段,该阶段就是当我们需要一个快速迭代产品时,该产品可以快速发展到我们平时很少需要面对的MVP(最小化可行性产品)阶段。我们每次研发新产品,都有机会选择当时最前沿并且最适合的技术。

本文将讨论我们面对的问题,以及最终我们是怎样为我们的产品选择Serverless架构(耶,这并不是个神秘的博客)。读者阅读本文之前,最好能对微服务有一些了解,如果在该领域不太涉及的话,建议先阅读笔者的另一个 文章

Serverless到底是什么?

以我的经验,人们第一次听到”serverless”一般都有两个反应:
  1. 嗯……代码在哪儿运行呢?
  2. 我很想揍捏造serverless概念的人,根本就没有这种东西,它只会让其他人感到困惑;
  3. 我喜欢我的服务器,它让我能控制服务;
  4. 所以……代码在哪儿运行呢?

请允许用我自己的语言定义serverless,当然是好的声明:

“Serverless架构是完全基于第三方服务设计的,代码运行在临时的容器中,使用FaaS同时调用BaaS达到数据存储的目的。”
一个同事说以上的声明和Martin Fowlers的定义极其类似,但是我向你们保证我同事给我看相关资料之前我从未读过。

函数即服务(FaaS)

FaaS是公有云模型中的创新产品,从经济方面的衡量,使得供应商提供一个简单明了的平台变得可行,用户的代码运行在容器中(例如Docker),这些容器则按照响应的事件构建,例如到API网关的http调用,或者数据流中的一个数据包,诸如此类云供应商可以支持的任何内容。

Azure提供了Azure Function,Google提供了Cloud Functions,而我最青睐的FaaS是AWS Lambda。前面两者都遵循了相同的定律,不创建或者维护服务器。

后端即服务(BaaS)

不像FaaS,BaaS早些时候在app开发者中变得非常流行,他们在因特网上寻找一种后台服务可以提供类似数据存储(duh)、事件驱动通知以及一些随着app增长可以横向扩展的东西,这方面BaaS提供的比FaaS更成熟,并且有越来越多的人认识到了这些。这个环节AWS主要是通过Dynamo DB提供服务,对应Azure的Cosmos DB以及Google的Cloud Datastore。

接下来把我们之前讨论的内容图形化吧:
屏幕快照_2017-06-03_17.26_.13_.png

浏览器调用API网关,该网关用容器执行你的代码,然后和DB(BaaS)交互获取到数据,是不是看上去很熟悉?上层的工作流还是一样,在函数方面有着不同的键值,容器的创建和销毁基于FaaS提供商所使用的算法,用户无法控制。笔者写过一篇关于AWS Lambda如何在后台工作以及最佳实践的文章,建议读者阅读。

那么还有服务器吗?

是的,无论何时听到Serverless,就像你的常识告诉你的,实际上还是有服务器存在的。Serverless在我看来,是创造出来实现你不需要创造、维护甚至拥有服务器的存在,在Serverless的世界里,服务器根据你的需求、使用率创建,它可以在后台变化,而用户对此毫无察觉。

以上说明听起来很可怕,我同意,但是如果你以前使用过高质量的第三方服务,特别是像类似Amazon(AWS)、Mircosoft(Azure)或者Google,,你就会知道你可以相信他们至少比使用你自己服务器承诺的运行时间要长得多。

产品—技术设备

那Serverless是我们遇到所有问题的答案吗?当然不是,为了选择最好的技术,我们首先必须理解我们将要使用该项技术的产品,否则我们将会陷入永远选择下一个酷技术的陷阱,而不管这个技术对实际的生意是否公正,该技术是否适用。

要理解为何采用Serverless,我们就必须在可预见的未来了解产品的需求,还有什么是Serverless以及理解它的本质。

Beats产品的原则是什么?

Beats作为一个SaaS,意味着被DMC(目的地管理公司)代理或者更多简单化的旅行代理使用,这些代理对于旅行行业的术语并是不非常的熟悉。这儿有Beats需要的蓝图:
  1. 根据Marty Cagan书里提到的“inspired”产品开发方式开发软件,该方法浅显地谈到了产品研发周期,软件基于产品自身的发展周期高度迭代(包括市场/客户在内的反馈)。
  2. 市场调查目前把每个用户license的价格定在999/-INR(~15.6美元),意味着运营每个用户产品的花费会很低。
  3. 产品研发周期需要表现出引人注意地、可持续地增长,增长的速度比常规的速度更快,直到最后找到市场立足点。
  4. 该软件的本质就是发掘出用户近期的多重经验,例如为代理在网络异常时完成节假日目的地工作的离线app。
  5. 我们背后并没有10亿美元的投资人。

产品经理的工作和工程师团队的并不一样?

延缓产品研发进程的因素,主要有以下几点:
  1. 人工维护服务器或者编写Chef/Puppet脚本;
  2. 编写云自动化脚本或者手工操作(想到就哆嗦);
  3. 可量化目的的重构(处理更多的用户);
  4. 非功能性的bug修复;

SaaS服务中技术分支需要的成本

  1. 员工薪水,高级技术职员例如研发、DevOps、QA自动化工程师以及leader;
  2. 框架成本 – 该成本用于环境中运行服务器/服务、数据库以及它们所需要的license(Dev-QA-Stage-Prod等等);
  3. 第三方license,举个例子,GitHub私有repo的license,My Get.org(包管理)的license,开发IDE工具例如Visual Studio的license;
  4. 研发工作机器;

Serverless架构的性质是什么?

  1. 我们不拥有或者控制安全限制之外的成本,例如服务器、虚机或者容器等等;
  2. 大部分运行我们代码的FaaS服务都驻留运行在短生命周期的容器中,每个请求对应一个容器,这样可以在服务中规避并发的问题;
  3. 基于以上两点,编码需要按照可在大量容器中水平伸缩的原则进行,而不是像运行在大型机器上一样垂直堆砌;
  4. 不像在AWS EC2提供的永久或者自动调整虚机中大部分时间可以做的那样,你不能依赖状态保存在内存中的应用;
  5. 基于架构分配按照收入需要的原则,FaaS和BaaS一般都按照每个使用的原则付费,如果没有调用,FaaS免费的运行着,BaaS则需要一直付费,因为数据一直都被维护着并且为服务分配着流量;
  6. 如果你使用Serverless框架,当然这是笔者强烈推荐的,开发者可以通过在微服务中编码实现对架构的控制;
  7. 一般情况下你不需要去选择CPU,在AWS Lambda里是已经分配好的,关于RAM则需要你自己选择。Serverless功能对于繁重的计算需求并不意味着快速,从而关闭一台独立服务器,你可以实现更复杂的设计从而把这类功能伸展成几千个并发运行从而获取更好的结果;
  8. 并不是说对于FaaS服务来说分配应答你的请求框架的时间是微不足道的,特别是针对突发流量的场景。以我的经验,AWS Lambda大概需要5~80ms的时间完成动作,时间长短取决于代码量的大小;
  9. 你无须考虑并发或者多线程的场景,因为你的框架在任一指定时间点都运行在每请求一容器的模式;

结论

现在我们从产品技术了解了产品的需求以及Serverless架构所涉及的技术,我们可以就Beats产品得出以下结论:
  1. 我们借助微服务模式以跟上快速迭代的脚步,提供多用户接口的REST API接口;
  2. Beats不是个毫秒级敏感的应用,它只要求可依靠性以及不算慢的响应;
  3. 缺乏成本,更重要的是创建维护我们自己服务器的时间在很大程度上投入到了Serverless;
  4. 基于FaaS和BaaS的每用户付费原则,我可以拥有24*7在线的环境,而并不需要为它们花很多的钱;
  5. Beats不需要任何CPU的大幅提升;
  6. 由于bug少的属性、不存在并发场景,还有执行可扩展模型等等,我们花费在非功能性修复的时间会很少;
  7. Serverless框架开发人员创建他们自己的架构概念,这就意味着较少的多样化知识的需求,更重要的是开发人员精确的知道他们所创建的以及这些架构运行的环境即可;

好了,希望我回答了为何使用Serverless的问题,在留言区欢迎给我反馈,并看看下面推荐给Serverless架构使用的工具。

工具推荐

框架创建及更新

如果你要使用Serverless,我强烈推荐使用 Serverless框架 ,我写了一篇从零开始的 文章 可以一步步指导创建你们的第一个Serverless应用

Serverless CI

AWS  CodeBuild CodePipeline 提供了Jenkins的一个很好的替代品,不要拥有服务器而且出色成本很低是可以按需服务的模式。

Faas

没什么秘密,AWS Lambda就是我的选择, 开始使用吧

API网关

调用你的FaaS所必须的,如果使用AWS Lambda,AWS API网关是你唯一的选择,我不确定哪些和Google以及微软的同等产品兼容。

BaaS

AWS Dynamo DB是个很棒的服务,并且还有个很好的缓存层服务 AWS DAX 马上要上线了。

原文链接:Why Serverless architecture? (翻译:李桦)

原文发布时间为:2017-06-03

本文作者:李桦

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:缘何是Serverless架构?

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
22天前
|
存储 运维 Serverless
Serverless架构在图像处理领域展现出了强大的优势
【4月更文挑战第22天】Serverless架构在图像处理中表现出显著优势:弹性伸缩自动适应负载变化,节省成本;按需付费减少费用,适合需求波动场景;简化运维让开发者专注应用创新;快速迭代部署提升市场响应速度;高可用性和容错性保证服务稳定性;跨平台支持增强兼容性;丰富生态加速开发进程。因此,Serverless是图像处理的理想选择。
27 1
|
22天前
|
存储 弹性计算 Serverless
Serverless架构在图像处理的优势
Serverless架构在图像处理的优势
28 2
|
4天前
|
Serverless 持续交付 测试技术
无服务器应用架构转型
【6月更文挑战第2天】Serverless架构虽新,但其软件生命周期仍遵循传统模式,需确保交付质量。
|
5天前
|
资源调度 运维 Cloud Native
云原生架构技术之无服务器技术
当这些BaaS云服务日趋完善时,无服务器技术(Serverless)因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。
23 5
|
7天前
|
消息中间件 弹性计算 监控
【Serverless架构组成及优势适用场景】
Serverless的弹性伸缩、按需计费、无状态等特性使得开发者能够更加专注于业务逻辑,摆脱繁琐的服务器管理。它的优势在于灵活应对突发性工作负载、降低成本、提高开发效率,尤其在事件驱动、微服务、后端API等场景中表现出色。虽然Serverless仍然在不断发展,但其已经在云计算领域掀起了一场革命,成为当今应用开发的热门选择。随着技术的不断演进,我们有理由期待Serverless将继续推动应用开发的创新,为我们构建更加高效、可靠的应用提供更多可能。
|
9天前
|
运维 Cloud Native 开发者
云原生架构的未来演进:从容器化到无服务器
【5月更文挑战第28天】 在现代IT领域,云原生技术正成为推动企业数字化转型的核心力量。本文将探讨云原生架构的关键组成部分,包括容器化、微服务以及无服务器计算,并预测这些技术的发展趋势。文章旨在提供一个全面的视角,以理解云原生生态系统如何适应日益复杂的业务需求,并支持构建更加灵活、可扩展的应用程序。
|
16天前
|
运维 监控 JavaScript
【阿里云云原生专栏】Serverless架构下的应用部署与运维:阿里云Function Compute深度探索
【5月更文挑战第21天】阿里云Function Compute是事件驱动的无服务器计算服务,让用户无需关注基础设施,专注业务逻辑。本文详述了在FC上部署应用的步骤,包括创建函数、编写代码和部署,并介绍了运维功能:监控告警、日志管理、版本管理和授权管理,提供高效低成本的计算服务。
233 6
|
21天前
|
安全 Serverless API
Serverless架构在图像处理中展现出高成本效益,按需付费降低费用,动态调整资源避免浪费
【5月更文挑战第16天】Serverless架构在图像处理中展现出高成本效益,按需付费降低费用,动态调整资源避免浪费。其出色的并发处理能力和自动扩展确保高并发场景的顺利执行。简化开发流程,让开发者专注业务逻辑,同时提供丰富API和集成服务。安全方面,Serverless通过云服务商管理基础架构和多种安全机制保障任务安全。因此,Serverless是处理高并发、动态需求的理想选择,尤其适合图像处理领域。随着技术发展,其应用前景广阔。
31 4
|
22天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
22天前
|
运维 监控 Serverless
【专栏】无服务器架构,一种云计算模型,让开发者专注编写代码而不必管理服务器(Serverless)
【4月更文挑战第28天】无服务器架构,一种云计算模型,让开发者专注编写代码而不必管理服务器。它基于事件驱动,自动扩展资源并按需计费。优势包括缩短开发周期、优化资源利用、降低成本、提高可用性及简化维护。然而,冷启动延迟、调试困难、性能监控、安全性和学习曲线等挑战仍需解决。随着技术进步,无服务器架构将在科技发展中发挥更大作用。

热门文章

最新文章

相关产品

  • 函数计算