Serverless+低代码的创意运营活动(2)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: Serverless+低代码的创意运营活动
系统安全设定


当用户中奖之后,系统会生成一个token,该tokenuid的组合,是用来判断用户是否中奖的重要依据,这里可能涉及到一个问题:为什么有了uid,还要增加一个token来进行组合判断呢?
其实原因很简单的,提交中奖信息和查询中奖信息,如果是通过uid来直接进行处理的,那么很有可能会有用户通过遍历等手段,非法获取到其他用户提交过的信息,而这一部分信息很有可能涉及到用户提交的收货地址等。所以为了安全,增加了一个token,在一定程度上,提升了被暴力遍历的复杂度。而这一部分的方法也很简单:

@csrf_exempt
def information(request):
    uid = request.GET.get("uid", None)
    token = request.GET.get("token", None)
    if None in [uid, token]:
        return JsonResponse({"Error": "Uid and token are required."})
    userInfor = UserModel.objects.filter(uid=uid, token=token)
    if userInfor.count() == 0:
        return JsonResponse({"Error": "No information found yet."})
    if not userInfor[0].result:
        return JsonResponse({"Error": "No winning information has been found yet."})
    if request.method == "GET":
        return JsonResponse({
            "Result": {
                "prize": userInfor[0].pre_prize,
                "name": userInfor[0].name,
                "phone": userInfor[0].phone,
                "address": userInfor[0].address
            }
        })
    elif request.method == "POST":
        name = request.POST.get("name", None)
        phone = request.POST.get("phone", None)
        address = request.POST.get("address", None)
        if None in [name, phone, address]:
            return JsonResponse({"Error": "Name, phone and address are required."})
        userInfor.update(name=name,
                         phone=phone,
                         address=address)
        return JsonResponse({"Result": "Saved successfully."})



整个流程是:

  1. 通过用户的uidtoken进行相关用户信息的获取;
  2. 如果请求方法是 GET 方法,那么则直接返回用户的中奖信息(指的是收货信息);
  3. 如果请求方法是 POST 方法,则允许用户进行中奖信息的修改(指的是收货信息);


其他安全方面的补充:

  1. 如何保证用户的token等信息的唯一性以及不可伪造性,这一部分在浏览器端是不太容易实现的,因为用户可能换浏览器,但是对于用户的在函数计算平台的函数服务中就相对容易实现了,所以采用域名下发阶段,对指定时间段下发过的域名信息进行记录,再在后期进行对比,以保证用户确实通过 Serverless Devs 开发者工具进行了项目部署,下发了临时域名,并在规定的时间内参加了活动;(如果用户注册了多个阿里云账号,进行该活动的参加,这个时候是被允许的)
  2. 如何保证奖品不会被超发,这一部分在该系统中,采用了一个比较 “笨” 的方法,但是也是针对小型平台更容易实现的方法。即先给用户一个奖品标记,然后再根据用户奖品在数据库中的时序位置,进行最终中奖信息的判断,例如,用户中奖一个机械键盘,在数据库中是中机械键盘的第 6 位置,但是一共只有 5 个机械键盘,所以此时会对用户的中奖信息二次核对并标记未中奖。(当然,这种做法针对小规模活动是可以的,但是针对大型活动是不可取的,因为用户是否中奖这件事情,会导致多次数据库的读写操作,在一定程度上是不合理的)
  3. 用户中奖之后,提交了奖品邮寄信息,如何保证该信息的安全性,不被其他人暴力遍历出来也是值得关注的问题,此处采用增加了一个随机token,以增加被暴力遍历出来的复杂度,进一步保障安全;


03


部署准备工作

本次部署无需域名,使用函数计算生成的自定义域名即可,依然需要安装好 Serverless Devs 工具,本次只需开通函数计算即可。

操作步骤

摇奖后台的部分模板还在准备中,仅演示部署前端和数据层的服务。

步骤 1:秘钥配置

参考 Serverless Devs 阿里云秘钥配置(网址见文末)

步骤 2:初始化

使用 Serverless Devs 命令行工具执行


s init blindbox-game


进入引导式操作


步骤 3:构建部署

修改一下相关的配置信息,执行s deploy

,时长01:04


04


效果查看




函数部署情况:

页面效果:

摇奖部分的应用模板正在准备中,后续也会统一在这个应用模板给大家提供展示。



05


结语



上面实践结束后关于低代码和 Serverless 这个话题想跟大家再展开一下,以下部分并会以理论性为主,希望能够给读者带来不一样的收获。

开发者视角的 Serverless + 低代码


就我自身而言的话,明确的结论是我并不排斥两者的相容,反而非常期待这两者结合能够进一步让我的工作更加高效,安全。
本次活动我的最大感触是,如果低代码平台能够跟 Serverless 无缝衔接就好了,比如我在低代码上调用接口现在只能构建发到线上之后才能测试,这点天然集成好的平台优势就会很明显。另外就是发布构建好前端之后还得再去跟后端接口组装,这个如果是统一平台的话搞完需求就可以一键发布,会省不少事。不过这里也比较矛盾,因为我也担心一旦低代码的前端跟 Serverless 的后端耦合在一起就会变得不灵活,被服务商锁定。

供应商视角的 Serverless + 低代码


