人们可能都听说过“云原生”的数据库、安全性、治理、存储、人工智能,以及云计算提供商可以提供的几乎所有其他功能。而云原生应用程序的定义是:利用托管它们的公共云原生系统的应用程序。
云计算提供商通常为用户提供的建议是:“采用云原生技术更好,而非原生的提升和转换并不好。”
这是有道理的。通过使用原生服务,可以利用核心系统,其中包括使用原生目录服务的原生安全性,原生供应系统以及原生管理和监视。但在公共云上使用非原生应用程序就像在山路上驾驶跑车一样困难。
现在,云计算提供商将原生服务的概念带入新平台,其中包括容器编排(即Kubernetes)。 Kubernetes具有由“原生”专用系统组成的大型生态系统,其中包括数据库、存储、安全性、治理、devops工具等。这里有两种不同的想法:
第一个想法是云原生更好。原生工具可以提供更好的性能。Kubernetes原生存储系统每分钟可以扩展到数千个节点和数千个并行操作。这是因为企业内部人员可以使用原生界面使用原生Kubernetes应用程序。
当企业需要使用非原生系统与外界联系来满足数据库、存储或安全性等需求时,只是通信转换就会带来大量的延迟。对于这种思维方式,Kubernetes原生总是更好,并且通常是用户首选。
第二个想法是,企业需要全力以赴,但会增加过多的复杂性。尽管具有优势,但迁移到Kubernetes原生系统意味着至少拥有两种功能。迁移到Kubernetes驱动基于容器的应用程序的企业正在寻找一种通用的数据库系统,该系统跨越Kubernetes内部和外部的应用程序。与安全性、原始存储和其他云原生的系统相同,但不是Kubernetes。
那么正确的做法是什么?多年来获得的一个经验是,适合的才是好的。采用适合的技术才是正确的选择。这意味着一切都是原生的,但是企业仍然需要明智地选择可以长期运行的解决方案,无论其是否原生。
那么会不会带来更多的复杂性?是的,但是考虑到向多云和基于物联网的应用程序的迁移,这实际上是不用担心的事情。无论企业是否使用原生的Kubernetes解决方案,事情都会变得更加复杂。而一些企业也可能擅长于处理复杂性事物,并在一次实施时就会将事情做好。