{"componentChunkName":"component---src-templates-best-practice-detail-tsx","path":"/best-practice/2020-11-11-imweb-serverless","result":{"data":{"currentBlog":{"id":"00fbb971-7dac-5865-b1ef-86077c2102b0","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/20201111/1605093413809-QQ20201111-191440%402x.jpg","authors":["陈丽杭"],"categories":["best-practice"],"date":"2020-11-11T00:00:00.000Z","title":"腾讯 IMWEB 前端团队一站式 Serverless 开发解决方案","description":"本文将分享 IMWEB 团队对 Serverless 的实践方案","authorslink":null,"translators":null,"translatorslink":null,"tags":["Serverless","IMWEB"],"keywords":null,"outdated":null},"wordCount":{"words":441,"sentences":95,"paragraphs":95},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-11-11-imweb-serverless.md","fields":{"slug":"/best-practice/2020-11-11-imweb-serverless/","keywords":["serverless","云函数","函数","serverlesscloud","jpeg","网关","开发"]},"html":"<p>IMWeb 团队隶属腾讯公司，是国内最专业的前端团队之一。</p>\n<p>IMWeb 团队专注前端领域多年，负责过 QQ 资料、QQ 注册、QQ 群等亿级业务。目前聚焦于在线教育领域，精心打磨 腾讯课堂、企鹅辅导及 ABCmouse 三大产品。</p>\n<p>学习成就梦想，我们希望能用技术改变教育，改变世界。</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201116/1605494640818-image%20%284%29%20%282%29.jpg\"></p>\n<blockquote>\n<p>前言：如今的 Serverless 可以说是一大有潜力的新技术方向，尤其在当下上云的热潮中，Serverless 因其免运维、自动扩容、支持多种编程语言等优势，对前端来说，是一大提升服务开发、维护效率的利器也是可尝试全栈发展的方向，但也因为其新，对落地到团队开发中，结合团队开发流也是遇到了一些挑战，本文将分享 IMWEB 团队对 Serverless 的实践方案</p>\n</blockquote>\n<h2 id=\"一、imweb-团队-serverless-研发模式的演进与思考\"><a href=\"#%E4%B8%80%E3%80%81imweb-%E5%9B%A2%E9%98%9F-serverless-%E7%A0%94%E5%8F%91%E6%A8%A1%E5%BC%8F%E7%9A%84%E6%BC%94%E8%BF%9B%E4%B8%8E%E6%80%9D%E8%80%83\" aria-label=\"一、imweb 团队 serverless 研发模式的演进与思考 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>一、IMWEB 团队 Serverless 研发模式的演进与思考</h2>\n<p>在过去一、两年，我们团队在多个服务项目中尝试使用 serverless，腾讯云 Serverless 提供了一站式服务，通过使用该服务，前端可独立完成接口服务开发，对前端个人而言可往全栈发展，也因此可缓解团队后台人力紧张问题</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082170041-image0.jpeg\" alt=\"img\">            </p>\n<p>在开发 Serverless 云函数的过程中，我们也遇到了对比传统服务，云函数开发的一些挑战点</p>\n<h3 id=\"（1）云函数开发特点\"><a href=\"#%EF%BC%881%EF%BC%89%E4%BA%91%E5%87%BD%E6%95%B0%E5%BC%80%E5%8F%91%E7%89%B9%E7%82%B9\" aria-label=\"（1）云函数开发特点 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>（1）云函数开发特点</h3>\n<p>前端传统项目的开发流模式相对已经比较成熟，通过 git 协同管理代码， 再通过 CI 来规范项目的部署流程，整个工作流可以查看、回滚代码，部署也做到了自动化</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082170253-image0.jpeg\" alt=\"img\">            </p>\n<p>再来看云函数的开发特点：</p>\n<ul>\n<li>云函数独立的账号和权限管理</li>\n<li>以函数为单位进行创建、更新和部署</li>\n<li>创建网关 API 与函数关联，借此可通过网关 API 访问到云函数</li>\n</ul>\n<p>以上是最基础的开发云函数三个基础</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082169342-image0.jpeg\" alt=\"img\">            </p>\n<p>而云函数的创建、更新有两种方式：</p>\n<ul>\n<li>腾讯云官网云函数控制台，可视化的操作界面，点击按钮即可创建、更新</li>\n<li>通过 CLI 创建，SERVERLESS 提供 SDK，调用 SDK 可完成自定义创建、更新操作，其优点为灵活编写，也易于做成工程化</li>\n</ul>\n<p>考虑团队的协作，第二种方式通过调用 SDK 的方式因其灵活更适合定制为团队规范</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082168683-image0.jpeg\" alt=\"img\">            </p>\n<p>总结下来可以看到云函数开发的三个特性：</p>\n<ul>\n<li>因其有独立于 git 账号的云函数账号，导致了云函数的代码缺乏像 GIT 一样可以查看历史代码版本，代码修改记录等</li>\n<li>因其有多重方式可以用来创建、更新函数，导致多人协作时，有互相覆盖云函数的风险</li>\n<li>提供的云函数网关，可帮助快速配置访问云函数，而无需运维同学帮忙做域名指向，机器申请等</li>\n</ul>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082170037-image0.jpeg\" alt=\"img\">            </p>\n<h3 id=\"（2）团队协作上手云函数开发问题\"><a href=\"#%EF%BC%882%EF%BC%89%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C%E4%B8%8A%E6%89%8B%E4%BA%91%E5%87%BD%E6%95%B0%E5%BC%80%E5%8F%91%E9%97%AE%E9%A2%98\" aria-label=\"（2）团队协作上手云函数开发问题 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>（2）团队协作上手云函数开发问题</h3>\n<p>在初期团队探索尝试云函数开发时，对比传统项目的开发流，云函数的开发步骤更多，也暴露出了一些缺点：  </p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082168445-image0.jpeg\" alt=\"img\">            </p>\n<h4 id=\"1-上手成本高\"><a href=\"#1-%E4%B8%8A%E6%89%8B%E6%88%90%E6%9C%AC%E9%AB%98\" aria-label=\"1 上手成本高 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1) 上手成本高</h4>\n<p>首先有不小的学习成本，像云函数配置文件，云函数官网界面操作学习成本，实际使用时，由于云函数网关 API 链接过长、域名限制等，需要配置 nginx，用特定域名访问云函数网关 API，因为多数前端对 nginx 部署，导致有了 nginx 学习成本</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201113/1605252781340-JLHuakQNrjSbk4ZDQgHX_Q.jpeg\" alt=\"img\">            </p>\n<h4 id=\"2-调试云函数效率低\"><a href=\"#2-%E8%B0%83%E8%AF%95%E4%BA%91%E5%87%BD%E6%95%B0%E6%95%88%E7%8E%87%E4%BD%8E\" aria-label=\"2 调试云函数效率低 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2) 调试云函数效率低</h4>\n<p>因为云函数是部署在云端的，Serverless 有其独特的环境，context、event 等，有别于 NODE 服务的请求体等，本地要完全模拟 serverless 请求比较困难，导致开发想要调试定位问题时，只能先将代码部署到 serverless 上，这里就需要等待部署了，由于 serverless 是外网的，部署时间就更长了</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082167641-image0.jpeg\" alt=\"img\">            </p>\n<h4 id=\"3-开发流困惑\"><a href=\"#3-%E5%BC%80%E5%8F%91%E6%B5%81%E5%9B%B0%E6%83%91\" aria-label=\"3 开发流困惑 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3) 开发流困惑</h4>\n<ul>\n<li>由于云函数直接就是部署在云端，没有我们传统的机器用于做环境区分，对团队协作保证部署质量来说并不友好</li>\n<li>上述也有提到的，往往因为想要自己业务域名访问服务接口，而云函数网关 API 是比较长的缺乏语义化的链接，通常使用时会想配置 nginx 去通过自定义域名访问云函数，不止是成本问题也有容易配置错误的风险问题</li>\n</ul>\n<p><img src=\"https://img.serverlesscloud.cn/20201113/1605252814797-4dgRVX4WesEZ_0izMi7UUA.jpeg\" alt=\"img\">            </p>\n<h4 id=\"4-管理困难，存在质量问题\"><a href=\"#4-%E7%AE%A1%E7%90%86%E5%9B%B0%E9%9A%BE%EF%BC%8C%E5%AD%98%E5%9C%A8%E8%B4%A8%E9%87%8F%E9%97%AE%E9%A2%98\" aria-label=\"4 管理困难，存在质量问题 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4) 管理困难，存在质量问题</h4>\n<p>因云函数独立的账号管理，没有 git 进行管理，导致无法追踪代码记录，甚至任何有权限的人创建同名函数进行部署都会导致函数莫名被覆盖，同理云函数网关 API 也可以随意更改指向其它云函数</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082168265-image0.jpeg\" alt=\"img\">            </p>\n<p>总结下来，在团队协作 SCF 开发的时候，遇到的挑战点如下：</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082166593-image0.jpeg\" alt=\"img\"></p>\n<h2 id=\"二、imflow-一站式-serverless-开发解决方案的破局与落地\"><a href=\"#%E4%BA%8C%E3%80%81imflow-%E4%B8%80%E7%AB%99%E5%BC%8F-serverless-%E5%BC%80%E5%8F%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E7%9A%84%E7%A0%B4%E5%B1%80%E4%B8%8E%E8%90%BD%E5%9C%B0\" aria-label=\"二、imflow 一站式 serverless 开发解决方案的破局与落地 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>二、IMFLOW 一站式 Serverless 开发解决方案的破局与落地</h2>\n<p>总结上面的云函数在团队协作中遇到的一些问题，对应地提出解决方案：</p>\n<ul>\n<li>制定规范保证统一的协作，统一的规范保证统一的工作流，提升开发效率进而保证质量</li>\n<li>优化云函数开发体验，通过工具去自动化完成重复冗余的操作，并通过封装过滤掉一些开发学习成本</li>\n<li>根据云函数特点制定 CI 和 CD，保证流程统一，也提升部署效率；统一网关规则，减少云函数网关 API 学习和操作            </li>\n</ul>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082168042-image0.jpeg\" alt=\"img\">            </p>\n<h3 id=\"（1）制定规范，提升协作效率\"><a href=\"#%EF%BC%881%EF%BC%89%E5%88%B6%E5%AE%9A%E8%A7%84%E8%8C%83%EF%BC%8C%E6%8F%90%E5%8D%87%E5%8D%8F%E4%BD%9C%E6%95%88%E7%8E%87\" aria-label=\"（1）制定规范，提升协作效率 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>（1）制定规范，提升协作效率</h3>\n<h4 id=\"1）-统一云账号管理\"><a href=\"#1%EF%BC%89-%E7%BB%9F%E4%B8%80%E4%BA%91%E8%B4%A6%E5%8F%B7%E7%AE%A1%E7%90%86\" aria-label=\"1） 统一云账号管理 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1） 统一云账号管理</h4>\n<p>对于独立云函数账号，每个开发在上手开发前都需要单独申请，同时还有开通各种权限，快点半天，慢点一两天，针对这个问题，考虑使用团队公共账号进行统一云函数管理，工具使用公共账号进行云函数部署、更新，免去开发的学习成本、账号上手成本</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201113/1605257479797-0yHaN3xT2HsXhPl9GUtKhQ.jpeg\" alt=\"img\">            </p>\n<h4 id=\"2）基于-git-管理云函数\"><a href=\"#2%EF%BC%89%E5%9F%BA%E4%BA%8E-git-%E7%AE%A1%E7%90%86%E4%BA%91%E5%87%BD%E6%95%B0\" aria-label=\"2）基于 git 管理云函数 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2）基于 GIT 管理云函数</h4>\n<p>对于云函数独立的管理方式，为了能唯一追踪云函数，保留了原有的 git 管理项目代码，制定一系列规范，将 git 项目与云函数唯一关联，保证云函数唯一不可覆盖</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082168186-image0.jpeg\" alt=\"img\"></p>\n<h4 id=\"3）命名空间隔离函数环境\"><a href=\"#3%EF%BC%89%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E9%9A%94%E7%A6%BB%E5%87%BD%E6%95%B0%E7%8E%AF%E5%A2%83\" aria-label=\"3）命名空间隔离函数环境 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3）命名空间隔离函数环境</h4>\n<p>为提供云函数的开发流，针对云函数的特点，使用云函数命名空间的概念来隔离云函数，同时限制测试环境的网关服务只允许内网访问，保证业务安全</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201113/1605257560655-obp-7_y4rDmqmwZidPtuqw.jpeg\" alt=\"img\">      </p>\n<h4 id=\"4）统一云函数规则配置\"><a href=\"#4%EF%BC%89%E7%BB%9F%E4%B8%80%E4%BA%91%E5%87%BD%E6%95%B0%E8%A7%84%E5%88%99%E9%85%8D%E7%BD%AE\" aria-label=\"4）统一云函数规则配置 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4）统一云函数规则配置</h4>\n<p>制定云函数名、对应网关服务 API 名、环境命名空间的命名规范，以达到命名空间、函数名、网关服务 API 能一一对应，可通过其一推导其二，如知道函数名，可知其访问 API 是什么，对应环境命名空间是什么</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082168183-image0.jpeg\" alt=\"img\">            </p>\n<h3 id=\"（2）自研-cli-工具，-imflow-提升-scf-研发效率\"><a href=\"#%EF%BC%882%EF%BC%89%E8%87%AA%E7%A0%94-cli-%E5%B7%A5%E5%85%B7%EF%BC%8C-imflow-%E6%8F%90%E5%8D%87-scf-%E7%A0%94%E5%8F%91%E6%95%88%E7%8E%87\" aria-label=\"（2）自研 cli 工具， imflow 提升 scf 研发效率 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>（2）自研 CLI 工具， IMFLOW 提升 SCF 研发效率</h3>\n<p>在第一项制定了规范之后，要让规范落地，就需要使用工具来辅助，IMWEB 团队自研了 CLI 工具 -- IMFLOW， 提供 SCF 团队开发流实践方案，通过工具的方式提升 SCF 研发效率； 诸如创建账号、申请权限、创建云函数、开发云函数调试、云函数网关 API 关联、函数隔离等等，通过 CLI 工具， 输入命令即可完成。</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082166187-image0.jpeg\" alt=\"img\">            </p>\n<h4 id=\"1）上手开发更快\"><a href=\"#1%EF%BC%89%E4%B8%8A%E6%89%8B%E5%BC%80%E5%8F%91%E6%9B%B4%E5%BF%AB\" aria-label=\"1）上手开发更快 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1）上手开发更快</h4>\n<p>使用了 CLI 工具来辅助之后，对比团队过往的开发模式，通过 CLI 可达到 2 分钟上手进入开发</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082164651-image0.jpeg\" alt=\"img\">            </p>\n<h4 id=\"2）调试体验同传统服务开发一致\"><a href=\"#2%EF%BC%89%E8%B0%83%E8%AF%95%E4%BD%93%E9%AA%8C%E5%90%8C%E4%BC%A0%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%BC%80%E5%8F%91%E4%B8%80%E8%87%B4\" aria-label=\"2）调试体验同传统服务开发一致 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2）调试体验同传统服务开发一致</h4>\n<p>通过同构 + 构建的方式，保留传统服务开发体验，工具封装屏蔽了云函数文件，开发者开发时可同以往一样</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082161521-image0.jpeg\" alt=\"img\">            </p>\n<h4 id=\"3）一键定位调试云函数\"><a href=\"#3%EF%BC%89%E4%B8%80%E9%94%AE%E5%AE%9A%E4%BD%8D%E8%B0%83%E8%AF%95%E4%BA%91%E5%87%BD%E6%95%B0\" aria-label=\"3）一键定位调试云函数 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3）一键定位调试云函数</h4>\n<p>云函数的真实运行环境相对复杂，若是遇到了涉及云函数环境调试的问题，需要真实调试云函数，此时本地即可完成调试，工具封装了一系列操作，如实时调试、监听文件变更等，实时部署，实现一键定位调试云函数</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201113/1605257728660-zKuoQMZlffubmmmBhpTH2w.jpeg\" alt=\"img\">            </p>\n<h4 id=\"4）极致优化云函数部署时间\"><a href=\"#4%EF%BC%89%E6%9E%81%E8%87%B4%E4%BC%98%E5%8C%96%E4%BA%91%E5%87%BD%E6%95%B0%E9%83%A8%E7%BD%B2%E6%97%B6%E9%97%B4\" aria-label=\"4）极致优化云函数部署时间 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4）极致优化云函数部署时间</h4>\n<p>云函数的部署是走的外网部署，而云函数的部署时间影响到了云函数的发布时间，甚至在做本地实时调试云函数时，影响了云函数的调试效率，为了极致优化云函数部署时间，利用了云函数的 layer 功能、项目的 node<em>module 变动几率较小、同时代码包大小会影响部署时间这些特点，对云函数项目部署进行了拆分，当 node</em>modules 没有变动时无需部署 node_modules，进而减少了了部署时间</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082164795-image0.jpeg\" alt=\"img\">            </p>\n<p>在做了部署优化后，查看项目的部署时间，大部分时间 35s 即可完成函数部署</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082161977-image0.jpeg\" alt=\"img\">            </p>\n<h3 id=\"（3）质量保证\"><a href=\"#%EF%BC%883%EF%BC%89%E8%B4%A8%E9%87%8F%E4%BF%9D%E8%AF%81\" aria-label=\"（3）质量保证 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>（3）质量保证</h3>\n<p>在质量保证方面，主要是通过 CI | CD 规范部署流程，制定网关服务规范来隔离云函数和降低网关配置成本。</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082160952-image0.jpeg\" alt=\"img\">            </p>\n<p>限制测试环境网关服务为内网可访问。</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201113/1605252917296-Cr0lwD5xyck3Ugjxlk1fIw.jpeg\" alt=\"img\">            </p>\n<p>另外，为了保证云函数的运行稳定，避免因为云函数的冷启动导致云函数访问失败，即对云函数的容灾处理，做了一层 STKE 的容灾，通过代码同构的方式，利用工具构建打包，完成一套代码实现既可部署 serverless ，也可以部署 STKE， 配合网关的处理，完成云函数的降级容灾</p>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082163848-image0.jpeg\" alt=\"img\">            </p>\n<h2 id=\"三、imflow-使用\"><a href=\"#%E4%B8%89%E3%80%81imflow-%E4%BD%BF%E7%94%A8\" aria-label=\"三、imflow 使用 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>三、IMFLOW 使用</h2>\n<h3 id=\"imflow-内置命令\"><a href=\"#imflow-%E5%86%85%E7%BD%AE%E5%91%BD%E4%BB%A4\" aria-label=\"imflow 内置命令 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>imflow 内置命令</h3>\n<p><img src=\"https://img.serverlesscloud.cn/20201111/1605082164582-image0.jpeg\" alt=\"img\"></p>\n<p>至此，感谢阅读。在探索云函数的开发之路中，感谢腾讯云 Serverless 团队的支持，希望 Serverless 可以越做越好！</p>\n<hr>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li>\n<p><a href=\"/best-practice/2020-11-11-imweb-serverless/#%E4%B8%80%E3%80%81imweb-%E5%9B%A2%E9%98%9F-serverless-%E7%A0%94%E5%8F%91%E6%A8%A1%E5%BC%8F%E7%9A%84%E6%BC%94%E8%BF%9B%E4%B8%8E%E6%80%9D%E8%80%83\">一、IMWEB 团队 Serverless 研发模式的演进与思考</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#%EF%BC%881%EF%BC%89%E4%BA%91%E5%87%BD%E6%95%B0%E5%BC%80%E5%8F%91%E7%89%B9%E7%82%B9\">（1）云函数开发特点</a></li>\n<li>\n<p><a href=\"/best-practice/2020-11-11-imweb-serverless/#%EF%BC%882%EF%BC%89%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C%E4%B8%8A%E6%89%8B%E4%BA%91%E5%87%BD%E6%95%B0%E5%BC%80%E5%8F%91%E9%97%AE%E9%A2%98\">（2）团队协作上手云函数开发问题</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#1-%E4%B8%8A%E6%89%8B%E6%88%90%E6%9C%AC%E9%AB%98\">1) 上手成本高</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#2-%E8%B0%83%E8%AF%95%E4%BA%91%E5%87%BD%E6%95%B0%E6%95%88%E7%8E%87%E4%BD%8E\">2) 调试云函数效率低</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#3-%E5%BC%80%E5%8F%91%E6%B5%81%E5%9B%B0%E6%83%91\">3) 开发流困惑</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#4-%E7%AE%A1%E7%90%86%E5%9B%B0%E9%9A%BE%EF%BC%8C%E5%AD%98%E5%9C%A8%E8%B4%A8%E9%87%8F%E9%97%AE%E9%A2%98\">4) 管理困难，存在质量问题</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/best-practice/2020-11-11-imweb-serverless/#%E4%BA%8C%E3%80%81imflow-%E4%B8%80%E7%AB%99%E5%BC%8F-serverless-%E5%BC%80%E5%8F%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E7%9A%84%E7%A0%B4%E5%B1%80%E4%B8%8E%E8%90%BD%E5%9C%B0\">二、IMFLOW 一站式 Serverless 开发解决方案的破局与落地</a></p>\n<ul>\n<li>\n<p><a href=\"/best-practice/2020-11-11-imweb-serverless/#%EF%BC%881%EF%BC%89%E5%88%B6%E5%AE%9A%E8%A7%84%E8%8C%83%EF%BC%8C%E6%8F%90%E5%8D%87%E5%8D%8F%E4%BD%9C%E6%95%88%E7%8E%87\">（1）制定规范，提升协作效率</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#1%EF%BC%89-%E7%BB%9F%E4%B8%80%E4%BA%91%E8%B4%A6%E5%8F%B7%E7%AE%A1%E7%90%86\">1） 统一云账号管理</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#2%EF%BC%89%E5%9F%BA%E4%BA%8E-git-%E7%AE%A1%E7%90%86%E4%BA%91%E5%87%BD%E6%95%B0\">2）基于 GIT 管理云函数</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#3%EF%BC%89%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E9%9A%94%E7%A6%BB%E5%87%BD%E6%95%B0%E7%8E%AF%E5%A2%83\">3）命名空间隔离函数环境</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#4%EF%BC%89%E7%BB%9F%E4%B8%80%E4%BA%91%E5%87%BD%E6%95%B0%E8%A7%84%E5%88%99%E9%85%8D%E7%BD%AE\">4）统一云函数规则配置</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/best-practice/2020-11-11-imweb-serverless/#%EF%BC%882%EF%BC%89%E8%87%AA%E7%A0%94-cli-%E5%B7%A5%E5%85%B7%EF%BC%8C-imflow-%E6%8F%90%E5%8D%87-scf-%E7%A0%94%E5%8F%91%E6%95%88%E7%8E%87\">（2）自研 CLI 工具， IMFLOW 提升 SCF 研发效率</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#1%EF%BC%89%E4%B8%8A%E6%89%8B%E5%BC%80%E5%8F%91%E6%9B%B4%E5%BF%AB\">1）上手开发更快</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#2%EF%BC%89%E8%B0%83%E8%AF%95%E4%BD%93%E9%AA%8C%E5%90%8C%E4%BC%A0%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%BC%80%E5%8F%91%E4%B8%80%E8%87%B4\">2）调试体验同传统服务开发一致</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#3%EF%BC%89%E4%B8%80%E9%94%AE%E5%AE%9A%E4%BD%8D%E8%B0%83%E8%AF%95%E4%BA%91%E5%87%BD%E6%95%B0\">3）一键定位调试云函数</a></li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#4%EF%BC%89%E6%9E%81%E8%87%B4%E4%BC%98%E5%8C%96%E4%BA%91%E5%87%BD%E6%95%B0%E9%83%A8%E7%BD%B2%E6%97%B6%E9%97%B4\">4）极致优化云函数部署时间</a></li>\n</ul>\n</li>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#%EF%BC%883%EF%BC%89%E8%B4%A8%E9%87%8F%E4%BF%9D%E8%AF%81\">（3）质量保证</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/best-practice/2020-11-11-imweb-serverless/#%E4%B8%89%E3%80%81imflow-%E4%BD%BF%E7%94%A8\">三、IMFLOW 使用</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-11-11-imweb-serverless/#imflow-%E5%86%85%E7%BD%AE%E5%91%BD%E4%BB%A4\">imflow 内置命令</a></li>\n</ul>\n</li>\n</ul>"},"previousBlog":{"id":"49059152-8e56-5fb4-bb75-21361dec762b","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/20201120/1605839791547-1605788634978-SSR.jpg","authors":["Tina"],"categories":["best-practice"],"date":"2020-11-20T00:00:00.000Z","title":"不改一行代码！快速部署 Next.js 博客到腾讯云 Serverless SSR","description":"手把手教你搭建自己的博客系统，快来一起实践吧！","authorslink":null,"translators":null,"translatorslink":null,"tags":["Serverless","博客"],"keywords":null,"outdated":null},"wordCount":{"words":235,"sentences":37,"paragraphs":37},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-11-20-serverless-ssr.md","fields":{"slug":"/best-practice/2020-11-20-serverless-ssr/","keywords":["next.js","nextjs","serverless","ssr","vercel","单页应用","服务端渲染","客户端渲染","页面","Next","渲染","Serverless","博客","serverlesscloud","服务端"]}},"nextBlog":{"id":"4c8dfa44-dbb1-5dce-8485-456a0bf8ff53","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/20201026/1603696069933-1603694644424-%E8%B7%A8%E5%A2%83%E7%94%B5%E5%95%86.jpg","authors":["侯颖堃"],"categories":["best-practice"],"date":"2020-10-26T00:00:00.000Z","title":"专访：跨境电商 SaaS ERP 领星完成 7000 万人民币 A 轮融资的背后","description":"ERP on Tencent Serverless","authorslink":null,"translators":null,"translatorslink":null,"tags":["Serverless","ERP"],"keywords":"Serverless Framework,Serverless,SCF,ERP,SAAS,领星","outdated":null},"wordCount":{"words":188,"sentences":28,"paragraphs":28},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-10-26-lingxing.md","fields":{"slug":"/best-practice/2020-10-26-lingxing/","keywords":["serverless","云函数","Serverless","腾讯","技术","开发人员","业务","领星","网络科技","颖堃","SaaS","开发"]}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"00fbb971-7dac-5865-b1ef-86077c2102b0","previousBlogId":"49059152-8e56-5fb4-bb75-21361dec762b","nextBlogId":"4c8dfa44-dbb1-5dce-8485-456a0bf8ff53"}}}