技术未来处理

爪哇 无服务器–优势,局限和用例

日期: 2020年3月4日
阅读时间: 9 min

无服务器不是一个新主意,但它正变得越来越流行。将基础架构设置和维护委派给云提供商并仅专注于处理业务逻辑的代码的可能性似乎非常有吸引力。

但是,如果您希望不使用服务器而当前系统已写入,该怎么办 爪哇 并且您不想引入其他语言,例如Node.JS或Python?好消息是 您可以使用最重要的人完全支持的Java语言来构建无服务器解决方案 提供者,例如Azure或AWS。 但是请注意,使用Java甚至根本不构建无服务器解决方案并非总是最好的主意。

经验丰富的开发人员软件架构师 在Future Processing,我们始终专注于客户的需求。 建立最佳解决方案至关重要,而不是包含尽可能多的流行词的解决方案 (尽管许多流行语(例如无服务器)与某些情况下可以获得的巨大好处相关)。

为什么没有服务器变得有意义?

无服务器模型非常简单: 您上传执行某项操作的代码,并响应选定事件触发其执行 –由系统或最终用户生成(例如通过http请求)。换句话说:有一个或多个功能即服务(FaaS)与其他功能集成在一起 云服务 使用事件。例如,在AWS中,我们可以使用API​​网关(服务于http请求),Lambda(处理业务逻辑的FaaS)和DynamoDB(存储我们的数据)来创建其余端点(我们可以将此解决方案视为简单的微型或纳米服务)。

  • 简化软件交付

使用云服务构建系统并编写尽可能少的代码非常有效。您不希望开发人员在创建样板,管理,安全性和监视代码时“重新发明轮子”。 云中这些可用区域中的解决方案既可靠又具有成本效益。采用无服务器方式 您的 开发团队 能够专注于满足您的业务需求的代码。

  • 维护更轻松

无服务器解决方案的设置不仅比传统方法更容易,而且维护所需的精力也更少。您不手动管理基础结构。您可以依靠具有内置可伸缩性和监视功能的服务。

  • 降低成本

开发更快,更轻松 保养 意味着系统的总体成本较低。此外,Azure Function或AWS Lambda等服务的定价模型似乎非常具有吸引力:仅在代码运行时才向您收费(价格取决于执行时间和资源使用情况)。当您不定期使用系统或其部件时,它是完美的选择。另一方面,对于具有高而稳定的工作负载的系统,无服务器解决方案可能会更昂贵。

  • 简化原型制作

使用无服务器方法,开发人员可以顺利地准备原型并验证哪种解决方案是最佳的。

  • 上市时间

最后,通过这种轻量级的方法, 您的解决方案可以快速投入生产。 在试图击败现有市场空间中的竞争对手以及在竞争对手之前创建竞争对手的情况下,在许多情况下,这都有很大的不同。时间就是金钱,而无服务器可能非常有效。

  • 不断改进

云解决方案 他们的提供者一直在改善他们。使用托管云服务,您将获得所有这些改进,而无需花费时间和金钱。


无服务器并不总是一个完美的选择

此时,您可能会问:‘如果无服务器是如此完美,那为什么不是所有的东西都没有服务器?’ 无服务器并不完美。 这是一个很好的工具,但是有经验的专业人员应在适当的情况下使用它。

  • 不符合成本效益

我已经提到了无服务器解决方案可能并不划算。 在向我们的合作伙伴提出无服务器方法之前,我们总是根据客户的统计数据或预测进行计算。 传统解决方案和无服务器解决方案之间的成本差异可能很大。

  • 大型系统是挑战

配置和开发小型无服务器应用程序很容易。 使用这种方法提供大型系统要困难得多。您可能听说过依赖性或事件地狱。在无服务器方法中,您可以使用另一种方法:函数地狱。但是,借助基础设施即代码(IaaS)方法,可以交付经验丰富的团队大型系统中的适当版本控制和测试策略。

  • 有限的时间

在某些云中,功能执行的时间有限(例如,限制为15分钟),而在其他云中,则没有限制。但是通常,功能应该在没有太多I / O的情况下快速执行。如果您的系统中有长期运行的计算或大量的I / O操作,那么无服务器可能不适合您。传统的容器化应用程序应该更快,更便宜。

  • 供应商锁定

