前端为Netlify,后端为Micro

2020-11-12 19:52:59

如今,Netlify已经成为快速构建Web应用程序的现代平台,无需担心代码以外的任何事情。我们Microsoft.com是Netlify的用户,并且已经接受了这一非凡的体验。更重要的是,Netlify向我们展示了传统Web架构堆栈的崩溃,这些架构之前将Web和API结合在一个地方。当我们在一个分层架构中前进时,前端除了关于如何从后端消费动态内容的提示之外,没有得到任何其他提示。今天,我们都称它为JamStack。

JAMSTACK通过分离静态和动态内容的关注点,并通过API和服务推动动态端消费,从而重新思考前端架构。实际上,Netlify采用了这种模式,试图为前端构建微服务,并通过后端的API实现服务消费的统一。很明显,这是未来网络的架构,大多数云服务将作为API单独构建和使用。

不过,我们经常看到的一个问题是“Netlify的后端是什么?”许多在Netlify上构建Jamstack应用程序的前端用户都在寻找可以找到并构建这些API的地方。看起来就连Netlify目前的回答也是,“去Heroku上托管一些东西吧”。我认为,在2020年,这是行不通的。如果前端正在被重新想象,那么同样的事情也必须发生在后端,以满足这一用途。

M3O是一个云服务开发平台。无需管理基础设施即可构建API的最快方式。M3O使用Micro,这是一个用于微服务开发的开源平台。我们从Micro得到的是一个强大的框架,用于构建、运行和使用API作为微服务。M3O带来的是Micro as a Service,这是一个构建微服务的完全托管平台。在后台用Go和GRPC编写服务,通过HTTP API动态公开,供前端使用。M3O希望填补前端开发者市场的空白。M3O是后台的Netlify。

正如我们所提到的,M3O是一个完全托管的微服务平台。那是什么意思?Micro为编写、运行和使用微服务提供了构建块。从源头到跑动甚至更远。M3O接受并托管它,这样您就可以继续编写API,而不必担心底层基础设施。

M3O是一个功能齐全的微服务开发平台,从在本地机器上生成服务模板到在云中编写和运行它,所有这些都使用相同的Micro CLI体验。默认情况下,M3O会为您动态公开HTTPS URL。因此,一旦部署,每个服务都会自动成为API。

在一个新的前端开发模式已经出现的地方,我们认为它决定了后端的“无头”范式转变,而M3O希望在那里将所有这些API作为微服务来托管。

我们看到API正在崛起,成为云服务的主导形态因素,从AWS一直到Twilio和Strike,不一而足。更引人注目的是,虽然这种模式是在过去几年里出现的,但我们才刚刚开始。我们相信,在十年后,一些最重要的公司将首先是API,但奇怪的是,没有平台来迎合这种形式的开发。

Twilio、Strip和其他公司都不得不为他们的API First方法构建基础设施。我们认为,随着越来越多的公司沿着这条路走下去,必须出现工具来增强它们的能力,不仅是在计算层,而且通过提供所需的更高级别的抽象来实现。这就是M3O的目标。

但不要只相信我们的话。我们将向您展示这一价值主张,让您亲身体验一下Micro和M3O的强大功能。

您将在几分钟内编写和部署API,而不是几小时或几天!不再需要处理后台的基础设施,就像Netlify在前端支持开发人员一样,我们也在为后端的新一代开发人员做同样的事情。

让我们来给你讲讲。我们将使用Netlify上的演示前端部署现有的微博服务:https://loving-goodall-44ee08.netlify.app/.。但首先让我们从注册开始。

首先,您需要注册M3O并在我们的Dev环境中注册一个免费帐户。

注册目前完全基于CLI,因此只需发出以下命令并执行以下步骤。

一旦你完成了,你应该在M3O上有一个帐户,并自动登录。

好了,现在我们来看更有趣的部分。通过为您动态生成的HTTP API调用它。

我们将部署一个无头CMS,或者更广为人知的博客API。

在开源方面,Micro维护了一些可重用的示例服务,我们都可以参与其中,并做出贡献。你可以在githorb.com/Micro/services上查看。让我们使用其中的几个来引导博客。

因为Micro都是关于微服务开发的,所以我们将博客API分解为帖子、评论和标签。现在我们将重点放在帖子和标签上。您可以在https://github.com/micro/services/tree/master/blog.中找到代码。

使用微型状态检查它们是否在运行。在启动、构建和运行过程中,您应该可以看到状态进度。如果你想查看日志或任何相关内容,只需发布微日志,其他任何服务都可以按名称查看。

