又是未来
又是未来
原文:https://medium.com/hackernoon/its-the-future-again-cd038b72dd0b
(带着歉意向 保罗·比格 和辅助从 科里·奎因[上周在 AWS](https://lastweekinaws.com/) )**
不,一切都变了。你现在需要使用无服务器。这是未来。
那是什么?
你说的一切在 [微服](https://hackernoon.com/tagged/microservices) 之后就烟消云散了!是不是很神奇?你只需要写一点代码,然后上传到为你运行它的服务上。
哦,就像 PaaS?
不,因为不涉及服务器,所以好多了。
没有服务器?代码在什么上面运行?
嗯,嗯,很明显,有服务器,但是你不需要担心它们。大部分是。直到你明白。
好的,所以我只是写我的 Ruby 代码—
不,露比已经死了。您必须使用受支持的语言之一。试试 JavaScript——JavaScript 的正确版本。
好的,所以我只是用 JavaScript 重写所有东西,上传,然后它在网络服务器上运行——我的意思是,网络……什么的?
没有!没有网络服务器。您的代码只是作为函数运行。这样更简单。
好,我写函数,它监听请求?
绝对不是。它不听,显然你也不听。它响应事件而运行。事件驱动架构是新事物。没有人喜欢同步调用了。
那么它是如何被客户端调用的呢?
显然,您创建了同步调用您的函数的 REST HTTP 端点。它将你的代码保存在很好的独立单元中。
REST 不是被 GraphQL 取代了吗?
当然可以!为此,您可以跳过所有不同的端点,将所有内容都塞进一个函数中。
…我记得你说过不同的功能更好?总之,我上传代码,它运行,我在哪里部署我的数据库?
不,你不用部署你的数据库。您为数据库使用服务。如果你需要 SQL,上帝会帮助你——你的连接可能会在函数调用之间断开,所以只要你感冒了,它就会让你热起来。
冷暖启动?那些是什么?
你知道我说过你的函数是如何响应事件运行的吗?它在一个容器中运行——但是你不必担心这个。只是,有时同一个容器会被重复使用。但有时不会,然后需要更长的时间。如果它被重复使用,它会被冷冻在中间。
所以我的函数是一个 Docker 容器?
不!Docker 已经有三个炒作周期了!它只是一个函数。不要担心是什么在运行它。
好吧,回到我的数据库。我需要服务吗?为什么我不能用卡珊德拉?
卡珊德拉运行在服务器上!所有不属于你的功能的东西都需要来自服务。
但是我对我的数据库有非常特殊的需求。难道我不能使用队列、blob 存储、认证、监控和其他服务,而只使用服务器作为我的数据库吗?
没有!如果你只有一台服务器,一切都毁了!
好吧…所以我使用所有这些服务。当我在开发的时候,我如何在本地调试它?
哈哈哈,不能本地集成测试!反正本地调试只是勉强支持。真正的集成测试只能在部署的系统上进行。
好吧,那我该怎么部署呢?
嗯,你必须从十几个不同的固执己见的框架中选择一个。许多人选择无服务器。
我以为我们已经在讨论无服务器了。
不——听着,这真的很简单:无服务器框架,来自无服务器公司。显然这与一般概念不同,所以没有人会被弄糊涂。
好,我部署了我的每一个服务。我如何控制金丝雀和蓝绿部署?
嗯……
还有,编排是怎么处理的?我的微服务是怎么找到对方的?
嗯……我想人们正在努力。
为什么这样更好?
你没看见吗?没有维护服务器的运营开销,您可以自由地花时间解决所有这些棘手的问题!
让我看看我是否搞清楚了: 我需要用一种受支持的语言,将我的微服务(它已经是我原始应用的一小部分)变成更小的功能(除非我使用 GraphQL),这运行在我不需要关心的服务器上,除了我有时需要关心,特别是冷启动。我用服务替换了应用程序的所有其他部分,这些服务可能与我正在使用的东西相似,但是如果它们不同,我也没有选择。部署简单应用程序之外的任何东西都非常复杂,没有人知道如何正确地更新它们,本地调试几乎是不可能的。就这样吗?
是的!是不是很光荣?
我要回赫罗库。
注意:如果你看一下我的其他帖子 ,你会发现我相信,尽管有当前的缺点,无服务器架构实际上是未来!我总是很乐意指出不好的部分,但就总拥有成本和功能速度而言,无服务器完全值得麻烦。 [想了解更多请在 Twitter 上 Ping 我](https://twitter.com/ben11kehoe) 。