什么是无服务器SERVERLESS架构?

2017-11-12  本文已影响0人  云追古月


        随着云技术的发展,越来越多的传统的行业公司使用云技术来配置他们的网站或者服务,因为相对于传统方法,把系统配置到云上具有很多有点,其中比较突出的优点就是可以缩短服务上线的时间,和节省很大一部分开支。因为传统公司哪怕搭建一个简单的网站,也需要购买服务器,以及花费很多时间金钱去搭建自己所需要的基础设施系统。而利用AWS的话可以在短时间内搭建一个VPC,利用AutoScaling,LoadBalancer负载均衡器来启动自己所需要的EC2实例来满足业务需求,利用AWS只需要关注于核心业务逻辑的实现,而不用花费大量精力搭建基础设施。认识的某个初创公司在IT资源方面,仅仅利用AWS就节省了60%左右的开支。

        但是,即使利用AWS云技术搭建最常见的弹性系统,在有些方便仍然做不到完美。

        举个栗子,利用传统的方法搭建网站的话,必须得保证网站24小时运行,但并且由于不能弹性对应,假如配置了一个高性能,可以承担高负载的系统,那么即使当流量很小的时候,该系统仍然会消耗很多不必要的资源,明显浪费资源。但是如果配置了一个低性能的系统,当流量突然增大,系统可能就会承受不住而宕机。而利用AWS的AutoScaling的弹性机制就能轻松的解决这个问题。

        但是由于必须使网站处于24小时运行的状态,所以当没有人访问这个网站的时候,系统也必须以低性能的状态保持运行。这样仍然是会浪费资源,虽然比传统方法节省了很多;而且需要保持系统的组件更新到最新状态。而利用AWS中的Serverless架构能够很好的解决这个问题。 

        AWS中的架构一般会把前端和后端解耦,当需要读取或写入数据的时候,只需要执行后端的API即可,Lambda会运行相应的程序启动服务器,能够做到没有访问需求就不会消耗服务器资源。例如当有用户访问的时候,Lamba会运行编好的程序启动服务器,来提供系统运行需要的资源,当没有访问时,自然没有消耗,这时候也不用担心需要多少个服务器容量,设置服务器容量弹性变化的条件或者管理任何需要的服务器基础设施,能够做到使用多少资源就支付多少钱。但是,利用AWS的Lambda也有一定的限制,比如说它只能执行5分钟,之后AWS便会关闭这些资源,对于需要状态保持的系统会有一定的限制。这个的解决方法就是在S3上配置一个Nodejs或者是Angularjs的应用,然后这个应用利用的API使用Lambda函数,这样前端应用可以保存Session状态,后端API来管理数据的读取和写入。

        这里想介绍的需要搭建AWS的Serverless架构的服务有:

        ·S3,来存储Angular应用,由于S3存储桶具有托管静态网站的功能,利用S3来配置Angular应用最好,因为不需要设置所需服务器的容量;

        ·API Gateway,当应用的前端需要向后端写入数据或者是读取数据时,需要利用API的不同方法;

        ·Lambda,这个是按需执行代码的服务,当有人发起API请求的时候Lambda会被触发,执行自己定义的Lambda函数,当然有很多种方法来触发Lambda,发起API请求是其中一种;

        ·DynamoDB,是一种无关系型数据库,nosql,并且不需要启动服务器来运行,AWS会托管整个Dynamo数据库,这里用来存储数据,Dynamo数据库的费用支出是根据访问次数决定的,没有人访问该数据库的时候,就没有费用产生;

        ·Cognito,是AWS提供的认证服务,提供用户注册,登陆等服务来保护数据以及API,可以做到只有认证的用户才能访问保护的数据;       

        ·Route53,能够提供DNS服务,能够实现URL的跳转等;

        ·CloudFront,内容分发网络,能够将内容以缓存的形式分发到不同地方的数据中心,提供良好的访问体验。 

上一篇下一篇

猜你喜欢

热点阅读