在十年前的典型组织中,开发和运营团队具有独立且截然不同的职责。开发人员负责编码软件程序,然后在完成后将其移交给运营团队。IT 运营随后在整个组织中部署了这些程序。
在上述环境中,开发和运营是相互隔离的。开发处于最前沿,运营处于最后。独立的孤岛意味着两个团队之间经常会出现脱节,问题可能会在开发接近尾声时出现。这两支球队之间经常发生摩擦也就不足为奇了。当时的软件部署并不像它应该的那样容易。
十年后快进,由于 DevOps 文化在组织中的兴起,开发和 IT 运营之间的墙已经倒塌,DevOps 是开发和运营的结合体,旨在简化软件部署。促成 DevOps 流行的是它对软件即服务模型的适用性,该模型已成为近年来流行的软件开发标准。
DevOps 的兴起见证了对 DevOps 工程师或具备使 DevOps 取得成功所需技能的人员的需求增加。典型的 DevOps 工程师要么是已经过渡到获得所需操作技能的开发人员,要么是已经获得成功软件部署所需的必要开发人员技能的操作员。
在本文中,我们介绍了 DevOps 的重要性及其对将软件部署到云的影响。我们还讨论了传统超大规模提供商和裸机云的优缺点,这两种竞争技术可满足您的云需求。最后,我们解决了何时是从传统超大规模环境转移到裸机云环境的最佳时机的问题。
DevOps 的现状
DevOps 代表开发和运营,旨在简化开发生命周期并使其更能响应业务目标。因此,源源不断的更新和改进是具有高度发展的 DevOps 文化的组织的主要特征。为了在不断变化的环境中简化部署,DevOps 鼓励协作和重用,使团队能够在开发过程的早期发现潜在问题,更频繁地部署,并减少解决问题的时间。
DevOps 的其他特征包括使用以下内容:
- 源代码管理——集中的代码存储库对于确保不同团队在处理一个项目时不会出现冲突至关重要。
- 持续集成和持续交付 (CI/CD) – 通过单一源代码存储库,简化集成、开发和测试流程,加速移动中的软件创建
- 配置管理——确保每次都自动和可靠地部署基础设施
- 基础设施管理——基础设施即代码意味着面对不断增长的需求更容易编组资源
- 包管理——现代 DevOps 微服务需要允许无限扩展的容器
- 调度和编排——面对不断变化的工作负载,最大限度地利用资源需要容器化的容错应用程序
- 监控——需要持续监控,以确保应用程序和工具链不会在某个地方崩溃
现在对能够轻松执行上述功能的工具的需求不断增长。其中许多工具也是开源的。示例包括 GitLab、Jenkins、Travis、Ansible、Juju、Docker、Kubernetes 和 NetData。许多云提供商也有自己的一套专有工具来执行这些相同的功能。
DevOps 似乎值得成为近年来的流行语。一份关于 DevOps 状况的 2018 年报告表明,在接受调查的组织总数中,约有 11% 的组织拥有高度发展的 DevOps 文化,这意味着他们大部分时间都遵循最佳 DevOps 实践。几乎 80% 的人介于高和低之间,这意味着他们有时会遵循一些最佳 DevOps 实践。只有 10% 的人认为低,这意味着他们不会在日常工作中使用 DevOps 最佳实践。根据这一趋势,预计高度发展的 DevOps 组织的数量将在未来几年达到顶峰。
DevOps 和传统云
由于强调简化开发管道,DevOps 方法似乎非常适合在云中实施,因为它非常适合传统超大规模提供商提供的敏捷性和快速基础设施配置。云计算基础架构非常适合那些过渡到 DevOps 的人。通过云提供商手中的代码配置,开发团队可以专注于他们最擅长的事情——编码和测试他们需要添加到系统中的功能。当需要部署时,他们只是简单地通过其提供商提供的可用工具自动执行该过程。
但是,使用传统云进行 DevOps 有一些注意事项。当您的组织变得更大并且越来越多的人开始定期使用您的系统时,您可能会发现您的成本急剧上升,无法控制。这是因为更多的点击次数意味着更高的价格。如果您一开始发现云提供商的低进入门槛很诱人,那么一旦您开始为不断增长的用户群支付更高的费用,这可能就不再是真的了。
此外,如果您不小心,您可能会依赖于使用您的云提供商的专有工具。在某些情况下,您可能需要预先付费以更新工程师的技能并培训他们使用这些工具。当时间到了,您需要迁移到其他供应商时,这将成为一个真正的负担。您不仅需要重新构建您的云堆栈,还需要使用一套新的云工具培训您的工程师。
此外,云提供商在他们的计算基础架构中添加了一个虚拟化层,并且经常超额预订硬件资源,以便能够处理更多的客户端。分配给多个客户端使用的资源可能意味着您所占的服务器份额可能无法胜任处理用户工作负载的任务,从而危及系统的效率和有效性。如果您有付费客户,这可能会毁了您的声誉,因此您必须保留额外的计算资源缓冲区,这会增加您的总开支。
最后,安全漏洞可能会影响您的系统,尤其是当与您共享服务器资源的其他组织没有像您一样致力于使他们的系统安全时。如果您的“吵闹邻居”与安全性差的虚拟机与您自己的物理硬件驻留在同一物理硬件上,那么数据泄露和恶意软件感染等都是一个非常现实的问题。如果这些相邻的机器以某种方式受到网络攻击,您的机器将陷入交火。
什么是裸机云?
鉴于与传统云相关的问题,一旦您的新兴业务发展成熟,就必须寻找替代方案。裸机云就是这样一种选择。如果您现在只想过渡到云,您还应该记住这个选项。
裸机云服务器取消了传统云中普遍存在的虚拟化层。您自己的 DevOps 人员对服务器拥有完全的根访问控制权。通过不受限制地访问服务器,就好像您拥有一个可以完全使用的本地服务器,这与传统超大规模中的仅管理程序访问不同。也没有与其他组织共享资源。相反,您可以完全控制硬件。您可以在需要时配置、克隆、升级、降级或迁移服务器。
同时,在裸机云中仍然可以实现快速配置和按小时计费的便利性。因此,如果您发现您的服务器没有达到标准,您可以快速配置更多资源来扩展您的系统。
裸机云也不会将您束缚于专有技术。相反,您可以在您自己的裸机云服务器上使用您的员工已经熟悉的开源 DevOps 工具。无需培训任何其他内容,而且所需的技能可以在您的团队中转移。DevOps 工程师可以通过API将您选择的开源云原生堆栈与裸机云无缝集成。
裸机云何时成为可行的 DevOps 选项?
裸机云在以下情况下特别可行:
- 当您不缺乏具有所需技能的 DevOps 人才并希望有选择时。虽然传统的超大规模云提供商,如 AWS、Azure 和谷歌,抽象出一些服务管理的麻烦,但裸机云的优势在于它让您完全自由地选择和利用您选择的云原生软件堆栈。虽然这需要额外的人力来处理软件管理和维护任务,但您可以完全自由地创建与供应商无关的 IT 基础架构。
- 当您的技术堆栈已经基于开源并且您希望进行快速无缝迁移时。如果您的工程师已经在使用Ansible 、Docker 和 Kubernetes等开源 DevOps 工具方面经验丰富,那么您的组织会发现向裸机云的过渡比大多数人都容易。
- 当您从一开始就预计需要增加计算资源时。裸机云服务器通常具有很高的计算能力,您在启动时可能不一定需要。另一方面,如果您希望在项目的早期阶段有高端工作负载,裸机服务器将为您提供更高的每美元计算能力。由于超大规模供应商倾向于锁定他们的客户,因此值得考虑在业务的早期阶段投资裸机云从长远来看是否具有值得的投资回报。
- 当您需要拥有完全专用和完全自动化的基础架构时。单租户基础设施在超大规模提供商中非常有限,而且通常包含大量成本。虽然超大规模供应商在虚拟机上提供单租户基础设施,但裸机云没有虚拟化层。这允许超大规模提供商在一分钟内启动新服务器,而裸机云计算机通常在 10 分钟内部署完毕。然而,对于那些需要完全专用基础架构的人来说,没有虚拟化开销和硬件级别控制通常更为重要。
结论
DevOps 从 2009 年这个术语被创造出来时开始得到广泛使用。在随后的几年中,许多组织已经采用 DevOps 来改进他们的系统开发流程。未来几年,具有高度发展的 DevOps 文化的组织数量预计会增加更多。
在 DevOps 成为流行语的同时,传统云因其便利性和低进入门槛而吸引了越来越多的组织使用。由于强调快速周转时间,DevOps 似乎是为传统超大规模提供商所特有的快速配置量身定制的。
然而,传统的云确实有它的问题。一方面,它因缺乏隐私和安全性而受到批评,因为您与其他组织共享相同的硬件,而这些组织可能不像您那样痴迷于安全最佳实践。可靠性是另一个潜在问题,因为位于传统云之上的虚拟机及其资源在您的组织和同一计算基础设施上的其他组织之间进行了划分。如果性能不佳,您将被迫以更高的成本获得更多的资源。
此外,您可能会受限于使用传统超大规模提供商提供的专有软件。你不希望这种情况发生,因为有大量开源工具可用于处理 DevOps 任务。从长远来看,依附于专有技术可能会让您付出高昂的代价。
获得裸机云服务器可以避免与传统云相关的问题。可靠性不会成为问题,因为您的组织不会与任何其他组织共享服务器资源。同样,您的隐私和安全问题也会得到处理。由于您的员工可以自由使用裸机云服务器作为他们自己的服务器,他们还可以使用他们认为合适的任何 DevOps 工具。最重要的是,裸机云保留了传统云的主要优势:快速配置和按小时计费。
总而言之,选择使用传统云还是裸机云归结为您的 DevOps 工程师是否可以管理您自己的云计算基础设施的问题。如果您的员工具备所需的 DevOps 技能,您可能会发现 Bare Metal Cloud 是两者中更好的选择。