七叶笔记 » golang编程 » 如何解决开发和运维之间的根本矛盾?

如何解决开发和运维之间的根本矛盾?

应用程序会运行在各种不同的平台和环境上,开发环境、测试环境、预发布环境、生产环境 blablabla…

所以就出现了 “ It works on my environment! ” 之类的问题,也造成了 dev 和 ops 几十年的相爱相杀。

为了让软件的开发、测试、部署流程更便捷,测试环境和生产环境更一致,我们把希望寄托到了 Docker 上。

Docker 可以让应用程序运行在环境隔离的容器当中,并且是轻量级的,性能很好。 Docker 还提供了简洁的打包机制,无论你使用的是 Node.js 还是 golang,你都可以使用统一的方式构建、分享、交付你的成果。

但,这还不够。

CaaS ( 容器即服务 )

作为一个企业的 IT 部门,要有能力保证公司内部项目和商业项目的正常运转,这不仅需要开发团队和运维团队的通力合作,还需要一个稳定灵活的基础平台。

而 Docker 本身还无法支撑这一需求。为了给开发人员快速方便的构建、发布应用,让运维人员可以轻松管理各类项目,也为了充分发挥 Docker 的优势,开发社区普遍认为,Container as a Service 将是未来的解决方案。

容器即服务(CaaS)是这样一个平台:在这个平台上,运维人员和研发人员可以随时随地一起工作,建立、改变、运行他们的应用系统。

CaaS 提供了一个安全、可控的应用程序环境。环境有 CaaS 的基础设施和应用程序构成。在这个环境当中,开发人员能够自由的构建和发布应用。

下面的图表描述了一个典型的 CaaS 工作流程。

左侧的开发人员从信任的基础镜像库中拉取或发布应用。右侧的运维团队负责监管、部署已开发的程序和基础构架。

在应用的整个生命周期当中,两支团队使用同一套工具集进行协作,同时能确保不同团队彼此不干扰。

CaaS 不应该强迫你使用同样的工作流程。恰恰相反,CaaS 要为你提供了一个框架,让你能够更好地进行交付。 这意味着 CaaS 需要足够的灵活,来应对你目前、以及将来的环境。优秀的 CaaS 要满足以下要求:

  • 为开发人员 和 运维人员同时提供工具

  • 提供贯穿整个应用程序生命周期的工具

  • 适用于任何操作系统适用于任何语言栈和工具

  • 适用于任何基础构架

  • 开放的 API 和扩展性

  • 广泛的生态支持

CaaS 已经逐渐成熟

曾经,为了研发出可控又功能强大的基础平台,开发者们尝试了各种方式。在一系列技术当中,Docker 无疑脱颖而出。

发展迅猛的 Docker 为 CaaS 模式提供了有力的技术支撑。借助 Docker 技术,你可以更轻松的构建出 CaaS 平台来支撑你们的商业需求,无论是在安全性上,还是可控性、移植性等各方面。

相关文章