大多数软件部署比实际部署的应用程序更复杂。通常,当我们谈论应用程序时,我们谈论的是非常简单的事情;一些基于服务器端脚本语言的应用程序和一个后端数据库实例。然而,当谈到部署这个应用程序时,事情变得有点复杂,因为需要考虑安全性、 监控 、可恢复性和其他此类考虑因素。
除此之外,每个部署还可能需要协调任意数量的元素,例如:
- 主机名配置
- 网络创建
- HTTP 代理
- 自动化脚本
- 本地存储库镜像
许多公司已经投资了整个数据中心和 IT 团队来系统地处理 部署过程 ,这两者都在老化。
在云中部署应用程序 明显更简单——它需要更少的时间和人力,最终目标是腾出时间和人力来处理更有趣的事情。
许多新产品完全基于云,并且比还不到五年的应用程序先进得多。
由于 OpenStack 的开放性,大多数组织正在向通常基于 OpenStack 环境的 云过渡,但仍然至少有一只脚踏在传统数据中心。他们可能被官僚主义拖累,但他们在工资单上有很多头脑。
这些组织正在寻找类似的东西,尽管要复杂得多:
应用程序的拓扑本质上是:
- IaaS(例如 OpenStack)中两个区域中的应用程序端点
- 数据库托管在内部数据中心
- 托管在内部数据中心的 DNS 服务器
但是某些昂贵的项目阻碍了现实和这个最终目标。例如,使 DNS 服务器能够与 IaaS 交互或将应用程序端点移动到 IaaS。每个这样的项目都至少涉及多个部门、审批流程和 QA 测试。
将便携式 云编排 工具交到世界上“人类瑞士军刀”的手中,将使组织能够快速、系统地从老化的硬件中迁移出来。通常,编排器集中应用程序部署的设计和管理,这类似于项目经理角色在软件部署中的重要性。
这样的场景,再次简化,看起来像这样:
市面上有许多编排工具,每一个都有其处理应用程序和应用程序部署的独特方法。 (如果您想了解更多相关信息,您可以从 OpenStack Vancouver 收听我们团队就此发表的演讲——“ Orchestration Tool Roundup ”——他们深入探讨了不同工具的差异和协同作用,以及如何选择工作的正确工具)。
大多数是特定于云的,这意味着一旦你投资学习如何使用一个,你几乎就会被它附带的云提供商所束缚。例如,一旦您开始使用 OpenStack ,迁移到 Cloudstack 将是一项复杂而漫长的工作。
新工具不仅可以在多种平台上工作,而且可以很好地协同工作。
Docker 是一个很棒的工具,因为它使您能够创建超级便携的应有尽有的应用程序容器,而它们的新工具 Docker Machine 和 Docker Swarm 使您能够通过简单的命令在各种环境中轻松安装 Docker 机器和容器集群。从本质上进一步简化了这一点。
使用 Docker 编排 是一种很好的工作方式,因为使用它您可以汇总应用程序打包的所有逻辑,包括它的环境,并将其与基础设施部署分开。
在下一篇文章中,我将采用上述内容并概述一个实际示例,并演示如何通过 微服务 用例使用 Docker 和 OpenStack 在传统和云基础架构的混合环境中编排工作负载。