同样的调用也可以通过API进行,只需知道您的命名空间:

现在,事情变得很酷了,更重要的是,你将从Netlify上运行的前端应用程序中调用什么。首先,像前面一样获取您的命名空间。

$cURL-H";微命名空间:随机示例命名空间";https://api.m3o.dev/posts/query{";帖子";:[{";id";:";1";,";Title";:";我的第一篇帖子";,";slug";:";My-First-Post&34;,";内容";:";这是非常史诗般的";}}。

通用的api.m3o.dev url要求我们传入名称空间,因此我们查询自己的服务,但每个名称空间也有自己唯一的URL,所以您不必在前端代码中担心这一点。只需将名称空间+m3o.dev组成为Random-Example-nampace.m3o.dev即可。

$curl https://random-example-namespace.m3o.dev/posts/query{";Posts";:[{";id";:";1";,";Title";:";我的第一篇帖子";slug";:";My-First-Post";,";Content";:";这简直是史诗般的";}}。

就这样!。我们现在有了在M3O上运行的前端的后端。

前端是一个简单的棱角分明的应用程序,我们把它放在一起来验证这一前提:

你可以在github.com/m3o/blog-front end上找到代码,但我们现在会带你完成安装。Loving-Goodall-44ee08.netlify.app下托管的站点的部署设置如下:

为了便于使用,您可以复制以下设置。在那里你会看到‘concert-Celtic-uncover’,用你在CLI上的微用户命名空间中的命名空间替换它。我们需要这个来知道要调用什么后端API。

存储库github.com/m3o/blog-front tendBase目录未设置Build命令sed-i';s/Micro/concert-Celtic-uncover/g';./src/Environment/Environmental ment.prod.ts&;&;ng build--prod&;&;cp./src/sets/_redirects./dist/blog-front发布目录dist/blog-front end。

如您所见,在示例中部署的是原始的m3o/blog-前端,但在您的例子中,m3o将被您的fork替换。这是因为Netlify请求回购的许可。

#将微命名空间替换为您自己的命名空间=$(微用户命名空间)sed-i";s/Micro/$NAMESPACE/g";./src/Environment/Environmental ment.prod.ts#它是一个棱角分明的应用程序,因此我们必须构建ng build--prod#单页应用程序需要重定向文件cp./src/sets/_redirects。/dist/blog-front end

#添加帖子保存--id=1--Title=";我的第一篇帖子";--Content=";这是非常史诗般的&#查询Postsmicro帖子查询。

现在点击Netlify的前台,查看一下。你应该会看到你的帖子立即出现。

我们在Netlify上运行的前端基本上是使用Micro作为后端,而M3O为您的帖子服务提供托管的API。我们使用url api.m3o.dev并传递带有Micro-Namespace头的命名空间,但是您也可以同样使用$nampace.m3o.dev的唯一API URL。

您部署的每个服务都会解析到一个路径,例如‘post’服务是api.m3o.dev/post,它们的方法就是从这个路径继承而来的,所以Posts。后台的查询是api.m3o.dev/post/query。这提供了在后端基于GO的GRPC服务到前端的HTTAPIs的自动动态映射。

导出类M3oService{Public Address:String=Environment。m3oAddress;Public Namespace:String=Environment。m3oNamesspace;构造函数(Private http:HttpClient){}Get(service:String,Endpoint:String,Params:HttpParams):Promise<;Object>;{return this.http.get(this.Address+";/";+service+";/";+service+";/";+。:[this.命名空间]},参数:参数,}).toPromise()}}。

我们非常清楚,当我们进入这个重新构建的新世界时,对于试图消费API的人们来说,这是一种巨大的痛苦。人们经常问“我在哪里编写或托管我的API”,他们问的是后台的Netlify在哪里。我们认为M3O和Micro就是解决方案。

仅仅使用生态系统中现有的API是不够的,您希望构建自己的API,但您希望这样做,而不必在AWS上建立基础架构层,也不必受制于Heroku等传统参与者或其他提供商,这些提供商不知道您希望在后端获得与Netlify一样的体验。

希望你觉得这是有意义的,如果你这样做了,请尝试M3O,并加入松弛与我们聊天。与朋友或您的团队一起免费编写、运行和使用所有内容,供个人使用。修改辅助项目,构建可扩展的API,并将其用作前端的后端,或者构建下一个Twilio或Strike,所有这些都是在M3O和Micro上实现的。