即使在最简单的无服务器解决方案示例中,我们也使用了3种AWS特定服务:API网关,Lambda,DynamoDB。当然,在其他云中,我们会找到类似的云(在Azure中:API管理,函数,CosmosDB)。相似,但不相同。 潜在的迁移不是免费的。 幸运的是,有无服务器框架之类的工具,可让您将无服务器解决方案部署到不同的云。

  • 冷启动

无服务器并不意味着服务器不见了。虚拟机和容器仍然存在,但是由云提供商精心隐藏和管理。 在首次执行代码之前,必须执行许多操作, 包含:

–使用免费资源分配给服务器
–功能下载
– Starting container
–启动运行时环境(例如JVM)

在执行了这些繁重的操作之后,您的代码即被执行。那是一个冷门。下次调用可以重用这个已经预热的实例(立即执行代码),直到需要准备另一个实例为止(由于工作量大或因为第一个实例在长时间闲置后变得不活动)。

有很多方法可以解决此问题:使用专用实例(MS Azure)通过适当设计应用程序,预热功能实例而不将功能暴露给用户界面来隐藏它。此外,云提供商仍在改善其服务,以最大程度地减少冷启动的影响。

为什么Java不是无服务器的理想语言?

尽管云提供商支持Java, 这不是首选的解决方案 在考虑无服务器系统时。不过,Java不可能像JS这样的解释型语言( 节点JS )或无服务器解决方案中的Python。

  • 冷启动

爪哇 函数的冷启动比用解释性语言编写的函数的冷启动需要更长的时间。 爪哇 软件包通常更大。 运行时环境较重。在后端应用程序的情况下,半秒或什至一秒的延迟都不是问题。在与用户进行交互的情况下,这可能是一个问题。

  • 整体表现

在冷启动之后,通常看不出编译语言和解释语言之间的性能差异,但是,Java肯定不是领先者。所以, 如果要从头开始创建系统,则应考虑使用性能更高的语言。

  • 开票

爪哇 应用 通常使用至少比竞争对手更多的内存。结果是, 您可能被迫为函数分配更多的内存。 如果您同时为时间和内存消耗付费,那么您的账单可能会更高。


我们何时应该考虑使用Java无服务器?

如果您已经有使用Java编写的软件,并且希望转为无服务器,请不要担心。 无需将所有内容都重写为JavaScript。 您可以使用Java创建健壮的无服务器系统。在某些情况下,这将是最佳解决方案。

  • 图书馆

爪哇 是一种广泛使用的软件语言。在某些领域,例如金融领域,大多数应用程序都是用Java创建的。您的软件可能使用仅在Java中可用的库。在这种情况下,它可能是在无服务器的情况下仍保留Java的最佳解决方案。

  • 现有代码(团队)

如果您拥有用Java编写的软件以及一支开发和支持该软件的团队,那么 引入另一种语言并不是最佳选择。 用Java拥有所有内容会更容易。您可以重用现有代码。相同的开发人员可以轻松地使用现有和新的无服务器解决方案。 团队通常不容易切换到无服务器。 其成员需要学习新的方法和工具。在像这样的大公司中这不是问题 未来处理 每个团队或团队成员都可以依靠经验丰富的技术顾问的支持。但是,这仍然是一个挑战,没有必要通过引入新的编程语言来使其更加困难。

  • 部分解决方案

迁移到无服务器方法 可以一步一步完成。 这不是“全有还是全无”的决定。容器化的应用程序可以与专门用于处理某些事件(发送电子邮件,审核更改,清除数据,执行某些后台任务等)的功能配合使用。

  • GraalVM和未来

如今,可以使用GraalVM将Java字节码转换为本地可执行文件,然后将其作为功能在云中执行。这种方法的主要好处是 a 冷启动时间和内存占用量显着减少。 尽管这个概念从理论上讲似乎很简单,但在实践中却非常麻烦。尽管如此,GraalVM是一种工具,可以使Java无服务器解决方案在未来变得更加高效。

好的决定和好的软件

在考虑无服务器解决方案时,您需要一个 有足够经验为您提供建议的合作伙伴 是否要无服务器 语言和使用的工具。 然后,您需要 具有适当技能的开发人员 很好地执行它。

喜欢博客帖子吗?

请给我们反馈。

饼干

该网站在您的计算机上存储cookie。这些Cookies用于改善我们的网站并通过本网站或通过其他媒体为您提供更多个性化服务。要了解有关我们使用的cookie的更多信息,请参阅我们的 隐私政策.