随着互联网技术的飞速发展,越来越多的应用横空出世,是以不可避免带来了大量的服务器需求。大部分的开发者都选择购买或者租用服务器,然而这样也带来了诸多的烦恼。

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化应用,帮你摆脱服务器的烦恼的更多相关文章

  1. 4 个场景揭秘,如何低成本让容器化应用 Serverless 化?

    作者 | changshuai FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维.容量规划.云产品打通集成等责任,使得开发者可以专注业务逻辑.提高交付速度 ( ...

  2. Serverless 架构:用服务代替服务器

    Serverless 架构:用服务代替服务器 转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需 加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:&q ...

  3. 为eclipse EE(汉化版) 配置Tomcat服务器

    为eclipse EE(汉化版) 配置Tomcat服务器   很多小朋友在初次使用eclipse进行web开发的时候,很是蒙蔽.以前都是文本编辑器写好,做好目录结构,往tomcat下一扔,重启,搞定. ...

  4. 如何使用 K8s 两大利器"审计"和"事件"帮你摆脱运维困境?

    概述 下面几个问题,相信广大 K8s 用户在日常集群运维中都曾经遇到过: 集群中的某个应用被删除了,谁干的? Apiserver 的负载突然变高,大量访问失败,集群中到底发生了什么? 集群节点 Not ...

  5. Serverless(baas & faas)无服务器计算

    自从2014年AWS推出Lambda服务后,Serverless一词越来越热,已经成为一种新型的软件设计架构,即Serverless Architecture.作为一种原生于公共云的架构,Server ...

  6. CentOS 7 最小化安装配置以及网络服务器搭建、配置与管理

    一.环境介绍: 运行软件:VMware Workstation Pro 系统环境:CentOS-7-x86_64-1810 系统网络运行模式:NAT模式 二.操作配置: 1.配置动态获取IP 1) 修 ...

  7. CSS3 pointer-events:none 让你摆脱事件的烦恼

    以前没遇到这个属性,在一个偶然的博文下发现该属性真的好用,你是否遇到过写鼠标移入显示文本的效果时,鼠标在元素内的每一次移动都会造成要显示文本的闪烁或是突然的消失?只要在被控制的元素中加上这个属性完美解 ...

  8. 从函数计算架构看 Serverless 的演进与思考

    作者 | 杨皓然  阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...

  9. 当 RocketMQ 遇上 Serverless,会碰撞出怎样的火花?

    作者 | 元毅  阿里巴巴高级开发工程师 阿里巴巴云原生公众号后台回复 Knative,免费下载<Knative 云原生应用开发指南>电子书! 想必大家都比较了解 RocketMQ 消息服 ...

  10. Serverless架构详解:开发者如何专注于业务代码本身?

    本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 演讲嘉宾:黄文俊,曾负责企业级存储.企业级容器平台等产品的架构与开发,目前主要负责SCF腾讯无服务器云函数产品相关. ...

随机推荐

  1. Jupyter lab 切换kernel

    在使用pytorch的时候需要用到pandas这个包,报错说"no module named pandas", 但是我在终端查找了conda 装了pandas,所以不是安装的问题, ...

  2. SQL之查询

    1. SQL之模糊查询 例如查询姓名时,不用输入全名,仅仅输入其中的一部分 语法: select 列名 from 表名 where 列名 like 匹配串 其中 匹配串用英文的单引号括起来 四种匹配模 ...

  3. 实验1 Python开发环境使用和编程初体验

    # print输出的几种用法 # 用法1:用于输出单个字符串或单个变量 print('hey, u') # 用法2: 用于输出多个数据项,用逗号分隔 print('hey', ' u') x,y,z ...

  4. 如何在微信小程序中使用ECharts图表

    在微信小程序中使用ECharts 1. 下载插件 首先,下载 GitHub 上的 ecomfe/echarts-for-weixin 项目. 下载链接:ecomfe/echarts-for-weixi ...

  5. PLC入门笔记11

    1.开关? 输入 拨杆开关.点动开关.常开.常闭开关 霍尔接近开关(磁场 N极导通 3线+-DC24V ).电容接近开关(非金属).电感接近开关(金属) 2.输入接线? NPN型,不需要外接电源,直接 ...

  6. 如何修改被编译后DLL文件 (转发)

    我们平时在工作中经常会遇到一些已经被编译后的DLL,而且更加麻烦是没有源代码可以进行修改,只能针对这个DLL的文件进行修改才能得到我们想要的结果:本文将通过一个实例来演示如果完成一个简单的修改;我们将 ...

  7. 库已安装但找不到ttkbootstrap库

    cmd里装,弹提示Requirement already satisfied pip install --target=F:\Python37\lib ttkbootstrap https://blo ...

  8. 十大经典排序之堆排序(C++实现)

    堆排序 通过将无序表转化为堆,可以直接找到表中最大值或者最小值,然后将其提取出来,令剩余的记录再重建一个堆, 取出次大值或者次小值,如此反复执行就可以得到一个有序序列,此过程为堆排序. 思路: 1.创 ...

  9. js计算某一天是本月的第几周

    需要实现一个小需求,计算2月24号是2月的第几周: 废话不多说,直接上代码: /** * a = d = 当前日期 * b = 6 - w = 当前周的还有几天过完(不算今天) * a + b 的和在 ...

  10. md文件使用说明

    md文件简单使用介绍 二级标题 三级标题 斜体文本 粗体文本 粗斜体文本 分隔线 删除号 带下划线 创建脚注格式类似这样 [1]. #include <iostream> using na ...