前段时间我在一家银行工作时,有一个了不起的遗留系统。
这可以概括为内部的AWS lambda等效项。该产品包括完整的CI、CD、单元测试、代码审查、自动部署等…。
您可以编写一个python脚本(python是唯一受支持的语言),并在大约5分钟内对其进行审查并将其推送到生产环境中。准备好供全世界使用。
这个东西最初是在2008年创造的,花了几个星期的时间。核心从一开始就基本保持不变,但在外围有了一些发展(代码审查、日志记录、性能、身份验证)。
从官方来看,这不是一个“战略”解决方案,它不存在,也没有宣传。
在非正式的情况下,它被多个行业使用,而且不断有新的发展。它太棒了,让人无法放弃。
我记得我们部门的暑期实习生们利用这个东西(暑期应该是2-3个月),在3-4周后几乎完成了他们的小项目。而其他实习生群体还没有想好如何将应用程序放在当期的战略框架中。
最后一次统计有500多个应用程序在那里运行。更值得注意的是,生产日志显示其中80%处于活跃使用状态。
可悲的是,在不断搅动的软件世界里,每一件好事都必须结束。这件事最终将不得不重新制作或丢弃:Python2.7即将报废。已放弃验证库。中间件已经很长时间没有重新编译或升级了。也有一些潜在的UI改进亟待完成。
长话短说,它是由我升级的,我变成了软件考古学家。升级到同时支持Python2.7和Python3.7,支持OpenID Connect和Kerberos,在这里和那里添加一些消息和错误以简化使用,更新开发人员文档等…。
在升级到第一批生产脚本时,发生了一件更值得注意的事情。
两个用户每隔一小时报告问题。已调查此问题,并仅限于Internet Explorer。有些东西在internet explorer中不能很好地工作。嗯。
事实证明,该银行在一段时间前就弃用了IE浏览器,转而使用谷歌Chrome浏览器(#Strategic)。全公司范围内的员工(250K)积极远离使用Internet Explorer。试图在IE中打开一些网站被屏蔽,显示一个完整的错误页面,告诉你改用Chrome。这对用户导航有副作用,因为所有东西都是互连的(想象一下report.example.com链接到therreport.example.com并调用内部化api.example.com,其中一些URL被阻止)。
好消息是,由于最近的升级,这不是一次倒退,这很容易解决。屏蔽了Internet Explorer,并向5000名开发人员发送了不再支持Internet Explorer的通知。问题解决了!
[参考:为了用户体验,最好硬屏蔽IE,IE用户习惯于在其他浏览器中重试。也许过去几年开发的内部应用中有三分之一在Chrome之外根本无法运行,页面仍然是空白的,或者到处都是坏掉的小工具。]。
该脚本最初是在十多年前创建的,也就是框架创建后的几个月。这是最早发布的应用程序之一,从历史上看可能是第8个(现在有500多个)。
它实际上不是代码,而是某种模板。所有人都不知道。该框架提供了自己的模板语言和例程(21世纪的开发人员注意:请使用JJJA进行模板)。除了最后一件事之外,使用模板功能已经没有留下任何东西了,它以某种方式逃避了日志记录。做了一些调整,一切都恢复正常了。
经过12年的可靠和忠诚的服务,这一传统服务并未受到抨击。恰恰相反。它正在充分发挥作用,而且肯定会再活12年,比现有的所有javascript和战略框架都要持久。
唯一的缺点是lambda请求的启动时间过长(5秒基线)。它可以提供偶尔访问的报告和API。它不适合高性能的API或缓存,其他技术会更好地体现出来,强烈建议将Tornado作为Web服务器和Web框架。