最近,我启动了一个看起来并不难做的项目,这个概念是一个相当简单的应用程序,它必须不时地(也许一天10次)接受输入,并尝试对其执行一些操作并收集所有结果在末尾。然后,该应用程序将获得一个前端Web门户,供客户用来查看结果,而不是精确地了解火箭科学。
为此,我最初巧妙地使用了Python的内置并发库(ThreadPoolExecutor
),并为前端使用了易于使用的库(我选择Flask是因为它对于初学者来说很容易,并且相对易于维护和测试)。
一旦我们完成了项目,项目经理表示我们必须使用第三方消息队列功能而不是线程,并且必须实现负载平衡,最终发生的事情是,我们最终开始与Celery,Redis,RabbitMQ,Nginx,uWSGI合作以及其他很多没有任何实际经验的大型第三方服务。
最终,这导致了许多意大利面条式代码,无法测试的任务(由于第三方库的复杂性,对代码进行修补甚至无法正常工作)和许多麻烦,因为没人知道这些服务的附加价值是什么。 。
在您说“是的,您应该使用那些服务”之前,请记住,除了引入竞争条件困扰的代码之外,没有人知道如何使用这些服务,甚至不知道他们的工作。
我该怎么办?在这一点上,即使现在最终产品的状况比开始时要差,恢复到原来的状态也太昂贵了,并且PM陷入了使用这些服务的僵局。与他讨论这件事还有什么用吗?我需要更多时间吗?还是苛刻的答案,我对工作太傻了吗?