PRF:20170811 UP – deploy serverless apps in seconds.md

部分
This commit is contained in:
wxy 2017-10-13 00:04:40 +08:00
parent f4e4d25112
commit cb0f8ec766

View File

@ -1,19 +1,19 @@
UP - 在几秒钟内部署无服务器应用程序 Up - 在几秒钟内部署无服务器应用程序
============================================================ ============================================================
![](https://cdn-images-1.medium.com/max/2000/1*8KijrYCm1j0_XvrACQD_fQ.png) ![](https://cdn-images-1.medium.com/max/2000/1*8KijrYCm1j0_XvrACQD_fQ.png)
去年,我[为 Up 写了一份蓝图][1],其中描述了大多数构建块是如何以最小的成本在 AWS 上创建一个很棒的无服务器体验。这篇文章谈到了 [Up][2] 的初始 alpha 版本。 去年,我[为 Up 写了一份蓝图][1],其中描述了大多数构建块是如何以最小的成本在 AWS 上创建一个很棒的无服务器环境。这篇文章则是讨论了 [Up][2] 的初始 alpha 版本。
为什么专注于无服务器?对于初学者来说,它可以节省成本,因为你可以按需付费,且只为你使用的付费。无服务器选项是自我修复的,因为每个请求被隔离并被认为是“无状态的”。最后,它可以无限轻松扩展 - 没有机器或集群要管理。部署你的代码就完成了。 为什么专注于<ruby>无服务器<rt>serverless</rt></ruby>?对于初学者来说,它可以节省成本,因为你可以按需付费,且只为你使用的付费。无服务器选项是自我修复的,因为每个请求被隔离并被视作“无状态的”。最后,它可以无限轻松地扩展 —— 没有机器或集群要管理。部署你的代码就完成了。
大约一个月前,我决定使用 [apex/up][3],并为在线 SVG GitHub 用户调查写了第一个小型无服务器示例程序 [tj/gh-polls][4]。它运行良好,成本低于每月 1 美元,为数百万调查服务,因此我会继续这个项目,看看我是否可以提供开源和商业的变体 大约一个月前,我决定开始在 [apex/up][3] 上开发它,并为动态 SVG 版本的 GitHub 用户投票功能写了第一个小型无服务器示例程序 [tj/gh-polls][4]。它运行良好,成本低于每月 1 美元即可为数百万次投票服务,因此我会继续这个项目,看看我是否可以提供开源版本及商业的变体版本
长期的目标是提供“你自己即 Heroku” 的版本,支持许多平台。虽然平台即服务并不新鲜,但无服务器生态系统正在使这种方案日益微不足道。据说AWS 和其他的经常因为 UX 提供的灵活性而被人诟病。Up 将复杂性抽象出来,同时为你提供一个几乎无需操作的解决方案。 其长期的目标是提供“你自己的 Heroku” 的版本,支持许多平台。虽然平台即服务PaaS并不新鲜,但无服务器生态系统正在使这种方案日益萎缩。据说AWS 和其他的经常因为 UX 提供的灵活性而被人诟病。Up 将复杂性抽象出来,同时为你提供一个几乎无需运维的解决方案。
### 安装 ### 安装
你可以使用以下命令安装 Up查看[临时文档][5]开始使用。或者如果你使用安装脚本,请下载[二进制版本][6]。(请记住,这个项目还在早期。) 你可以使用以下命令安装 Up查看这篇[临时文档][5]开始使用。或者如果你使用安装脚本,请下载[二进制版本][6]。(请记住,这个项目还在早期。)
``` ```
curl -sfL https://raw.githubusercontent.com/apex/up/master/install.sh | sh curl -sfL https://raw.githubusercontent.com/apex/up/master/install.sh | sh
@ -33,13 +33,13 @@ npm install -g up
### 功能 ### 功能
早期 alpha 提供什么功能让我们来看看请记住Up 不是托管服务,因此你需要一个 AWS 帐户和[ AWS 凭证][8]。如果你对 AWS 不熟悉,你可能需要先停下直到熟悉流程。 这个早期 alpha 版本提供什么功能让我们来看看请记住Up 不是托管服务,因此你需要一个 AWS 帐户和 [AWS 凭证][8]。如果你对 AWS 不熟悉,你可能需要先停下来,直到熟悉流程。
我的第一个问题是up(1) 与 [apex(1)][9] 有何不同Apex 专注于部署功能,用于管道和事件处理,而 Up 则侧重于应用程序、apis 和静态站点也就是单个可部署单元。Apex 不为你提供 API 网关、SSL 证书或 DNS也不提供 URL 重写,脚本注入等。 我的第一个问题是up(1) 与 [apex(1)][9] 有何不同Apex 专注于部署功能,用于管道和事件处理,而 Up 则侧重于应用程序、apis 和静态站点也就是单个可部署单元。Apex 不为你提供 API 网关、SSL 证书或 DNS也不提供 URL 重写,脚本注入等。
#### 单命令无服务器应用程序 #### 单命令无服务器应用程序
Up 可以让你使用单条命令部署应用程序、apis 和静态站点。要创建一个应用程序,你需要的是一个文件,在 Node.js 的情况下,`./app.js` 监听由 Up 提供的 `PORT'。请注意,如果你使用的是 `package.json` ,则会检测并使用 `start``build` 脚本。 Up 可以让你使用单条命令部署应用程序、API 和静态站点。要创建一个应用程序,你需要的是一个文件,在 Node.js 的情况下,`./app.js` 监听由 Up 提供的 `PORT'。请注意,如果你使用的是 `package.json` ,则会检测并使用 `start``build` 脚本。
``` ```
const http = require('http') const http = require('http')
@ -52,7 +52,7 @@ http.createServer((req, res) => {
}).listen(PORT) }).listen(PORT)
``` ```
额外的[运行时][10]支持开箱即用,例如 Golang 的“main.go”所以你可以在几秒钟内部署 Golang、Python、Crystal 或 Node.js 应用程序。 额外的[运行时][10]支持也立即可用,例如 Golang 的“main.go”所以你可以在几秒钟内部署 Golang、Python、Crystal 或 Node.js 应用程序。
``` ```
package main package main
@ -81,7 +81,7 @@ func hello(w http.ResponseWriter, r *http.Request) {
} }
``` ```
要部署应用程序输入 `up` 来创建所需的资源,并部署应用程序本身。这里没有迷雾,一旦它说“完成”了,你就完成了,该应用程序立即可用 - 没有远程构建过程。 要部署应用程序输入 `up` 来创建所需的资源,并部署应用程序本身。这里没有模糊不清的地方,一旦它说“完成”了,你就完成了,该应用程序立即可用 —— 没有远程构建过程。
** 此处有Canvas,请手动处理 ** ** 此处有Canvas,请手动处理 **
@ -100,10 +100,9 @@ curl `up url`
Hello World Hello World
``` ```
To delete the app and its resources just type `up stack delete`:
要删除应用程序及其资源,只需输入 `up stack delete` 要删除应用程序及其资源,只需输入 `up stack delete`
** 此处有Canvas,请手动处理 ** ** 此处有Canvas,请手动处理 **
![](https://cdn-images-1.medium.com/max/2000/1*FUdhBTtDHaZ2CEPHR7PGqg.png) ![](https://cdn-images-1.medium.com/max/2000/1*FUdhBTtDHaZ2CEPHR7PGqg.png)
@ -506,7 +505,7 @@ AWS 每月免费提供 1,000,000 个请求,但你可以使用 [http://serverle
via: https://medium.freecodecamp.org/up-b3db1ca930ee via: https://medium.freecodecamp.org/up-b3db1ca930ee
作者:[TJ Holowaychuk ][a] 作者:[TJ Holowaychuk][a]
译者:[geekpi](https://github.com/geekpi) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[校对者ID](https://github.com/校对者ID)