代理的力量:弥合开发环境与生产环境之间的差距

F5生态系统 | 2015年10月26日

应用开发人员与网络架构师的工作领域可谓截然不同,或许唯一的共同点,就是他们看待彼此领域的方式。

从网络视角来看,典型的应用部署通常如下所示:

clip_image002

而在“墙”的另一边,开发人员通常会从以下角度看待同一应用部署:

clip_image004

两者无疑都准确反映了各自领域的情况,却几乎没有考虑对方的实际架构。这说明了为什么应用进入生产环境时会出现许多问题,而这些问题确实屡见不鲜。研究指出,2013年,“90%的开发人员表示,他们不得不利用周末、节假日和休假时间来处理应用在生产阶段出现的紧急问题[1]”。其中许多问题固然与软件缺陷和错误有关,但另有许多问题无疑是由环境之间的诸多差异造成的。生产环境不同于开发环境,反之亦然。

如今的应用会利用生产环境中存在、但开发或测试环境中很少具备的各种服务,例如用于实现可扩展性的负载均衡器、用于提升性能的缓存,以及用于保障安全的Web应用防火墙。当每个请求和响应通过用户与应用之间的网络传输时(也可以是应用与API之间),这些服务不仅会处理它们,有时还会修改请求和响应。用户的IP地址就是一个典型示例。每个请求的HTTP标头中都包含此值,但当请求通过负载均衡代理后,该值会变成代理服务器的IP地址,而不再是客户端的IP地址。

对于未意识到这一问题的开发人员,这可能会导致应用“出故障”。除了修改应用所需的时间外,还可能要花费数小时进行故障排查。环境差异引发的这类问题,无疑正是2015年年中一项调查[2]中28%的受访开发人员表示“如果有合适的测试环境,超过50%的生产环境问题本可被发现并修复”的原因。另有超过半数(52%)的受访者表示,“25%至50%的生产环境问题本可得到修复”。

生产环境中出现的许多问题可直接归因于应用在不同环境中的差异,采用敏捷方法开发的应用尤其如此。由于代码变更频繁,敏捷方法可能会增加此类冲突在生产环境中出现的可能性。

越来越多的此类挑战可通过使用可编程代理来解决,但并非所有挑战都能如此解决。这样无需更改已投入生产的代码,也可避免进一步延迟应用上市。对于上述“IP地址”问题,常见的解决方法是指示代理插入一个新的HTTP标头,其中包含实际IP地址,以便开发人员仍可获取该信息。第7层负载均衡代理则擅长根据版本信息、API签名等多种数据来路由应用和API请求。

值得注意的是,负载均衡器是软件工程图和网络工程图中经常明确标出的一个组件。尽管传统上由网络团队部署和管理这种代理,但它对应用架构至关重要,因此几乎总会作为应用的一部分纳入其中。同样,如今开发人员也认识到负载均衡对于应用扩展的重要性,通常会在图中将其标出。

这也反映出,越来越多的开发和运维团队开始承担应用可扩展性方面的责任,进而掌控应用的负载均衡。这是一件好事,因为这意味着开发和运维团队可以(也希望他们确实会)将负载均衡及其丰富的第7层功能纳入CI/CD流水线,尤其是在测试阶段,以便快速发现潜在问题,并在投入生产环境前加以解决。将负载均衡左移至CI/CD流水线,还能以更全面的方式实现持续交付:将整个应用包(架构)作为代码进行管理,并可同步更新。这样一来,网络基础设施(因为负载均衡传统上被归入这一范畴)便可支持不可变架构。在这种架构中,应用(如果采用微服务架构,则为微服务)会使用新配置进行完整的重新部署,而不是仅做更新,从而避免软件自然熵增所带来的挑战和技术债务。

在许多方面,代理就像一座桥梁,跨越软件工程师、网络工程师和架构师之间的无形鸿沟(坦率地说,更像是一堵墙),将“网络”与“应用”连接起来。要让组织能够扩展并应对现代架构带来的挑战,DevOps还需要弥合这一鸿沟。

[1] http://solutions-review.com/mobile-application-development/5000-developer-survey-mobile-app-development-insights-revealed/

[2] https://www.ravellosystems.com/blog/software-is-not-quite-ready-to-eat-the-world-state-of-devtest-infrastructure-survey-results/

分享
标签: 2015

关于作者

Lori Mac Vittie
Lori Mac Vittie杰出工程师兼首席技术布道师 | F5

Lori MacVittie是F5首席技术官办公室的杰出工程师兼首席技术布道师,在应用交付、自动化战略和基础设施领域拥有深厚的专业知识。无论是为AI智能体定义防护机制、剖析脆弱的多云架构,还是探索可扩展系统的极限,她都善于化繁为简。她在应用开发、IT架构以及网络和系统运维领域拥有30多年的行业经验。加入F5之前,她曾担任技术编辑,并因出色表现获得奖项。 MacVittie拥有计算机科学硕士学位,著述颇丰,出版作品涵盖安全、云和企业架构领域。她还热衷于桌面游戏和电子游戏,并且对奶酪有着毫不掩饰的鲜明见解。

Lori Mac Vittie 的更多博客文章

相关博客文章

F5纪念2021年世界艾滋病日
F5生态系统 | 2021/12/01

F5纪念2021年世界艾滋病日

值此世界艾滋病日,F5郑重承诺,将与员工、客户、社区和合作伙伴共同努力,消除社会对HIV感染者仍然存在的污名与偏见。

Thingbot正转变为攻击平台
F5生态系统 | 2018/11/29

Thingbot正转变为攻击平台

Lori MacVittie重点介绍了F5 Labs对2018年1月至6月全球物联网设备攻击的研究,并指出了其中令人警醒的影响。物联网设备不仅持续遭到利用,还被转变为攻击平台,这意味着攻击者可以更充分地利用这个必然增长的市场。

借助F5全新Quick Start,在AWS上快速开展业务
F5生态系统 | 2018/11/20

借助F5全新Quick Start,在AWS上快速开展业务

在AWS re:Invent开幕前,我们很高兴与大家分享F5与AWS之间全新的Quick Start集成。F5的Tom Atkins将介绍该服务如何启动、配置和运行在AWS上部署工作负载所需的计算、网络、存储及其他AWS服务。

为什么声明式模型对NetOps自动化至关重要?
F5生态系统 | 2018/04/30

为什么声明式模型对NetOps自动化至关重要?

为什么声明式模型对NetOps自动化至关重要?阅读F5博客,了解基础设施即代码如何简化网络扩展。

开源聚焦:F5基础设施即代码与多云可管理性
F5生态系统 | 2017/11/16

开源聚焦:F5基础设施即代码与多云可管理性

开源聚焦:基础设施即代码与多云。阅读博客,了解模板和Terraform如何简化F5应用服务的部署。

破解IT“无解困局”的答案:私有云
F5生态系统 | 2016/09/12

破解IT“无解困局”的答案:私有云

破解IT“无解困局”的答案:私有云。阅读F5博客,了解本地部署的敏捷性如何化解安全与速度难以兼顾的问题。