使用新的网络方法促进发展
微软公司专门从事软件、消费类电子产品和计算机及相关服务的开发与制造,并提供配套支持。微软的使命是“予力全球每一人、每一组织,成就不凡”。为支持这一使命,微软设定了端到端数字化目标,该方法将简化终端用户在其所有的服务和应用中的流程和体验。
“微软的数字化转型旨在通过消除手动工作来重塑运维,并从根本上改善客户体验。”微软工程平台和数据智能分析部首席软件工程组经理 Ryan Mecca 说道。
要不断满足客户和合作伙伴的期望,就需要解决微软公司网络基础架构日益增长的复杂性,这涉及数以万计的端点、超过 400 名的工程师以及将近 150,000 名的员工,这些基础架构连接着微软公司分布在全球的所有办公室、站点和零售点。
微软软件工程经理 Bart Dworak 表示:“我们拥有成千上万个具有不同品牌、型号和软件版本的设备,因此有时很难完全把控所有的供应商以及与这些设备进行交互的方式。”
此外,由于开发和工程团队创建的代码不受版本控制或同行审查,导致出现重复和质量问题,进而使复杂性加剧。Mecca 表示:“我们必须改变现有的管理和部署全球网络的思维方式,这不仅包括将我们的平台现代化,还包括让我们的技能组合现代化。”
为了顺应市场需求而进行简化和扩展,微软着手创建了一个可扩展且兼容多种技术的自动化框架,利用高效的工具和流程减少手动工作负载,并利用经过测试的标准化代码改善性能和安全问题。这个全新的解决方案将代替传统的生产自动化解决方案,提供全面的自动化功能,并由更具协作性的迭代开发方法给予支持。
与战略合作伙伴一起创建自动化环境
作为最大的开源贡献者之一,微软寻求的是一种企业开源解决方案,能够跨不同的网络供应商提供有效的自动化,并为员工参与和协作创造机会。微软选择与其战略合作伙伴红帽合作,采用可在 Microsoft Azure 中运行的红帽 Ansible 自动化平台。
“我们微软的战略使命是支持和发展 Azure 云。我们看到 Azure 中的 Ansible 用户数量大幅增加,使我们的云不断发展,同时也为 Ansible 带来了更多贡献者,从而帮助该平台发展。”Mecca 说道,“业内也在积极推动联合使用 Ansible 和 Azure。”
微软的团队建立了 3 个自动化环境:
- 开发环境,用于小规模开发和测试代码
- 用户验收测试(UAT)环境,用于同行评审代码和大规模测试
- 生产环境
现在,工程师可通过集中式的 playbook 版本控制系统,将 Ansible Playbook 部署到网络,从而自动执行重复性的日常任务。此外,这 3 个环境支持跨公司网络和工程团队的协作式 DevOps 方法。
作为采用 Ansible 的一环,微软与红帽咨询密切合作,包括在雷德蒙德进行初步现场规划,以及超过 9 个月的持续架构设计和培训。例如,微软团队和红帽架构师选择 GitHub 作为单一源代码版本存储库。
Mecca 表示:“双方关系非常融洽。红帽的员工就坐在我们的办公室里,与我们的员工在一起工作,并且真正作为团队的一员建立起友情。对于任何大型部署,特别是像微软这么大规模的公司,我们肯定会遇到挑战。每当我们发现用例存在错误时,红帽顾问总是展现极高的参与度,会帮助我们快速开发和部署新功能来修复问题。”
打造现代开发文化
大规模标准化网络自动化
微软已使用分阶段的 Ansible 环境来自动化日常工程任务,例如交付基于逻辑的变更,从而确保为客户提供服务。网络中的事件也会触发其他工作流,例如高级遥测、开单、日志记录和分析。基于 Ansible 的 IT 自动化还有助于公司采用分阶段的迭代方法来创建代码,通过定期发布经过测试和验证的网络配置来保护代码质量。
在用户友好的自动化解决方案上实现标准化,为服务、依赖项和集成创建单一的事实来源,从而帮助微软解决复杂性问题,同时还使非工程师员工能够更轻松地使用同行评审代码,专注于服务创建。DevOps 团队现在可以更高效地工作,为终端用户创建全新的、有价值的功能和服务,同时维护生产性能。
Dworak 表示:“数字化转型确实正在改变我们解决问题时的思维方式。过去,我们不得不反复手动进行相同的部署。而借助 Ansible,我们能够创建可多次部署的蓝图,保证每次部署的结果都完全相同。我们无需重复执行,也不用创建许多不同的单一用途版本,而是可以不断微调此共享代码。”
这种方法为微软创造了持续扩展并更快支持客户需求的机会。
微软拥抱协作式开发思维
为了支持微软采用现代自动化技术,微软也经历了一次文化上的转变。整个企业都致力于学习新技能和新技术:开发人员正在学习网络,而网络工程师正在学习软件开发以及 Git 和 Ansible 等开发工具。
这种针对工作任务和专业开发的 DevOps 方法,使团队之间能够更好的相互理解和协作。其中有一位工程师创建了 Zero to Hero,这是一个关于自动化概念和 Ansible playbook 编写的系列培训。此外,现在还有自发组织的 Python 学习小组,其中有 100 多名积极参与者,会在内部自动化社区讨论和分享信息。凭借全新的技能和十足的信心,微软的团队正在寻找新颖的、创造性的方法,使用代码和 playbook 来应对业务挑战。
微软核心服务工程远程访问服务工程师 Sonika Munde 表示:“团队在一种共创共享的氛围中通力解决工程问题,我们的 One Microsoft 愿景真的在变为现实。”
反过来,微软也在回馈开源 Ansible 社区。“从一开始,我们就借鉴了很多来自社区的想法和可用代码,但现在随着我们加快步伐开发解决方案,我们终于可以将自己的想法回馈给社区。”Dworak 说道。
微软运维团队通过 ANSIBLE 工作可节省数千个工时
实施 Ansible 已帮助微软每年节省数千个工时,包括因减少生产停机时间和网络配置缺陷而省下的数周工时。在预生产环境完成代码同行评审和经过审查的检入,帮助公司减少引入其生产环境的缺陷和错误。该方法最终减少了重大事件和中断次数,提高了网络质量。
此外,加快问题解决意味着更少的时间用于重复性的支持工作。Dworak 表示:“我们查看了咨询台收到的警报和工单类型,并且我们也有能力编写自动化程序来处理绝大多数事件。实际上,我们正在实施一个流程,即通过自动化完成大约 97-98% 的工单。”
采用标准化、稳定的自动化可以节省时间和金钱,微软的团队现在可以专注于创建创新基础架构解决方案,为终端用户提供更高质量的服务。
重新思考技术和文化的可能性
通过关注人员、流程和技术,微软的自动化之旅实现了飞速跨越,从手动脚本编写和变更,发展为以基于服务的集中式架构为支撑的持续集成和持续交付(CI/CD)方法。
Munde 表示:“我们网络和运维的复杂性及规模使我们不得不像软件工程师一样思考,并且我们开发出的东西不仅要有效,还可以不断迭代、易于使用,并且具备高度的可用性,我们得到了领导团队的大力支持,还看到同行对自动化运维任务的兴趣日益浓厚。”
红帽和 Ansible 技术将继续在微软的自动化战略中发挥重要作用,例如,将其作为微软“网络即代码”战略愿景的一环,以自动化的方式运维、维护和部署其全球网络。但人仍然是微软转型和战略增长的核心。
“微软的每个流程、服务和应用都在进行数字化和优化。我们打算投资将所有关键业务流程全部自动化。”微软核心平台工程总经理 Ludovic Hauduc 谈到,“所以说,技术至关重要,而且影响重大。但是,文化才是摆在第一位的。”
关于微软
微软(纳斯达克“MSFT”@microsoft)支持智能云和智能边缘时代的数字化转型。公司的使命是予力全球每一人、每一组织,成就不凡。