可以看到现在云服务商的 Serverless 和低代码的服务商在互相融合。比如低代码平台领导者 outsystem 早在 2016 年就开始使用 AWS 的服务,比如 Lambda 等为他们的客户提供原生 APP 服务的构建。
以 serverless & model-driven application 作为主体服务的低代码平台 Trillo 则是以 Google 云服务构为基础帮助他们的用户构建 Serverless 服务和前端应用,当然国内外的各家云厂商也没闲着 Azure 将自家的低代码产品 Power Apps 融入了 Serverless 的能力形成 Serverless Power Apps,将二者的优势做了充分融合。
Aws 将前端的集成都交给了伙伴,自身更专注于服务侧的 Serverless 集成,并且推出了 Step Functions Workflow Studio 产品将 Serverless 跟自家几乎所有的产品串联到了一起。
国内腾讯推出了微搭低代码平台,也是主打 Serverless + 低代码,在小程序场景发力,各厂商的跟进也说明了对这个领域的重视。

打造 Serverless + 低代码平台的设想


Serverless + 低代码平台的价值是比较明确的,效率,安全,成本都是它的关键词。那么假设我们要去建设这样的平台需要做哪些方面的考虑呢?
首先是从平台能力上,应该要做到能够覆盖一个应用开发从前到后的方方面面。比如:

  • 数据建模
  • 数据模型 API 化
  • 使用 Serverless 构建后端应用逻辑
  • 支持部署 Long-Runing 的后端服务
  • 可扩展的外部服务集成
  • 文件存储
  • 逻辑编排
  • 各种安全能力比如身份验证,权限控制等
  • UI 编排
  • CI/CD
  • 应用可观测


这里可以简单理一下这个平台的功能设计,依托于云厂商的基础设施构建相应的能力。

相关的低代码能部分的能力有一些相关的开源产品,这里可以分享给大家:


另外跟云基础设施打通部分可以考虑利用 Serverless Devs 的 Iac 能力,尤其是目前在跟 FC 的集成上成熟度比较高,可以很方便的对函数全生命周期进行管理。
当然以上仅是笔者的一些设想,我深知实现这样的系统绝非易事,这里也只是抛转引玉用。
追求生产效率的提升始终是企业生产的重要话题,Serverless 和低代码在各自的技术领域上有着独立的分工,却也有着共同的提高生产效率的特性,学会同时掌握利用好这两个生产力工具或许会是从事信息产业同学的重要竞争力。


文中涉及链接汇总(可滑动)

阿里云API网关:https://www.aliyun.com/search?k=api%E7%BD%91%E5%85%B3&page
函数计算CustomRuntime:https://help.aliyun.com/document_detail/132044.html
Django:https://www.djangoproject.com/
ServerlessDevs阿里云密钥:http://www.serverless-devs.com/zh-cn/docs/provider-config/alibabacloud.html
相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
前端开发 安全 Serverless
中后台前端开发问题之云服务商在Serverless与低代码融合如何解决
中后台前端开发问题之云服务商在Serverless与低代码融合如何解决
119 0
|
前端开发 JavaScript 小程序
亚马逊云科技 Build On -Serverless低代码平台初体验-快速完成vue前端订单小程序
亚马逊云科技 Build On -Serverless低代码平台初体验-快速完成vue前端订单小程序
260 0
|
弹性计算 运维 供应链
阿里云云原生加速器企业硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
作为入选阿里云首期云原生加速器的企业,硬之城此前也获得了阿里云首批产品生态集成认证,通过云原生加速器项目携手阿里云共建更加丰富的云原生产业生态圈,加速云原生落地。
165611 1
阿里云云原生加速器企业硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
|
存储 运维 负载均衡
serverless 入门与实践26 | 学习笔记: 硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
serverless 入门与实践26 | 学习笔记: 硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
337 0
serverless 入门与实践26 | 学习笔记: 硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
|
移动开发 运维 前端开发
Serverless+低代码的创意运营活动(1)
Serverless+低代码的创意运营活动
277 0
|
人工智能 弹性计算 运维
基于开源项目 Serverless Devs 的创意应用|学习笔记
快速学习基于开源项目 Serverless Devs 的创意应用
基于开源项目 Serverless Devs 的创意应用|学习笔记
|
运维 前端开发 安全
人人都是 Serverless 架构师 | “盲盒抽奖”创意营销活动实践
当 Serverless 与低代码这两个不同的技术共同相交于同一个业务时会有怎样的价值展现?本文以 “盲盒抽奖” 这个 Serverless Devs 做过的创意营销活动为例,为大家讲述 Serverless 和低代码是如何搭配来满足一个业务诉求的。
人人都是 Serverless 架构师 | “盲盒抽奖”创意营销活动实践
|
弹性计算 运维 供应链
硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
简化用云的成本,把复杂留给自己,简单留给用户。
硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
|
消息中间件 数据采集 运维
Serverless在游戏运营行业进行数据采集分析的最佳实践
这个架构不光适用于游戏运营行业,其实任何大数据采集传输的场景都是适用的,目前也已经有很多客户正在基于Serverless的架构跑在生产环境,或者正走在改造Serverless 架构的路上。
4484 0
Serverless在游戏运营行业进行数据采集分析的最佳实践
|
1月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
396 29

相关产品

  • 函数计算
  • 下一篇
    oss云网关配置