45

无服务器架构的魅力(一)

 4 years ago
source link: https://www.tuicool.com/articles/uYRV7f6
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如今,你一定听说过无服务器架构(Serverless),以及这种热炒的新概念如何帮助你快速构建应用程序,而且,对于一些小型应用程序来说,用这种架构几乎是免费的,而许多人在自己的兼职项目中尝试构建的应用程序项目大多数都是这样的小型程序。

在本文中,我将与你分享,从搜索信息到启动,如何一步一步使用无服务器服务,并开动你的脑筋来构建复杂的逻辑 APP。

这篇文章是一个很好的用例,适用于那些有好的项目想法,但可能没有足够的后端技术、环境配置或足够的时间和预算来开始实现这个想法的人。

个人动机

兼职项目是表达自我创造力的一个好途径,它们让你拥有自由去选择新技术以及日常工作中可能不会用到的技术。这就完全不用担心客户信心之类的事情,这是向前迈出自由的一步。通过副业项目获得的经验,肯定有助于你对最佳技术栈和新的编程模式产生一个更好的全局观。你只需要一些勇气,根据你所得的经验,在一个真实的项目中向你的同事们做出一些建议,假如他们确实采纳了你的一些意见,恭喜,你就成为专家了。也许你想知道,自己有一份全职工作的时候,怎么能抽出时间做兼职呢?好吧,这不是我们的主要话题,但你可以从这两个系列播客中 Syntax fmladybug 中找到一些好的答案。

用例简介

我们今天的用例是在 Geek Blabla 网站上构建一个新特性。

关于 Geeksblabla 网站

GeeksBlablaDevC Casablanca 开发圈 的社区产品之一。这个产品提供在线研讨会,通常是 3 到 5 个人谈论一个特定的开发话题,或采访一个成功的摩洛哥 IT 业人士。简而言之,正如它的名字一样,就是极客们的闲扯。

在我写这篇文章的时候,GeeksBlabla 这个产品已经有超过 30 个小时伟大而有价值的讨论。推荐大家一定去看一看。

在开始构建软件之前,我们需要回答一些问题,以确保我们理解了要构建的内容。

我们想要构建什么?

当前最迫切需要的功能之一是添加一个新页面,人们既可以在这个页面中建议一个新话题,也可以为现有的话题投票,当然还有一些其他需求:

  • 这个过程应该是快速和安全的。
  • 防止滥发的提交。
  • 每条建议只允许用户进行一次投票。

我们当前有什么条件?

  • 使用 Gatsbyjs 构建的静态网站。
  • 0 预算。
  • 谷歌和互联网连接。
  • 我们的大脑。
  • 建议页面的版面设计。

U7FfeaM.png!web

准备好了吗?让我们开始这段旅程吧。

第一步:搜索再搜索

这是发现正确问题的最重要步骤之一,并综合应用我们的大脑、经验和谷歌搜索技能来找到答案。

我们列出以下问题:

  • 如何建立投票系统?
  • 投票系统平台?(现成的 SASS 产品)
  • 最好的无服务器数据库?
  • 无服务器资源?

虽然我脑海里已经有了一些答案,但再找一些新的想法一定是多多益善的。将之变为习惯吧。

如何建立投票系统?

你猜怎么着?在我们的例子中,这是一个错误的问题,因为与之相关的所有谷歌搜索结果都与区块链和数学理论有关。

投票系统平台?(现成的 SAAS 产品)

最近,你可以为想要的每个特性找到一个 SAAS 项目:联系人页面、身份验证通知等等,几乎所有东西都有现成的 SAAS。这就是为什么我认为可以找到一个使用简单 API 的 SASS 投票系统。不幸的是,我只发现了一些复杂的平台和 API,不可能让它们成为我们现有技术栈的一部分。

过了一会儿,我想起了我在 expo 网站上看到的一个页面,这个页面让开发者们提供在 expo 平台上添加新功能的一些建议。猜一猜上面有什么正好完全符合我们想要做的特性。

正如你所看到的,在这个页面上可以提供对新特性的建议,并允许其他开发人员投票。

FNZ3Mb3.png!web

首先,我注意到链接“该页面由 canny 提供技术支持”。让我们看看什么是 Canny。

阅读 Canny 的特性介绍页面,我们感到高兴,看上去这是我们最好的选择。但不幸的是,定价页面并不是我们所期待的,没有免费的增值计划,起步价是 50 美元 / 月。

y2mMv26.gif

只能说是不错的尝试,至少我们可以从它的工作方式中得到启发。

最好的无服务器资源?

从一个页面跳转到另一个页面,我发现 CSS-tricks 团队中有一个很棒的网站可以添加到你的书签中。对于前端开发人员来说,无服务器架构的强大之处在于,它提供了一个完整的无服务器服务和资源列表,这些服务和资源分门别类地放在同一个地方,而这些几乎就是你在项目中需要的全部东西:数据存储、云功能、支付等等。

最后的要点和搜索结果

在花费了一些时间去搜索使用 css-trick 无服务器资源的最佳资源,并受到 Canny 特性的启发后,这是我最后的记录的一些要点:

  • 身份验证是保证每个用户只投一票的最佳方式。虽然还有一些其他方法,但它们并不安全。
  • 用于身份验证的 Auth0 产品:为 7000 个以内活动用户的应用程序提供免费服务,这对我们来说已经足够了。
  • 使用 Netlify 功能来编写我们的 API:我真的很喜欢 Netlify,我们已经用它来托管静态网站了。
  • 使用 Faunadb 作为数据库:巨大的免费存储配额,支持 GraphQl ,并且 Netlify 功能配合良好。
  • 在一条建议出现在建议列表之前,需要一个管理面板来验证该条建议。
  • 应用程序架构的草图如下

j2uIBnN.png!web

在下一部分中,我们将跳到编码的部分并对整个体系结构的理解,敬请期待。

(待续)

查看英文原文:

The power of Serverless : Part 1

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK