六位一体Serverless化应用,帮你摆脱服务器的烦恼
随着互联网技术的飞速发展,越来越多的应用横空出世,是以不可避免带来了大量的服务器需求。大部分的开发者都选择购买或者租用服务器,然而这样也带来了诸多的烦恼。
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
六位一体Serverless化应用,帮你摆脱服务器的烦恼的更多相关文章
- 4 个场景揭秘,如何低成本让容器化应用 Serverless 化?
作者 | changshuai FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维.容量规划.云产品打通集成等责任,使得开发者可以专注业务逻辑.提高交付速度 ( ...
- Serverless 架构:用服务代替服务器
Serverless 架构:用服务代替服务器 转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需 加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:&q ...
- 为eclipse EE(汉化版) 配置Tomcat服务器
为eclipse EE(汉化版) 配置Tomcat服务器 很多小朋友在初次使用eclipse进行web开发的时候,很是蒙蔽.以前都是文本编辑器写好,做好目录结构,往tomcat下一扔,重启,搞定. ...
- 如何使用 K8s 两大利器"审计"和"事件"帮你摆脱运维困境?
概述 下面几个问题,相信广大 K8s 用户在日常集群运维中都曾经遇到过: 集群中的某个应用被删除了,谁干的? Apiserver 的负载突然变高,大量访问失败,集群中到底发生了什么? 集群节点 Not ...
- Serverless(baas & faas)无服务器计算
自从2014年AWS推出Lambda服务后,Serverless一词越来越热,已经成为一种新型的软件设计架构,即Serverless Architecture.作为一种原生于公共云的架构,Server ...
- CentOS 7 最小化安装配置以及网络服务器搭建、配置与管理
一.环境介绍: 运行软件:VMware Workstation Pro 系统环境:CentOS-7-x86_64-1810 系统网络运行模式:NAT模式 二.操作配置: 1.配置动态获取IP 1) 修 ...
- CSS3 pointer-events:none 让你摆脱事件的烦恼
以前没遇到这个属性,在一个偶然的博文下发现该属性真的好用,你是否遇到过写鼠标移入显示文本的效果时,鼠标在元素内的每一次移动都会造成要显示文本的闪烁或是突然的消失?只要在被控制的元素中加上这个属性完美解 ...
- 从函数计算架构看 Serverless 的演进与思考
作者 | 杨皓然 阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...
- 当 RocketMQ 遇上 Serverless,会碰撞出怎样的火花?
作者 | 元毅 阿里巴巴高级开发工程师 阿里巴巴云原生公众号后台回复 Knative,免费下载<Knative 云原生应用开发指南>电子书! 想必大家都比较了解 RocketMQ 消息服 ...
- Serverless架构详解:开发者如何专注于业务代码本身?
本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 演讲嘉宾:黄文俊,曾负责企业级存储.企业级容器平台等产品的架构与开发,目前主要负责SCF腾讯无服务器云函数产品相关. ...
随机推荐
- vue 项目打包 遇到问题 npm run build 无法打包
npm run build 打包 直接报错!!! 发现package.json中build的打包后边多了一个:prod 因此打包直接使用 npm run build:prod
- P1413 坚果保龄球
P1413 坚果保龄球 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大家可以发现这里的坚果其实是火爆辣椒2333,那么我们要尽量多消灭僵尸,就需要在僵尸位于1列时在放置(ans+ ...
- dpkt 简单应用
import dpktfrom dpkt.utils import mac_to_str,inet_to_strcap=f'D:/test_pacp/6.pcap'with open(cap,'rb' ...
- Redis 集群模式的安装与配置【源码安装redis-7.0.5】
Redis最新版下载地址:http://download.redis.io/releases/redis-7.0.5.tar.gz 步骤如下: 1)wget http://download.redis ...
- linux 命令下载文件
系统 ubuntu :若提示没有找到命令 请自行下截安装 sz 命令发送文件到本地:# sz filename rz命令本地上传文件到服务器:# rz执行该命令后,在弹出框中选择要上传的文件即可.
- sqlserver substring 函数截取text格式文本格式乱码导致的定位错误的问题
描述:使用 charindex 函数对 text 字段所要截取的内容下标读取例如:str(表字段名称-类型text)= <p>●123456</p> 截取 123 , inde ...
- nodejs的框架koa
koa:应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的 应用程序: 1.导入 const Koa = require('koa'); 2.创建koa的app实例 const ...
- DEM高程数据下载资源
最近发现了几个比较好的DEM高程数据免费下载资源,遂总结一下. clouldRF(https://cloudrf.com/terrain%20data)官方网站有说明其支持的地形数据来源,主要包括如下 ...
- Java (新)将Excel数据读取到ListMap
Java (新)将Excel数据读取到ListMap Maven依赖: pom.xml <!-- excel --> <dependency> <groupId>o ...
- cmd 下运行pyhon文件.py
第一步: wind+R打开[运行],输入cmd,点击确定 第二步: ①输入:[cd]指定pyhon文件目录 ② cd C:\Users\pc\Desktop\test ③在指定目录下输入pyhon文件 ...