开发方式DevOps是什么?
在生产环境中的软件工作,伴随连续部署、遍布全球的基础设施。如果基础架构是分散式和基于云的,同时您需要在大量服务器上频繁部署大量类似的服务,DevOps方法可以自动配置和维护以上所有内容。
在敏捷开发中,DevOps 使一切成为可能:团队可以定期发布代码、自动化部署、并将持续集成 / 持续交付作为发布过程的一部分。
开发&运维需求
敏捷运维闭环:解决敏捷的弊端(开发灵敏、运维复杂)
DevOps英文
DevOps中文
部署管理工具(Deployment management tools)和配置管理工具(configuration management tools)是为此目的而设计的。它们使您能够使用“食谱”(recipes),“剧本” (playbooks),模板(templates)或任何术语来简化整个环境中的自动化和编排,以提供标准、一致的部署。
在选择工具时请记住几点注意事项。首先是了解工具的模型。有些工具采用主控模式(master-client model),它有一个集中控制点(master)与分布式部署的服务器进行通信,其他部分则可以在更本地的层面上运行。另一个考虑因素是你的环境构成。有些工具是采用不同的语言编写的,对于特定的操作系统或设置可能会有所不同。确保您选择的工具与您的环境完美配合,充分利用团队的特定技能可以为您节省很多麻烦。
如果没有可用的工具,DevOps 概念很难实现。这个领域有很多工具,每个公司都有不同的选择。尽管如此,Terraform、Ansible、Packer、Docker、Kubernetes 都是拥有大量用户社区的工具,能够在各种软件项目中实现 DevOps 的工具。如果您打算使用它们,可以做进一步的研究。
相关工具:
- Terraform(Go-配置)
- Ansible(Go-配置)
- Packer(Python、PowerShell、Shell、Ruby-配置)
- Docker(Go-容器)
- Kubernetes(Go-容器)
Facebook案例
Facebook向遍布全球的若干亿用户推出了一系列新功能 - 时间轴,推荐和音乐功能。 发布后Facebook上产生的巨大流量导致服务器崩溃。 推出的功能获得了用户的大规模超常规响应,这导致了新功能产生了不可控的结果,使他们没有预料到。
原部署方式
这导致了Facebook重新评估和战略调整,从而使Facebook推出了暗启动技术。 使用DevOps原则,Facebook为其新版本的发布创建了以下方法。
暗启动
暗启动是在新功能完全发布给所有用户之前,逐步将新功能,推广到选定的一组用户的过程。 这允许开发团队尽早获得用户反馈,测试错误,并且还可以测试基础架构性能。 这种发布方法是持续交付的直接结果,有助于实现更快,更迭代的版本,确保应用程序性能不会受到影响,并且用户可以很好地更新该版本。
暗启动工作流
在暗启动技术中,新功能通过专用的部署管道发布给小型用户群。 在上面给出的Facebook暗启动图表中,您可以看到只打开了一个部署管道,将新功能部署到一组选定用户。 此时剩余的数百条管道全部关闭。
持续监视部署功能的特定用户群,以收集反馈并识别错误。 这些错误和反馈将被纳入开发,测试和部署在同一用户群中,直到功能变得稳定。 一旦实现稳定性,通过启用其他部署管道,将逐步在其他用户群上部署这些功能。
Facebook通过将代码包装在功能标记或功能切换中来实现此目的,该切换用于控制谁可以看到新功能以及何时查看。与此同时,模拟向用户启动代码的全部效果,在向用户开放全部功能之前,可以及早的暴露应用程序基础架构的痛点和区域,功能稳定后,将通过多个版本将其部署到其余用户。
通过这种方式,Facebook拥有一个受控或稳定的机制,可以为其庞大的用户群开发新功能。相反,如果功能没有得到很好的响应,他们可以选择完全回滚部署。这也帮助他们为部署准备服务器,因为他们可以预测网站上的用户活动,并相应地扩展服务器。上面给出的图表描述了Facebook的暗启动过程。
结论:
DevOps 的概念对于使大型应用程序在不同负载或流量下保持高性能是非常有益的。它还使软件部署管道易于管理。
网友评论