为什么我要迁移 SpringBoot 到函数计算

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景。

作者:榴莲


为什么要迁移?


我们的业务有很多对外提供服务的 RESTful API,并且要执行很多不同的任务,例如同步连锁 ERP 中的商品信息到美团/饿了么等平台,在线开发票等。由于各种 API 和任务执行的不确定性,经常会因为资源不足导致服务不可用,但是盲目的扩容又很烧钱。整个团队每天都陷在不停的扩容,缩容之中。关键是有时候稍稍慢了一些,就会对业务照成影响,导致被投诉。每天还要被其他业务部门催着做新功能。更难的是,因为我们没有运维经验,多次被黑客把我们本来就不多的机器用来挖矿。作为一个初创公司的研发团队,我们的资源少,人手少,经验少,面对稳定性,安全性和业务的压力真的是非常痛苦。


在被前同事安利了函数计算以后,我发现这太有用了!迁移的过程非常顺滑,迁移的效果也大大超出了我的预期。下面是我觉得函数计算非常适合我们的理由:


  • 默认弹性,可以轻松应对大量 API 请求和任务,不会再因为扩容不及时导致资源耗尽引起的业务不可用了!
  • 无流量时支持缩容到 0,省钱神器,再也不用买虚拟机和负载均衡了,对我们来说降本效果杠杠滴!
  • 免运维,免去了虚拟机的运维成本!
  • 更安全,它不能被 SSH 登陆,而且也不会像虚拟机一样一直开着,等着被人扫描和攻破!
  • 零改造,无需修改代码,之前虚拟机上的 JAR 包直接就可以跑在函数计算上!


迁移步骤


有三种使用方式,这里我具体讲一下怎么在控制台上操作。


  • 使用函数计算控制台进行迁移。
  • 使用函数计算提供的 S 工具,通过命令行 + YAML 的方式进行部署,查看详情 1[1]
  • 使用函数计算控制台上的应用中心,从 GitHub 等源代码库中自动构建并部署。CICD/GitOps 直接就有了,太香了!查看文末详情 2[2]


1. 开通函数计算


访问控制台[3],点击“免费开通”将跳转到开通页面。


1.png


2. 创建服务


点击“服务及函数”,“创建服务”,输入“名称”后点击“确定”。


2.png


3. 对 JAR 包进行压缩,得到 ZIP 文件


注意!这里要对打包好的 JAR 包进行压缩,然后上传 ZIP 包!


备注:其实也可以直接上传 JAR 包,但是启动命令要写为 java org.springframework.boot.loader.JarLauncher 我个人不是很喜欢这种写法。我还是喜欢 java -jar gs-rest-service-0.1.0.jar 的写法。


3.png

4.png


如果你还没有可用的 JAR 包,请参考 SpringBoot 官方快速开始文档[4]进行构建。


4. 创建函数


  • 在“函数管理”页面,点击“创建函数”,
  • 选择“使用自定义运行时平滑迁移 Web Server
  • 运行环境”选择您需要的 Java 版本
  • 选择“通过 ZIP 包上传代码
  • 启动命令”为您在虚拟机上启动 JAR 包的命令,例如:java -jar rest-service-initial-0.0.1-SNAPSHOT.jar.zip
  • 监听端口”为您的 JAVA 程序在虚拟机上监听的端口,例如:8080
  • 请求处理程序类型”选择“处理 HTTP 请求”
  • 点击“创建”


5.png


5. 测试函数


在函数详情页面的触发器列表中找到“公网访问地址”。注意:因为相关规定,不能直接在浏览器中打开这个 URL,需要配置自己的域名才能在浏览器中访问。


6.png


你可以通过 curl 命令进行测试。


7.png


你也可以通过函数详情页中的“测试函数”页签直接进行测试。


8.png


6. 使用自己的域名访问函数


  • 点击“首页”,“域名管理”,“创建域名”,“添加自定义域名”
  • 复制页面中的“公网 CNAME”,在云解析 DNS 控制台[6]上为你的域名添加 CNAME 记录
  • 在路由配置中选择您刚建好的服务和函数
  • 点击“创建”
  • 完成!现在可以通过自己的域名访问服务了! 


9.png

10.png

11.jpeg

7. 更多进阶文档


配置 NAS 文件系统:

