简介:本文将介绍如何以超低成本搭建动态网站,并实现灵活扩展、限流等效果。最后跟大家聊聊“现代应用”的概念。相信很多同学都有过想要拥有自己网站的想法,但是想要搭建一个动态网站,需要购买云主机,购买带宽,自己搭建环境,部署维护。综合成本会非常高。如果只是静态站点,方式很多,价格便宜,但整体功能会比较弱,效益效果会差很多。接下来,我们将使用ServerlessDevs来演示如何使用Serverless架构构建现代Web动态站点。构建现代web动态站点一、架构概述首先介绍一下这个web应用的架构图:我们使用阿里云网关作为主要的流量入口,然后将动态请求转发到阿里云函数计算,将静态文件转发到阿里巴巴云对象存储OSS来处理。并在网关上做一系列的安全措施,比如限流。2.准备工作如上图所示,我们需要激活几个阿里云产品:云解析DNSAPI网关功能计算对象存储OSS然后准备一个自己喜欢的域名。你可以去万网申请一个。最便宜的才几块钱。笔者申请的serverless-developer.com顶级域名仅需48元/年。本次部署将选择香港地区。域名需要实名认证。建议提前备案。(另外,DNS域名解析是要钱的,个人版第一个域名大概40.8元/年,以后每增加一个就要加收20元。)安装serverlessdevs开发者工具:npminstall-g@serverless-devs/s3,操作步骤1)关键配置对于新手来说,使用ServerlessDevs的第一步是配置相关云厂商的关键信息,以便进行相关的构建和部署操作。只需打开电脑的终端,输入sconfigadd即可进入引导操作。2)配置应用初始化key后,为了更方便的检索相关应用模板,我们可以登录serverlessdevs应用中心,搜索“modern-web-application”,然后如下图操作.1.点击复制命令2.打开命令行终端粘贴3.输入事先准备好的域名(如demo.serverless-developer.com)和ossbucket名称(hanxie-serverless-web)根据引导提示。建议ossbucket放在Consolecreation3)构建部署初始化后,可以选择修改项目的配置,比如更改网关的组名:服务名或函数名函数计算:修改后,直接输入sdeploy,大约会有一个1部署构建时间不到一分钟,最终结果如下:4)访问查看我们部署好了之后,就可以检查网关、OSS、函数计算、DNS是否已经部署完成,完成我们需要的。网关部分函数计算部分OSS部分DNS解析部分此时我们可以尝试访问demo.serverless-developer.com,发现访问不上:有两种可能的原因:网关的域名没有绑定成功地。这时候我们可以查看apigateway组管理myserverlessdemo查看域名绑定,发现这部分其实是可以的;那么可能是OSS域名没有绑定成功。我们可以通过OSS控制台查看ObjectStorageBucket列表传输管理,发现上面的域名还没有绑定;这里我们点击域名绑定,输入上面的域名进行绑定,完成后再次访问该域名,可以看到:serverlessdevs应用中心的部署效果5)站点安全我们部署的站点还没有https,所以需要改成https站点来增加安全性。我们可以在阿里云SSL上申请一个免费的证书,然后绑定到一个域名上。具体操作如下:访问阿里云官网搜索ssl证书,进入purchase选择免费域名,然后进入SSL控制台选择“SSL证书-免费证书”,点击创建证书。此时会生成一个需要申请证书的数据列表:点击右侧的“证书申请”填写你的信息和域名,然后验证,通过后“提交审核”:下一步,返回到apigateway控制台绑定域名部分选择“证书”,可以看到已经创建的域名:同步后稍等片刻,访问https://demo.serverless-devel...看效果:到目前为止你有一个加密的网站。加密之后,还有一个问题需要考虑。比如我这次把站点做成demo,可能会面临很多人的访问,甚至被攻击;那么我应该如何限制过度流量的高成本呢?有了网关,限流的问题就变得简单了。我们登录网关的控制台:选择插件管理;点击经典网络实例插件-流控;并制定政策;然后设置每分钟最多访问5次:创建策略后,绑定api,具体操作如下图:设置好策略并绑定api访问首页后,我们来测试一下。访问该域名,然后刷新5次,第6次你会发现网站无法访问:至此,说明你的网站已经成功限流了。更多serverless的安全问题,比如auther认证、vpc访问、多环境部署等,后续可以和大家一起探讨。限于篇幅,本文不做说明。有兴趣的可以在评论区留言。6)站点可观测性站点上线后,必然需要一些可观测的能力,比如pv、uv、api异常等,相关的产品很多,比如百度的统计,谷歌的统计等,这里我推荐使用ARMS的前端监控。除了一般的指标监控,还可以通过它自定义上报一些关键信息,比如统计分享按钮的点击次数,上传sourceMap定位问题等。Serverless应用架构拆解1.整体目录结构说明本serverless架构项目主要包括3个部分:s.yaml配置文件jsruntimeapi服务前端标准react项目工程你可以自由选择后端api服务和前端的架构开发框架完全不会影响整体效果.值得一提的是,这里使用的api框架是ServerlessDevs提供的Serverless首创开发框架。它已针对冷启动进行了优化。可以使用熟悉框架的开发语法糖。比如这里是koa风格的语法糖。您也可以选择快递。详情可以访问官方库查看,非常适合中小型Web项目开发。2.网关描述其实这个web应用架构的核心部分就在网关,动态和静态的分发都是通过网关来实现的。域名和证书绑定还通过网关进行各种限流和安全验证。为了更好的使用网关,我们开发了apigateway组件,它是基于官方sdk定制的api发布服务。它是完全开源和开放的。您可以根据需要自定义更多的网关路由部署流程,例如添加多环境设置。这里我简化了配置,让开发者可以专注于路由和目标服务。比自己一个一个地配置API节省了很多时间。但是目前还是比较复杂的。关于这部分方案,会通过serverless桌面可视化配置来解决。大家也可以提交更多问题给我们的开发者官方,共同完善网关组件。3、关于费用的真实解释其实我们在开头就提到了,这种serverless网站的费用其实是很低的。如果排除数据库的使用,只需要申请一个域名,可能就几块钱。以后就完全按流量付费了。对于个人或初创网站来说,这无疑是一个巨大的好处。在这里,我可以与您分享我的个人账单。可见成本真的很低。当然这是你的应用比较小的时候,不代表企业级生产的情况。一旦你的项目爆发了,等到流量和资费上来之后,你才能真正感受到Serverless架构的优势。4.关于数据库本文中的应用模板只是做业务转发,不涉及数据库。想必大家也会很关心数据库的使用,所以在接下来的系列章节中,我会重点介绍从tablestore表中存储这个Serverless。从介绍Nosql开始,后面会逐步介绍Mysql和mongodb的用法。虽然在serverless架构下使用数据库还有很多问题,比如数据库连接冷启动时间增加,数据库前成本高,但是大家不用担心。相信随着Serverless架构的广泛落地,这些问题一定会迎刃而解。什么是“现代应用”文章标题提到了“现代应用”的概念。我在这里给大家解释一下什么是“现代应用”。事实上,现代应用的概念已经得到越来越广泛的认可。无论是阿里云、华为云,还是AWS,都在提倡现代应用的理念。这里引用一段AWS对现代应用程序的概念解释:现代应用程序是现代技术、架构、软件交付实践和运营流程的结合,可以引导团队更快、更频繁、更一致、更安全地交付价值。这些应用程序通常利用松散耦合的分布式技术,并专注于事件驱动的无服务器组件,这些组件允许团队卸载无差别的繁重工作,以便将更多时间花在为客户提供价值上。现代应用程序还利用操作和安全工具来提高部署的可靠性和一致性,同时确保一天多次部署的安全性。与依赖手动流程或更重要的运营管理相比,使用基础设施、安全性和部署的自动化使拥有现代应用程序的团队能够更快地移动。简单概述就是,现代应用是现代技术、系统结构、软件交付实践和运营流程的结合可以指导团队更快、更频繁、更一致、更安全地交付价值。像无服务器和事件驱动架构这样的架构在现代应用程序的范畴中丢失了。这篇文章也客观的论证了这个架构的价值所在,包括超低成本、安全性、可扩展性等等,但是在软件工程方面仍然没有灵丹妙药,在现代应用中还有很多问题需要解决,还需要大家一起实践验证。总之,我相信只有通过实际测试,才能真正得到我们想要的答案。原文链接本文为阿里云原创内容,未经许可不得转载。
