存储评论网

走向云原生并避免动荡

企业版  ◇  企业存储  ◇  软件

欢迎阅读由四篇文章组成的系列文章中的第一篇,该系列文章讨论了由 Docker、谷歌以及新兴的传统和新玩家生态系统领导的容器化和云原生运动。 在本系列中,我们冒险定义和讨论这个令人兴奋的新兴领域,以帮助组织更好地驾驭它。 虽然第一篇文章将重点定义“云原生”和一些相关的移动部分,但在以后的文章中,我们将探讨网络、存储和容器编排的重要层和相关挑战,为您提供更完整的视图……但首先让我们从开始。

一开始有 Free BSD 和 Solaris,它们为现在被认为具有分别称为 FreeBSD Jails 和 Solaris Zones 功能的现代容器化技术奠定了一些精湛的基础。 谷歌通过将 cgroups 添加到 Linux 内核来帮助将容器带入 Linux。 结合命名空间和 chroot,奠定了技术基础。 Docker 通过围绕容器映像创建任何简单的工作流并专注于简单的开发人员体验,进一步使容器更易于访问。

定义空间的最佳方式可能是回答一些基本问题并请一些客座专家来回答这些问题。 (看看我是如何将工作交给更有资格的其他人的!?)

什么是容器?
客座撰稿人 Cameron Brunner,首席架构师 Navops

容器允许应用程序从一个计算环境可靠地移动到另一个计算环境。 这可能是从开发人员的笔记本电脑到 QA 环境,再到本地生产或云端。 在容器中运行的应用程序的软件堆栈依赖项,例如操作系统或其他软件组件和库,可以在很大程度上嵌入到容器中,从而使其与底层 IT 环境的细节分离运行。 容器最初设计用于在操作系统上运行的应用程序之间提供隔离。 它们提供了资源控制和边界分离的组合,有助于将容器内代码的执行与在该机器/操作系统上运行的其他活动和其他容器隔离开来。 容器通过利用操作系统功能(如 cgroup 和命名空间)来实现这种隔离。 

什么是Docker?

Docker 既是一家公司,也是容器的商业/开源实现。 容器在 Docker 出现之前已经存在了很长时间,早期实现了 FreeBSD Jails(2000 年)和 Solaris Zones(2004 年),并且 Docker 通过极大地简化创建和执行过程,使容器对大众有用,做得非常出色。 虽然 Docker 正在迅速成为事实上的标准容器格式,但该公司通过在 Linux 基金会下创建开放容器计划 (OCI),进一步朝着开放和协作的方向迈进。 OCI 涉及许多行业参与者,并致力于制定容器格式和运行时间的行业标准。 (参见 www.opencontainers.org/)

那么什么是云原生计算?
客座贡献者 Joe Beda,Google Compute Engine 和 Kubernetes 的创始人和贡献者

云原生是大规模构建和管理应用程序的众多新思考方式之一。 从根本上讲,Cloud Native 正在构建团队、文化和技术,以利用自动化和架构来管理复杂性和释放速度。

虽然容器和容器管理通常是“云原生”思想的一部分,但 Netflix 等组织已将这种思想应用于 VM 和 VM 映像。 此外,您不必在云中运行即可开始从这种思维转变中获益。 在本地部署应用程序时,应用程序和团队可以更易于管理。

什么是云原生并没有硬性规定。 但是,有些主题正在出现。

  • DevOps 和 Ops 自动化:身为应用程序开发人员的工程师在确保应用程序能够在生产环境中可靠运行方面发挥着积极作用。 同样,那些履行运营职责的人确保经验反馈到开发中。 自动化是管理大量移动部件的关键。
  • 容器:容器提供了一种便捷的方式来创建可测试和验证的可部署构建工件。 这确保了部署是可预测的。
  • 计算集群:API 驱动的计算集群和调度系统允许少数工程师管理大量工作负载。 除此之外,它还允许将这些工作负载有效地打包到节点,以提高利用率。 最后,运行良好的集群可以减轻应用程序团队的操作负担。
  • 微服务:微服务将应用程序拆分为更小的可部署单元,以便开发团队快速灵活。 这些想法不一定是新的,但正在与工具一起应用以实现可扩展的管理。 我们将在下面详细讨论这一点。
  • 深度可见性:云原生意味着对服务运行方式的更深入洞察。 分布式跟踪、收集和索引日志以及深度应用程序监控都有助于揭示应用程序内部实际发生的事情。

什么是基于微服务的架构?
客座贡献者 Joe Beda,Google Compute Engine 和 Kubernetes 的创始人和贡献者

微服务是一个已经存在很长时间的概念的新名称。 基本上,它是一种将大型应用程序分解为较小的部分以便独立开发和管理的方法。 让我们来看看这里的一些关键方面:

  • 强大而清晰的界面。 必须避免服务之间的紧耦合。 文档化和版本化的接口有助于巩固该契约并为这些服务的消费者和生产者保留一定程度的自由。
  • 独立部署和管理。 应该可以在不与所有其他服务同步的情况下更新单个微服务。 还希望能够轻松回滚微服务的版本。 这意味着部署的二进制文件必须在 API 和任何数据模式方面向前和向后兼容。 这可以测试适当的操作和开发团队之间的合作和沟通机制。
  • 内置的弹性。应该构建和测试微服务以使其具有独立的弹性。 使用服务的代码应该努力继续工作,并在使用的服务出现故障或行为不当的情况下做一些合理的事情。 同样,所提供的任何服务都应该针对意外负载和错误输入采取一些防御措施。
  • 微服务更多的是关于人而不是技术。 小团队更灵活。 杰夫·贝佐斯 (Jeff Bezos) 以建议保持会议和团队规模足够小而闻名,这样他们就可以吃 2 个比萨饼。 通过将一个大项目构建为一系列较小的团队,然后让开,这些团队可以融合并拥有项目的那一部分。

我们期待在下一篇文章中讨论云原生堆栈的一些重要层。

Rob Lalonde 是副总裁兼总经理 导航. 他是各种开源基金会的积极参与者,包括 Cloud Native Computing Foundation (CNCF)、Open Container Initiative (OCI) 和 Linux Foundation。 Rob 曾在多家成功的高科技公司和初创公司担任过管理职位。 他在约克大学舒立克商学院完成了 MBA 学习,并获得了劳伦森大学的计算机科学学位。

讨论这个故事

注册 StorageReview 时事通讯

参与 StorageReview

资讯订阅 | YouTube | 播客 iTunes/Spotify | Instagram | Twitter(现为X) | TikTok | RSS订阅

访客作者