无服务器vs容器,企业如何正确选择?. 2019-12-25
对于开发者和企业架构师来说,在不同的技术、框架或架构之间做出选择,是日常工作中最重要的内容。尤其在今天复杂的企业应用环境下,软件开发规则也在时刻变化着,我们必须在软件开发之前就要考虑清楚系统的体系结构以及计算环境等问题。尤其是无服务器体系结构和容器体系结构,二者具体有哪些区别?已经成为许多IT专业人士的一大挑战!
亚马逊在2015年推出无服务器计算服务Lambda,同年Kubernetes发布。从技术本身来看,无服务器和容器都具有一定的吸引力,经过几年的同步发展后,越来越多的企业希望将企业的工作负载迁移到不同的云平台,并且能够打通不同平台的数据。所以,我们不仅要弄清楚无服务器架构和容器架构之间有哪些优势与劣势,还要有一个更清晰的路线图,即企业应该在什么时候,或者说在什么条件下,将合适的架构应用到整个架构设计中来。所以,接下来,我们将结合具体的用例,来说明这两种架构带来的不同价值。
无服务器计算是一种软件架构模型,能帮助开发团队将基础设施或平台管理的成本降低到几乎为0。基本上,您只要将函数代码提供给AWS、谷歌云、Microsoft Azure等云计算提供商,并规定只要我发出请求,就为我运行这个函数,就可以了。我只关心你的服务,不再维护基础设施、操作系统,或者关心应用程序的可伸缩性或可用性等问题。云提供商为所有用户设限,比如:执行时间和内存限制等。用户可能不知道函数在哪里执行,不知道函数是如何隔离的,也不知道源代码是如何编写的。用户只根据自己的安全性以及遵从性策略,选择一家可信云,接受他们提供的服务就可以了。
此外,无服务器上的工作负载不仅限于通过函数执行,还可以获得完全托管的无服务器,包括可以获得数据存储、身份验证机制等等。因此,只要您的计算能力能够符合无服务器服务在执行速度、安全性、单个操作的资源空间和成本方面的要求,那么您就可以通过这种方式来加快企业的开发速度,增强业务敏捷性。
但是,如果您需要大量的计算力,并且有很多复杂的过程需要管理,产生函数的成本也很高,这种情况下容器编排工具就发挥作用了。这种将计算逻辑封装起来的模式,最大的好处是,避免被某一个云厂商的服务捆绑。当然,容器带来的好处还有很多,比如更安全,我们可以制定更好的网络通信规则,自定义访问策略。简而言之,把工作负载保存在云中,用户可以在自己的数据中心中随意切换应用。
笔者认为,聪明的选择应该是结合这两种体系架构的不同特征,最大限度地提高开发效率和灵活性。最关键的应用,我们要自己控制,获得最大限度的资源池,包括CPU、内存、磁盘等。然后,将一些相对不重要的外围应用可以通过第三方服务的方式来做。