https://help.aliyun.com/document_detail/87401.html


配置 HTTPS:

https://help.aliyun.com/document_detail/90763.html


授权函数访问其他服务:

https://help.aliyun.com/document_detail/181589.html


访问 VPC 内的资源:

https://help.aliyun.com/document_detail/72959.html


访问 RDS 数据库:

https://help.aliyun.com/document_detail/84514.html


访问 Redis 缓存:

https://help.aliyun.com/document_detail/148798.html


更多快速入门文档:

https://fcnext.console.aliyun.com/overview


迁移后的效果


面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景。对我们这种不懂 Docker,不懂 Kubernetes,没有运维人员,虚拟机扩容缩容对我们来说都很难的小团队来说真是一大福利。同时,我们再也不用买虚拟机和负载均衡了!缩容到 0 和按量付费的方式也极大的降低了我们的成本!还有,我们再也没有被黑客攻破,用我们的钱来挖矿了!整体来说就两个字!真香!


参考链接:


[1] 详情 1:

https://github.com/devsapp/start-web-framework/tree/master/web-framework/java/springboot


[2] 详情 2:

https://fcnext.console.aliyun.com/applications/create


[3] 控制台:

https://fcnext.console.aliyun.com/


[4] SpringBoot 官方快速开始文档:

https://spring.io/guides/gs/rest-service/


[5] 云解析 DNS 控制台

https://dns.console.aliyun.com/


相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4月前
|
Java 开发工具 git
迁移spring项目到springboot
迁移spring项目到springboot
56 0
|
容灾 Serverless
《云迁移与云容灾-Serverless架构企业数据备份和迁移》电子版地址
云迁移与云容灾-Serverless架构企业数据备份和迁移
513 0
《云迁移与云容灾-Serverless架构企业数据备份和迁移》电子版地址
|
机器学习/深度学习 IDE Java
springboot 应用迁移
快速学习 springboot 应用迁移
124 0
springboot 应用迁移
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
151 0
SpringBoot 项目与被开发快速迁移|学习笔记
|
弹性计算 监控 NoSQL
如何把 ThinkPHP 5 的项目迁移到阿里云函数计算来应对流量洪峰?
Serverless 是以后的趋势,开发者能够有更多的精力去关注业务层。从开始预计迁移到代码的修改以及阿里云函数计算 FC 文档查阅,到迁移成功,花费了大概 3 天的时间,对阿里云函数计算 FC 有了更深层次的认知。
如何把 ThinkPHP 5 的项目迁移到阿里云函数计算来应对流量洪峰?
|
弹性计算 前端开发 JavaScript
如何将传统 Web 框架迁移部署到 Serverless 架构?
与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式。
198993 0
|
监控 IDE Java
使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼
本次体验,使用函数计算部署了一个 springboot 项目,总体来说过程很流畅,只需要在控制台点点就可以生成并部署好一个项目,对于新手来说非常的友好,省去一大堆传统部署项目时的环境搭建,安装依赖等等,可以真正的让我们做到只关心业务逻辑的开发!
使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼
|
弹性计算 监控 NoSQL
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
199 0
如何把thinkphp5的项目迁移到阿里云函数计算来应对流量洪峰?
|
弹性计算 JavaScript 前端开发
ServerlessDev+云效流水线迁移Express+NodeJS前端应用至函数计算
笔者所在的公司,PC端页面使用了NodeJS进行部署。由于函数计算(FC)对nodejs有非常优秀的支持,笔者就将整个前端项目由ECS部署迁移至函数计算。
396 0
ServerlessDev+云效流水线迁移Express+NodeJS前端应用至函数计算
|
弹性计算 人工智能 监控
你真的会在函数计算FC上部署springboot云上博客吗
Serverless中文名称为无服务器模式的一种云原生开发模型,可以让程序员专注于构建整个应用逻辑和运行程序,而不需要进行服务器的操心。这一部分可以理解成这样,程序员减少了不必要的工作,然后将服务器外包给各个云开发商,比如说我们现在用的众多云(阿里云微软云、亚马逊和Google云服务等)开发人员可以通过将产品开发的打包到容器当中然后进行部署即可。
27772 6
你真的会在函数计算FC上部署springboot云上博客吗

相关产品

  • 函数计算