企业数字化转型:容器需纳入到发展路线图
2017-11-01 TechTarget中国 编辑:佚名
容器技术能够帮助企业尝试实现数字化转型,但是这样做也不是无懈可击的。专家Christopher Tozzi在这里与我们分享了需要询问的正确问题。
Docker、Kubernetes 以及其他与容器相关的技术都是如今IT领域中最热门的话题之一。但是,在将这些技术纳入到企业数字化转型发展路线图之前,你还是需要对这些技术进行评估以判断它们是否符合需求。
确实,容器技术能够帮助企业让应用部署变得更为高效、可靠和更具可扩展性。
但是,为了让容器正常运行,你需要以正确的方式使用它们。与安装Docker并让一切都可以自行完成相比,为容器技术的应用制定一份数字化转型发展路线图要更为困难。
本文通过全面介绍容器技术的利与弊来帮助读者深入了解容器技术。文章诠释了如何充分利用容器技术并将其作为企业数字化转型发展路线图的一部分。
容器主要做什么和不做什么
容器是用户部署应用所需基础架构的构件模块。与原来的基础设施(如虚拟机,VM)相比,它们具有如下几个关键优势:
它们的启动速度更快。容器的启动时间一般为几秒钟;而虚拟机则需要几分钟。
它们的可扩展性更好。当用户需要为它们的容器化应用程序新增容量时,他们只需简单地启动更多容器即可(或者让他们的编排工具为他们自动执行这一操作)。与使用虚拟机构建的环境相比,这种技术能够更快更简便地实现可扩展性,而基于虚拟机的环境则需要很长的时间用于复制。
它们是微服务的理想选择。单个容器不需要托管一个完整的应用程序。它只需要托管应用程序中的一部分——一个微服务。通过使用容器技术,部署多个微服务的工作将变得更为简便,在此基础之上就可以构成一个完整的应用程序。
它们提供了环境平衡。一个Docker容器环境中的可配置变量并不会很多。这就意味着,用户可以在不同Docker主机服务器或集群之间迁移容器,且无需担心环境变量的差异性会导致用户应用程序出现意外的问题。无论底层服务器硬件是处于何种状况、主机操作系统是使用何种类型或者用户的容器化应用程序是运行在测试还是生产环境中,用户都可以拥有高度的信任感,因为它能够在较好的预测状况下正常运行。
它们消耗的资源较少。在容器中运行的应用程序并不需要一个完整的客户操作系统来托管它。有鉴于此,容器的运行开销较少。所以与用户的云虚拟机相比,用户可以在单台服务器上运行更多的容器。
但是,在制定数字化转型发展路线图中容器技术并不能包打天下。以下是它们的一些主要限制:
它们是与特定操作系统绑定的。虽然Docker本身支持Windows和Linux,但是使用Docker在Linux主机服务器上创建运行的容器是无法在Windows上运行的, 反之亦然。从这个意义上来说,容器的可移植性要比虚拟机差。如果使用的是VMware,那么一个Linux客户虚拟机是可以在Windows或Linux主机服务器上运行的,当然反之也是成立的。(一些诸如基于Kernel虚拟机的其他虚拟化平台则只能在Linux主机上运行,但是它们能够托管Windows客户机。)
它们可能需要对应用进行重新构造或编写。在很多情况下,用户是无法简单地把现有的应用程序放入容器中并使其正常运行的,就如同把现有主机服务器部署在虚拟机中一样。用户的应用程序通常需要进行重新构造或重新开发才能在容器中正常运行。其中所需的重新开发工作量将随着应用程序的最初设计架构和用户希望应用程序将如何在容器中运行的不同而各有不同。
它们不适用于GUI应用。虽然从技术上来说使用容器技术来运行需要图形用户界面的应用程序是可行的,但是在大多数实际应用场景中这样做是不现实的。
将容器技术融入到数字化转型发展战略中
容器技术并不是包治用户遗留基础设施问题的灵丹妙药。它们可以在某些方面能够有助于制定数字化转型发展路线图,但是它们并不是用户想要对各种遗留应用或环境实现现代化的正确解决方案。
为了评估容器技术是否有助于改进用户企业中特定的应用程序、流程或项目,可以询问如下这些问题:
Docker是否支持你的工作负载?在某些情况下,Docker根本不适用于某些类型的应用。如前文所述,如果用户的应用需要使用图形界面,那么Docker可能就无法很好地支持此类应用了。
你的主机基础设施是否能够支持容器?Docker可以在任何现代的Linux版本以及Widnows 10和Windows Server 2016 上运行。但是,Docker不支持其他主机操作系统。如果用户的主机基础设施是由运行Solaris的服务器组成的,那么是无法迁移至Docker的。(甲骨文公司表示有计划将Docker引入Solaris,但是具体支持内容还有待实现。)
你是否需要为了使用容器技术而对应用进行重新构建或开发?如果您的应用已经准备好分为若干个微服务,那么只需简单的重构就可以很容易地将应用移植至Docker环境中。反之,如果用户的应用程序比较复杂且不易分拆,那么就可能需要对应用程序进行完全重写,以便它能够在容器中高效运行。如果属于这种情况,那么在确定使用Docker之前请先确认您拥有足够的重新开发资源。
你优化哪些类型资源的使用?容器技术可以帮助您更高效地使用您的内部部署或基于云的计算与内存资源。例如,如果用户需要检查前端应用程序,那么它会对您大有裨益。但是,对于存储资源优化,容器技术并不是非常有用。无论一个数据库是否在容器内运行,它所消耗的容量资源都是基本相同的。
你是如何设置和管理容器环境的?基本上有两种方法:第一种是用户在内部部署硬件或基于云的虚拟服务器上自行安装和管理Docker,第二种则是使用容器即服务(CaaS)平台。对于第一种方法,用户需要确保其企业拥有必要的相关专业知识。而如果采用第二种方法,用户应当对将要使用的CaaS平台的优势和局限性进行评估。公共云中的大多数CaaS平台都要求用户使用那些他们可能想要或可能不想要在技术堆栈中添加的特定工具。
当谈及用户的数字化转型发展路线图时,Docker是否能够提供比云更高的效率?对于一些类型的工作负载来说,采用迁移至基于云服务的方法要比使用Docker可以让用户获得更好的结果。例如,如果用户在其应用中有着计算密集型服务,那么就会希望利用无服务器的计算平台(例如亚马逊网络服务Lambda),以便以高性能、高性价比的方式运行它们。在工作负载优化这方面,Docker就不会如此高效了。