您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

容器和微服务的五个关键真相

发表于:2018-12-12 作者:Samuel Greengard 来源:企业网D1Net

企业可以将容器与微服务结合使用,使其能够创建更加一致且轻量级的开发框架,该框架是云计算的最佳选择。而容器和微服务是可以在云计算中实现更高效率的两项前沿技术。虽然它们不需要组合使用,但当它们一起使用时,可以提供更多的好处。

容器和微服务的五个关键真相

容器:

使用容器,可以让开发人员通过创建虚拟“沙箱”来更快、更好地工作,从而可以编写、管理和操作软件代码。其优点是可以在不影响服务器或虚拟机(VM)上运行的其他应用程序和系统的情况下完成此操作。容器可以提高效率,降低成本,甚至提高安全性。这些易于打包和轻量级的组件可以与同一虚拟机中的其他组件一起运行。

容器引入的巨大灵活性推动了快速采用,从而日益依赖容器技术。容器已成为虚拟机的替代品。调研机构Forrester公司指出,58%的开发商计划在未来一年内使用容器或正在计划使用容器。与此同时,调研机构451 Research公司的报告表明,应用容器市场规模将从2016年的7.62亿美元增长到2020年的27亿美元。

微服务:

容器的主要吸引力在于微服务。这些软件组件(可能包括代码、运行时间、系统工具、系统库和设置作为独特且谨慎的流程)引入了更加模块化和高级的开发框架。

微服务通常通过工具栏或菜单提供,允许组织部署软件,并更快、更持续地进行更改。对于使用DevOps和其他敏捷方法的组织,此功能尤为重要。

微服务的根源在于Web服务。通过将代码组件组合到功能应用程序中,组织可以使用这些预先设计的小型应用程序来进行软件开发。这使企业能够更快地推出产品,并更加动态地进行更改。

请记住,虽然微服务不需要容器,但它们从中受益匪浅。具有微服务的容器允许组织创建更一致和轻量级的云计算开发框架。

以下是有关使用容器和微服务的五个关键真相和事实:

(1)复杂性可能成为一个问题

解决方案的积累(在这种情况下是跨多个容器的微系统)可能带来新问题,有时甚至是棘手的问题。虽然这两个工具(特别是在组合时)可以简化和加速开发,但是它们也带来了新的挑战,有时还会带来棘手的挑战。

微服务的数量及其与容器的所有交叉点转化为不断变化的环境。这可能会迫使组织处理过多的粒度,如果使用过多或映射不正确,可能会引入延迟。它还可能提高测试要求。

某些组件是开源的,而其他组件是由商业公司提供的,这可能会使问题进一步复杂化。最终,整体框架中的差距可能会影响可扩展性、可靠性和许多其他因素。

成功的关键是建立战略和强大的框架来支持微服务和容器。这需要经验丰富的开发人员对团队关键成员进行最新培训,以便他们能够领导计划,并使用工具和系统获得最大的优势。

(2)组织需要新的流程

持续交付(CD)和持续集成(CI)框架是大多数企业的关注焦点。这些方法可以释放卓越的业务创新。它们特别适合当今的敏捷和DevOps开发框架,这些框架可以促进应用程序和更新的快速、增量和连续部署。

容器和微服务在很大程度上支持这种方法。然而,有一个问题:没有正确的工作流程,组织很难从持续交付(CD)和持续集成(CI)中获取最大价值,并最终从容器和微服务中获取最大价值。

在没有建立基础和框架的情况下释放这些工具可能会增加复杂性并破坏进度。因此,对于开发和运营团队而言,重点关注两个关键问题:

  • 构建知识库:在接受微服务和容器之前,业务和开发方面的团队必须彻底了解持续交付(CD)和持续集成(CI)概念和方法。
  • 必须建立协作基础:组织必须为合作伙伴开发一个框架,以便以最有效和最高效的方式协同工作以整合容器和微服务。

(3)监测至关重要

由于依赖容器和微服务的开发环境可能变得相当复杂并且涉及大量的工具和组件,所以监控是成功计划的核心。

此外,代码监视必须在容器内部进行。关注几个关键问题非常重要:

  • 了解所需监控的范围和性质。监控不足可能会导致开发团队感到沮丧和不堪重负。一个问题是微服务在容器和组件之间可能有很大差异。这意味着必须部署跨越整个容器和微服务集合的监视。
  • 了解传统监测是有限的。传统的监测方法(即采用仪器的方法)并不一定有效。容器受益于小而孤立的进程,并且具有尽可能少的依赖性。
  • 监控工具必须解决容器和微服务的独特挑战。确定出现缺陷、错误和生产问题的位置,并采取措施纠正这些问题涉及更复杂和细微差别的方法。监视容器和微服务可能包括各种工具,包括应用程序性能监视、代码分析、直接错误跟踪、集中式日志记录,以及围绕应用程序和组件的度量标准。
  • 快速无缝地修复问题。当开发团队可以确定问题存在的位置时,可以快速回滚或修补问题。这可能涉及删除或更改,否则可能难以在容器中发现和填充更改的微服务。

(4)编排对成功至关重要

容器和微服务的集合不会自动解决组织的DevOps或敏捷性挑战。需要有效地协调这些系统和组件。

编排基本上以智能方式对容器进行聚类,是这个难题的关键部分。它使可扩展性易于管理。容器编排平台Kubernetes是开源的,可与大多数工具和平台配合使用。它解决了自动化和扩展的需求。

许多潜在的解决方案都包含Kubernetes,包括开源Docker,它对管理单个图像实例更有效。解决方案还可以包含来自AWS、谷歌云和Microsoft Azure等云计算公司的商业服务,这些服务可用于解决更复杂的分布式应用程序。

这些服务可以完成几项关键任务。最重要的是,它们可以:

  • 将大量微服务联系在一起。
  • 自动执行一系列任务和流程。
  • 管理服务的扩展。
  • 通过在更广泛的环境(包括混合云部署)中部署容器和微服务,实现更高级别的灵活性。

(5)安全不能是事后想法

容器和微服务引入了一些重要的安全优势,特别是通过沙盒隔离代码和应用程序,但它们也会产生新的漏洞。

最大的风险之一围绕着易受特定威胁影响的特定库和微服务。因此,使用容器和微服务的组织应该:

  1. 采用专门的工具来管理容器安全性,包括处理图像扫描、图像管理和维护可信赖的注册表的解决方案。组织还受益于应用程序安全软件,以解决代码的动态和静态扫描,以及处理基于策略的执行任务的软件。
  2. 使用在边界处保护容器的操作系统或软件。这种方法很重要,因为它可以防止主机内核脱离容器以及保护容器彼此之间的连接。
  3. 将容器编排作为安全的关键要素。这包括部署哪些容器到哪些主机、主机容量、容器可以被发现和连接的方式、容器运行状况的管理方式,以及整合到环境中的开发人员自助服务的程度。
  4. 了解网络如何针对容器和微服务安全性进行配置,包括是否可以对流量进行分段以隔离单个集群中的不同用户、团队、应用程序和环境。这可能需要更先进的SDN工具,以解决识别IP地址和集群的复杂性。同样,组织必须解决存储问题,包括容器在静止状态下的方式和位置。

妥善处理这些问题并采取系统方法处理容器和微服务的组织将处于优势地位,使他们的发展努力与当今数字业务框架的机遇和挑战相匹配。