云服务已经改变了IT基础设施,但最新的云趋势表明了重组作业更根本性的转变。较新的云服务和应用程序设计理念(如微服务,无服务器计算和函数即服务)对IT运营人员和开发人员都有重要的影响。
然而,了解这些服务之间的差异以及它们如何影响应用程序部署可能会令人困惑,特别是因为大多数云提供商只会告诉您他们的服务是最好的。我们来看一下每个服务的特征,以及他们如何使用DevOps方法。
(图片来源于网络)
2011年,微服务架构的概念才刚刚开始。到2015年,每个开发人员都在谈论它。
大型公司都在微服务中,宣传代码可重用性的好处,降低升级风险以及团队可以部署新功能的速度。
微型服务使开发人员能够轻松地在小团队中工作,同时还可以为能够管理任何单个微服务器的中断的大型产品做出贡献。
• 它是独立可扩展和可部署的。
• 每个服务负责尽可能小任务。
• 如果都正常运行,服务质量会更好,但如果其中之一出现问题,也不会影响到全局。
例如,Netfix在其整体产品中使用了几个微服务,其中包括一个用于观看视频的建议。如果该推荐服务停止,则流式传输平台的其余部分将继续运行,好像没有发生任何事情。
(Netfix网站截图)
微服务有助于推出Docker,这使得开发商能够通过容器化进一步隔离其独立组件。 Docker可帮助开发人员更快地部署应用程序,而不必担心底层硬件甚至操作系统。
无服务器计算概念的前提是,开发人员不必再担心底层硬件。亚马逊网络服务(AWS)Lambda在Google App Engine后也提供了无服务器的计算。虽然Google App Engine是一项惊人的技术,但开发人员放弃对底层硬件的控制为时过早,部署成熟度不高。
• 没有空闲费用,这意味着没有被使用的时间不会产生费用。
• 没有必要配置。基础架构自动缩放。
• 您不需要管理任何操作系统,硬件或不相关的软件。
一些提供商可能会对您可使用的容量进行保护或限制,而无需手动请求更多的容量。重点是确保自动缩放的情况下,不会出现意外高的开销。
某种程度上,无服务器的计算环境也可以用作函数云服务(FaaS)。例如,AWS Lambda和Auth0的Webtasks都是无服务器的FaaS。
AWS CodeBuild和Google App Engine是无服务器的,但不是FaaS。
亚马逊在2015年推出了AWS Lambda。Lambda将用户推向无服务器计算,并介绍了功能即服务的概念。 AWS Lambda既是无服务器,无管理配置、闲置费用或硬件管理,同时也是FaaS。
• 它按需执行代码(无空闲执行)。
• 它会自动缩放。
• 它运行一个特定的功能,而不用担心操作系统,硬件等。
使用FaaS,用户能够运行轻量级的按需代码块,并能轻松创建和移除。
在这种环境中运行的函数需要最少的运行时间(通常小于分钟),通常最适合直接响应用户交互的应用程序。
例如,开发人员可以为供应动态网站的FaaS编写代码,或者检查用户对给定API的权限。 FaaS通常用作中间件,以应用业务逻辑规则来与数据库进行用户交互。它也常用于Webhook或其他基于事件的触发器。
FaaS并不意味着无服务器
。例如,Docker函数要求您运行承载Docker的服务器(或VM);但允许使用一点代码快速触发单个存储器。 FaaS只意味着代码仅在响应事件时被执行。不要求底层的基础设施在等待用户代码时保持空闲。
平台即服务(PaaS)是一个较旧的概念。虽然与FaaS类似,因为它不需要任何手动配置,PaaS通常涉及一些空闲的运行时,并不是真正被认为的微服务器。 PaaS提供商包括Google App Engine和Heroku。这些提供商通常提供一个框架,如Express.js,或者一个自定义的Python框架,如Google App Engine,并根据应用需求自动扩展基础架构 —— 添加服务器。
• 是一个单一的端到端平台,可以构建整个应用程序。
• 不需要配置,没有硬件,没有操作系统,没有其他软件。
许多开发人员已经从PaaS转变到FaaS,因为后者提供了更高水平的抽象,而没有太多的供应商锁定。然而,Google Firebase是个变得越来越流行的PaaS。 Google Firebase作为一个简单的数据库即服务开始,但已经变成了一个更广泛的平台,提供了许多连接的部件。 Firebase是独一无二的,因为它是一个全面的PaaS,可以将FaaS作为其产品之一。
除了任何用户管理要求,最高级别的抽象是软件即服务(SaaS)。
数据库即服务是一种提供服务的SaaS,可以帮助开发人员在不管理数据库的情况下构建更好的应用程序。