“ 本篇实战将介绍如何以超低成本构建动态的 Web 站点,并且实现灵活扩展,限流等效果,最后再跟大家聊一聊“现代应用”的相关概念。
”相信很多同学都有过想要拥有自己的 Web 站点的想法,但是如果想要搭建动态的站点,需要采购云主机,买带宽并且自己搭建环境,部署运维,整体下来成本会非常高。若如果只是搞静态的站点的话,方式很多也很便宜,但是整体功能性就会比较弱,且收益效果也会差很多。
下面我们就使用 Serverless Devs 为大家实操演示一下如何构建 Serverless 架构的现代化 Web 动态站点。构建现代化 Web 动态站点
首先为大家介绍一下本次 Web 应用的架构图:
我们采用阿里云网关作为主流量入口,然后将动态请求转发给阿里云函数计算,静态文件则交给阿里云对象存储 OSS 来处理。并在网关上做一系列的安全处理措施,如限流等。
如上图所示,我们需要提前开通几款阿里云的产品(相关网址汇总在文末):
云解析 DNS
API 网关
函数计算 FC
对象存储 OSS
然后准备一个自己喜欢的域名,可以去万网申请一个,最便宜的只有几块钱,笔者申请的 serverless-developer.com 域名仅 48 块/年。此外本次部署将选择香港 region, 域名需要实名认证,建议提前进行备案。 (另外说一下 DNS 的域名解析是要花钱的,个人版的话第一个域名大约 40.8块/年,此外每增加一个需额外另加 20 块钱左右。)
安装好 Serverless Devs 开发者工具 npm install -g @serverless-devs/s
对于新手而言,使用 Serverless Devs 的第一步就是将相关云厂商的秘钥信息配置好,这样才能够进行相关的构建部署操作。只需要打开电脑的终端,然后输入s config add,即可进入引导式操作 。 (打开文末密钥获取文档链接可查看更详细的阿里云秘钥教程 )
秘钥配置好,为了更便捷地检索相关应用模板,我们可以登录 Serverless Devs 应用中心, 搜索 "modern-web-application",然后根据下图所示操作即可。
初始化之后可以选择对项目进行配置修改,比如更改网关的分组名:
函数计算的服务名或者函数名:
改好之后直接输入s deploy即可,此处大约会有一个 1 分钟不到的部署构建时间:
最终返回结果如下:
当我们部署好之后,我们可以查看一下网关,OSS,函数计算,以及 DNS 是否已经部署完成我们所需要的内容。- 网关部分
此时我们可以尝试访问一下 demo.serverless-developer.com,发现访问不通:
原因有以下两种可能性:
2 . 那么有可能就是 OSS 的域名未绑定成功,我们可以通过 OSS 控制台查看:
这里我们点击域名绑定,将上述域名输入绑定,完成后再次访问域名,可以看到: Serverless Devs 应用中心的部署效果
我们部署的站点还不是 https 的,所以需要把它变成 https 的站点以增加其安全性。
我们可以在阿里云 SSL 上申请免费的证书,然后绑定到域名上,具体操作如下:
之后进入 SSL 控制台 选择 “SSL证书-免费证书”,点击“创建证书”。
此时会生成一列待申请证书的数据:
点击右侧的“证书申请”将你的信息和域名填写上去,然后进行验证,通过后“提交审核”:
接下来回到 apigateway 控制台,域名绑定部分选择“证书”,可以看到已经创建好的域名:
同步后稍等片刻,访问 https://demo.serverless-developer.com 即可看到效果:
至此你已经拥有了一个加密的 Web 站点。
加密之后还需要考虑一个问题,比如这次我把站点做成 demo,可能会面临很多人的访问,甚至被攻击;那么我应该如何进行限制流量过多产生的高昂费用呢?有了网关之后,限流的问题就变得简单了。
我们登入到网关的控制台:
1 . 选择插件管理;
2 . 点击经典网络实例插件-流量控制;
3 . 并创建策略;
然后设置 1 分钟最多可访问 5 次:
创建好策略之后就是绑定 api,具体操作如下图所示:
设定好策略后、绑定好访问首页的 api 后,我们进行一下测试。访问域名,然后刷新 5 次,第 6 次的时候会发现网站无法访问: 至此说明你的网站已经成功限流了。
关于更多 Serverless 安全的问题比如 auther 认证、vpc 访问、多环境部署等问题,可以在后面跟大家再一起探讨,由于篇幅有限遂不在本文中展开讲解了,大家如果感兴趣可以在评论区留言。
站点上线后不可避免的会需要一些可观测的能力,比如 pv, uv,api 异常等等。相关的产品有很多,比如百度的统计,Google 的统计等。这里可以给大家推荐使用 ARMS 的前端监控, 除了通用的指标监控,你还可以通过它自定义上报一些关键信息,如统计分享按钮点击数,上传 sourceMap 定位问题等。
1、整体目录结构说明
这个 Serverless 架构的工程主要包含 3 个部分:
s.yaml 配置文件
js runtime 的 api 服务
前端标准 react 项目工程
你可以自由选择后端 api 服务的架构,以及前端开发框架,完全不会影响整体效果。值得一提的是,这里使用的 api 框架是 Serverless Devs 提供的 Serverless first 的开发框架,针对冷启动做了一些优化,你可以采用熟悉框架的开发语法糖,比如这里是采用 koa 式的语法糖,你也可以选择 express 的,具体细节可以访问官方库去查看,非常适合中小型 Web 项目开发。
其实这个 Web 应用架构核心的部分是在网关,通过网关实现了动静态分流。域名及证书绑定,也是通过网关做各种限流和安全验证。为了更好的使用网关我们开发了 apigateway 的组件,它是基于官方的 sdk 量身定制的 api 发布服务。它是完全开源开放的,你可以根据需要自己去定制更多的网关路由部署流程,比如加入多环境的设置等,这里我对配置做了一些简化,让开发者关注于路由和目标服务,相比自己一个一个去配置 api 要节省很多时间。
不过目前看依然比较复杂,关于这部分计划会通过 Serverless Desktop 可视化配置解决,大家也可以给我们 Devs 官方提更多的 issue,一起把网关组件完善起来。
其实一开始我们就提到了 Serverless 架构的 Web 站点费用其实很低,如果排除使用数据库的情况下,你只需要申请一个域名,可能几块钱就行,后面会完全按流量计费。对个人或者新创企业的站点而言,无疑是个巨大的利好,这里可以给大家分享一下我的个人账单。
可以看到费用确实低廉,当然这是在你应用比较小的情况下,不代表企业级生产的情况。如果你的项目一旦爆发,流量、资费上来之后,你就更能真实感受到 Serverless 架构的优势了。
本篇文章的应用模板仅是做服务转发,所以还没有涉及数据库,想必大家也会非常关心数据库的使用,所以在接下来的系列篇章中我会重点先从 Tablestore 表格存储 这个 Serverless 的 Nosql 介绍开始,后面也会跟大家逐步介绍 Mysql,mongodb 的使用情况。
虽然使用数据库在 Serverless 架构中依然存在诸多问题,比如数据库连接会增加冷启动时间、数据库前成本依旧高昂,不过大家不必担心,相信随着 Serverless 架构的广泛落地,这些问题一定会迎刃而解的。
文章标题提到了"现代化应用"的概念,在这里也跟大家解释一下,什么是 "Modern Application"。其实现代化应用这个概念已经被越来越被广泛的认可了。不管是阿里云,华为云,AWS 都在推广现代化应用的理念。这里引用一段 AWS 对 Modern Application 的概念解释:
A modern application is the combination of modern technologies, architectures, software delivery practices, and operational processes that lead teams to deliver value more quickly, frequently, consistently, and safely. These applications typically take advantage of loosely coupled, distributed technologies and focus on event-driven, serverless components that allow teams to offload undifferentiated heavy lifting in order to spend more time on delivering value for their customers. A modern application also takes advantage of operational and security tooling to increase the reliability and consistency of deployments, while making it safe to deploy many times a day. The use of automation of infrastructure, security, and deployments allows the teams that own modern applications to move more quickly than if they were relying on manual processes or more significant operational management.
简单概述就是,现代化应用是现代技术、体系结构、软件交付实践和操作流程的组合,可以引导团队更快、更频繁、更一致、更安全地交付价值,像 Serverless 以及事件驱动的架构这些都输于现代化应用的范畴。
本篇文章也客观展示了这种架构的价值所在,包括超低成本,安全,可扩展等,不过依然是那句话软件工程没有银弹,Modern Application 也依然存在很多问题需要去解决, 需要大家一起去实践验证。总之我相信唯有经过实践检验才能真正得到我们想要的答案。
文中涉及网址汇总:
Serverless Devs:https://github.com/Serverless-Devs
云解析DNS:https://wanwang.aliyun.com/domain/dns
API网关:https://www.aliyun.com/product/apigateway
函数计算:https://www.aliyun.com/product/fc
对象存储OSS:https://www.aliyun.com/product/oss
万网: https://wanwang.aliyun.com/
密钥获取文档:http://www.serverless-devs.com/zh-cn/docs/provider-config/alibabacloud.html
Serverless Hub:https://serverlesshub.resume.net.cn/#/hubs/special-view
选购SSL证书:https://www.aliyun.com/product/cas
应用实时监控服务ARMS:https://www.aliyun.com/product/arms?spm
官方库:https://github.com/devsapp/dk-example
apigateway组件:https://github.com/devsapp/apigateway
Tablestore表格存储:https://www.aliyun.com/product/ots
本文由哈喽比特于2年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/wDe451czx746v83y7BZeHQ
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。