随着互联网技术的飞速发展,越来越多的应用横空出世,是以不可避免带来了大量的服务器需求。大部分的开发者都选择购买或者租用服务器,然而这样也带来了诸多的烦恼。
1.硬件成本高昂
购买服务器费用昂贵,除了基础的购买费用外,服务器对机房也有苛刻的要求,温度、湿度、防震等等的高要求都需要开发者投入大量的成本。租用服务器虽然不需要考虑服务器环境的问题,但一个性能强大的服务器也需要花费一大笔租赁费用。这些费用也许对一些大公司来说并不算什么,可对于一个刚刚起步的小项目却是无力承担的。
2.硬件资源浪费
为了能够应对应用可能遇到的流量高峰,开发者往往需要租用大量能够支撑流量上限的服务器,因此租用成本飙升。同时,在流量平稳时会存在服务器资源闲置的情况,亦造成不小的浪费。
3.维护成本可观
除了硬件上的花费,服务器的维护也需要人力支持。运维人员需要7*24小时的监控服务器状态,来应对可能出现的服务器宕机情况。
4.无法开箱即用
服务器购买或者租用回来后并不能立刻投入工作,还需要开发者对服务器进行调试、部署、测试等,才能让这些服务器最终投入使用。
服务器带来的烦恼还有很多很多,面对这些弊端,业界Serverless概念正在迅速兴起。其无需开发者购买或者租用服务器,Serverless服务商已经将服务器所需要的资源、部署、维护等统统完成了,开发者只需要接入Serverless服务商封装好的不同服务,即可基本满足他们对服务器的功能需求。
我们的男主HUAWEI AppGallery Connect(以下简称AGC)提供的Serverless服务就将服务器的开发分解成了几个不同的组件:有构建用户鉴权系统的认证服务、有承载服务器逻辑的云函数、有存放数据的云数据库、有存放资源的云存储、有托管前端页面的云托管,还有解决高并发并提升项目响应速度的云缓存等等。
开发者只需要聚焦自身的业务逻辑,将他们分解配置到对应的服务中就可以正式上线运行,免除了诸如服务器的购买或租用、维护的人力、环境的部署等与业务无关的繁琐事务。
瑞地科技健康管理平台在开发中即接入了Serverless服务,降本效果显著。
其整个平台分为健康管理小程序、管理中心和咨询师管理,一个移动端、两个平台,共享一套数据库内的数据。基于业务本身,他们的痛点很明显:① 至少需要两个后台开发团队同步开发才能保证开发周期,②测试环境、演示环境、正式环境,多环境部署及优化后再部署,细节多容易出错。
接入AGC Serverless服务后,高效解决了上述困境,其后端开发在保障项目进度的同时人员缩减一半,人力成本降低50%,且Serverless免运维的特性亦使得运维成本降低100%。
如瑞地科技健康管理平台这般,Serverless在项目的WEB管理系统中要如何应用?下面就详细给大家分享下。
WEB管理系统,Serverless化的逻辑架构示意图如下。
WEB前端
项目管理系统的前端是WEB页面,用户通过网址访问。作为一个管理系统,用户首先接触到的应该就是登录功能了。AGC提供的认证服务提供了快速构建登录系统的能力。通常用户习惯的登录方式如手机号码、邮箱或公司内部的帐号,认证服务都可以满足。开发者无需与手机运营商对接或者自行搭建邮箱服务器,只需集成认证服务的Web SDK就可以直接接入整套的手机号码和邮箱地址的登录,包括登录/注册/发送验证码等功能。所有接口都是免费调用,唯一的收费项就是发送验证码所产生的短信费用。此外,认证服务还为后续的其它Serverless服务提供用户鉴权能力。
后端微服务
用户帐号系统搭建完成后,我们就来到了项目的后端逻辑部分。通过逻辑架构示意图我们可以看出这个后端系统中最核心的部分就是云函数和它所承载的后端逻辑。其后端的微服务是采用Spring Boot框架开发,我们可以选择通过HTTP请求调用的自定义运行时函数方式来进行云函数改造。Spring Boot框架的微服务逻辑无需太大改造,只需要在项目中创建一个对外暴露的invoke接口,外部在调用函数时通过这个invoke接口做统一逻辑分发即可。
invoke接口的代码样例:
@RequestMapping(path = "/invoke", method = RequestMethod.POST)
public Object postSimple(HttpServletRequest req, @RequestBody JSONObject body)
接口添加完成后,我们就可以将微服务打包成jar包,并按照如下的格式准备函数包并上传部署即可。
function.zip
|---bootstrap //可执行文件,启动Server
|---WiseFunctionCustomDemo.jar
|---其他相关代码和依赖等
其中bootstrap文件示例如下
#!/bin/bash
java -jar WiseFunctionCustomDemo.jar
函数准备好后,我们就可以通过创建函数时生成的HTTP请求地址来触发函数。
后端系统除了函数承载的逻辑外,还需要存放数据的数据库、存放文件的存储系统、支撑函数高并发和快速响应等性能指标的缓存。在这,云数据库,云存储和云缓存可以为你一一实现。
所有的数据库和存储的操作都可以由云函数统一管理,只需要接入对应服务的Server SDK,即可进行数据库的增删改查以及文件的存储下载分发。云缓存服务也提供了对应的SDK进行管理,由于云缓存服务是基于Redis打造,故对于熟悉Redis的开发者可以极速上手。
部署上线
前端后端都愉快的打造完成,最后一步就是部署上线了。为了贯彻0服务器的宗旨,整个管理系统网页的部署可以通过云托管服务来进行。开发者前端的软件包直接上传托管在云托管中,并选择使用自己通过国家备案的域名来进行访问,这样不需要任何的服务器便能让外部用户直接访问整个系统。
云函数、云数据库、云存储、云缓存、云托管、认证服务,AGC提供的这些服务在项目中六位一体的实现了WEB管理系统Serverless化,就此将服务器的烦恼统统甩到“云”后。
另外,目前云函数、云数据库、云存储、认证服务已覆盖鸿蒙应用/鸿蒙元服务的开发,全面助力鸿蒙开发者。
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh