[serverless]Serverless Architecture

..
声明:
本博客欢迎转发,但务必完整保留本段声明!
博客地址:http://blog.csdn.net/halcyonbaby
新浪微博:@寻觅神迹
微信:halcyoncola
原文地址: https://linuxacademy.com/blog/amazon-web-services-2/serverless-architecture/

本文系个人翻译(意译为主),错漏之处请见谅。


Serverless Architecture

现在最火热的技术话题莫过于Docker和Container,除此之外恐怕是serverless architecture。”serverless architecture“故名思义没有服务器。但是这怎么可能呢?
代码当然还是运行在服务器上,只是不需要用户来管理。
这多少和使用云存储有些类似,我们上传数据到云端,然后从云端读取数据。当然这背后技术并非这么简单。serverless也是这样,而且相当酷。

serverless如何工作?我将以aws lambda为例进行解释。aws lambda允许用户专注于业务功能的实现,而无需考虑服务器的事情。比如你写一个function(向DynamoDB插入数据),并且配置了合适的权限(该function可以写DynamoDB),剩下要做的就是设置function什么时候执行。function何时才会被运行起来?事件,当事件发生时,会自动触发function的运行。事件可以是用户登陆/用户上传/更新计数器等。这些事件可以来自于你的应用,比如mobile或者web应用,甚至于aws自己的服务。这些服务包括S3/DynamoDB/kinesis/SNS/SES/cognito/cloudwatch logs&events/cloudformation/scheduled events。只要你配置了lambda和相应 的服务,就可以让他们一起自动工作。这简直棒极了。

让我们看个例子:
假设有一个注册过程,用户上传头像图片和用户信息。这里有几个事情:把用户信息存储在数据中,便于后续查找;创建图片的缩略图。原因嘛,现在的手机图片动辄数MB,以至于太大需要优化。

如何优化呢?当然,可以在本地服务器上配置,使用脚本进行处理。老实说,这也许会工作的挺好。但是当你有更大的业务流量,这种做法的问题也会凸显出来;而对低流量的小型网站勉强可以对付。但是,我们想下,我们需要做那些事?安装配置服务器,部署脚本,安装正确的包(图片处理库),存储多个不同版本的缩略图,在数据库中存储缩略图的关联信息,最后你需要让上传图片的事件触发你的function。还有,对图片的操作需要是异步的,除非你想让用户等很久。

如果我告诉你,你只需要花几分钟使用AWS lambda写两个函数并进行配置就可以搞定上边的这个事情你会怎么想?这当然是可能的,你可以有一个function缩放图片,另一个function存储用户信息到Dynamo DB。如何调用这些函数呢?我们可以在用户从本地往S3上上传图片时触发。一旦图片被上传,S3会自动触发function并将事件数据传送给function。Lambda function获取数据,缩放图片,然后将优化过的图片存放在S3上。这一切在用户还在填写用户名,邮箱,密码时就已经开始执行。

当用户点击“完成注册”,你的代码会通过AWS API gateway调用DynamoDB function,这个function收到数据并存储到DynamoDB中。当然,你可以在你的function中在插入前进行其他操作。

即使你有成百上千个用户同时操作,你也不需要担心服务器会变慢或者crash。这些负载被交给AWS来处理。

还有一个重要的地方上是,如何确保你的应用和lambda解偶?构建应用时最困难的地方在于确保后端时可插拔的。后端应该像乐高积木一般可插拔到应用,并且没有困难。在我们的例子中,你的应用只和S3和AWS API gateway打交道。这使得你很容易进行测试你的应用,并且也容易从lambda迁移。这便于重用,比如你最开始是web应用,后来打算创建web应用,你可以将他们很容易的应用到你的系统。他们其实没什么区别。

剩下最后一个问题“什么时候应该使用lambda?“,有些场景模型与本例子相似,有些场景需要混合使用。你可以使用事件驱动的代码做某些事情,从而免除服务器管理的工作,从而让你的工程师更加专注于关键任务而不是重复发明轮子。

理解如何使用lambda,可以为工程师节省很多时间和精力。工程师们不必在操心服务器的维护和日常管理,应用不但不需要被更多的照看,同时可以跑的更快,扩展性更强。

如果你觉得很有趣,为什么不看下Lambda Deep Dive Course.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值