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

2019 年 8 月 16 日

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

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


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


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


个人动机


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


用例简介


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


关于 Geeksblabla 网站


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


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


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


我们想要构建什么?


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


  • 这个过程应该是快速和安全的。

  • 防止滥发的提交。

  • 每条建议只允许用户进行一次投票。


我们当前有什么条件?


  • 使用Gatsbyjs构建的静态网站。

  • 0预算。

  • 谷歌和互联网连接。

  • 我们的大脑。

  • 建议页面的版面设计。



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


第一步:搜索再搜索


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


我们列出以下问题:


  • 如何建立投票系统?

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

  • 最好的无服务器数据库?

  • 无服务器资源?


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


如何建立投票系统?


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


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


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


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


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



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


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



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


最好的无服务器资源?


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


最后的要点和搜索结果


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


  • 身份验证是保证每个用户只投一票的最佳方式。虽然还有一些其他方法,但它们并不安全。

  • 用于身份验证的Auth0产品:为7000个以内活动用户的应用程序提供免费服务,这对我们来说已经足够了。

  • 使用Netlify功能来编写我们的API:我真的很喜欢Netlify,我们已经用它来托管静态网站了。

  • 使用Faunadb作为数据库:巨大的免费存储配额,支持GraphQl,并且Netlify功能配合良好。

  • 在一条建议出现在建议列表之前,需要一个管理面板来验证该条建议。

  • 应用程序架构的草图如下



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


(待续)


查看英文原文:


The power of Serverless : Part 1


2019 年 8 月 16 日 18:139922
用户头像

发布了 63 篇内容, 共 35.7 次阅读, 收获喜欢 113 次。

关注

评论 1 条评论

发布
用户头像
应该是netlify function 而不是netlify 功能
2019 年 08 月 16 日 19:53
回复
没有更多评论了
发现更多内容

企业招聘的需求决定了C/C++程序员的学习方向

C语言技术网-码农有道

C/C++

LeetCode 153. Find Minimum in Rotated Sorted Array

隔壁小王

算法

游戏夜读 | 有哪几种游戏玩家?

game1night

MyBatis 3 XML配置

杨家昌

mybatis mybatis-config.xml XML配置 配置

三分钟快速详细安装CentOS

程序员的时光

Linux centos

1分钟理解M2M和IoT概念

老任物联网杂谈

物联网 M2M IoT

Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

快速开发那点事儿 | 选择最合适的轮子,量产跑车

HPioneer

敏捷开发 JAVA开发 RouYI 快速开发

DataGrip常用快捷键

fliter

中年危机,我们如何面对?

石云升

Flutter 中SharedPreferences 的初始化?

三爻

flutter android

源码分析shared_ptr实现

程序喵大人

c c++ C#

MyBatis 3 解析mybatis-config.xml配置

杨家昌

深度解析 mybatis 初始化 XMLConfigBuilder Configuration

IT培训机构那些不得不说的事儿

C语言技术网-码农有道

IT培训机构

新人怎么寻求解决问题的方法

波波

编程 职场 新人

职场发展的思考

子不语

生涯规划 职业规划

专题:快速开发那点事儿 | 轮子怎么选

HPioneer

Java 敏捷开发 Ruoyi 快速开发

原创 | 类应该是匀称和均匀的

编程道与术

终端Terminal:程序员是如何查询天气预报的?

lmymirror

GitHub 工具 命令行 terminal 终端工具

LeetCode 565: Array Nesting

隔壁小王

算法

言简意赅,聊聊RPC的123事

一叶而不知秋

RPC

【预告】千亿数据的潘多拉魔盒:从分库分表到分布式数据库

kimmking

分布式数据库 分库分表 分布式系统 中间件

零基础、非计算机相关专业的如何转型程序员

C语言技术网-码农有道

程序员 转型

断章取义,不一样的C/C++语言的学习策略

C语言技术网-码农有道

C/C++

从2009到2020,世界编程语言排行榜分析

C语言技术网-码农有道

编程语言

我们迫切需要块状时间

Neco.W

效率 时间分配 时间管理 工作效率 提升效率

基于大疆无人机SDK二次开发

sydMobile

android 无人机

产品周刊 | 第 13 期(20200503)

Herbert

产品 设计 产品经理 产品设计

原创 | 使用JUnit、AssertJ和Mockito编写单元测试和实践TDD (一)什么是单元测试

编程道与术

new[]和delete[]为何要配对使用?

程序喵大人

c c++ C#

IT人的职业提升只靠技术精进行的通吗?

码闻强

程序员 程序人生 职业规划 技术人

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